[0001] Данная патентная заявка испрашивает приоритет по предварительной патентной заявке США №. 62/905,236, поданной 24 сентября 2019 г., автор - Ye-Kui Wang, и озаглавленной "Video Coding Improvements".
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Настоящее раскрытие в целом относится к кодированию видео и, в частности, к улучшениям в параметрах сигнализации для поддержки кодирования многоуровневых битовых потоков.
УРОВЕНЬ ТЕХНИКИ
[0003] Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими потребностями в видео более высокого качества, желательны улучшенные методики сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без таких потерь.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0004] В варианте осуществления раскрытие включает в себя способ, реализуемый декодером, содержащий: прием приемником декодера битового потока, содержащего набор параметров изображения (PPS) в единице уровня сетевой абстракции (NAL) PPS и кодированное изображение, содержащее набор единиц NAL уровня кодирования видео (VCL), при этом конкретная единица VCL NAL не относится к единице PPS NAL, если значение идентификатора уровня заголовка единицы NAL (nuh_layer_id) единицы PPS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL; и декодирование процессором декодера закодированного изображения из набора единиц VCL NAL на основе PPS в единице PPS NAL для получения декодированного изображения.
[0005] Некоторые системы кодирования видео кодируют видеопоследовательности в уровни изображений. Изображения в разных уровнях имеют разные характеристики. Таким образом, кодер может передавать декодеру разные уровни в зависимости от ограничений на стороне декодера. Для выполнения этой функции кодер может кодировать все уровни в один битовый поток. По запросу кодер может выполнить процесс извлечения битового подпотока, чтобы удалить лишнюю информацию из битового потока. Результатом является извлеченный битовый поток, который содержит только данные для декодирования запрошенных уровней. Этот процесс может быть выполнен путем включения всех данных в единицы NAL. Каждая единица NAL получает идентификатор уровня (ID), известный как nuh_layer_id. Затем процесс извлечения битового подпотока может удалить все единицы NAL с nuh_layer_id, которые находятся за пределами целевого диапазона. Проблема с этим подходом заключается в том, что некоторые единицы NAL относятся ко многим уровням. Например, PPS и набор параметров адаптации (APS) могут содержать данные, относящиеся к одному или многим уровням. Если nuh_layer_id единицы PPS NAL или единицы APS NAL находится за пределами целевого диапазона, то PPS и/или APS могут быть удалены посредством процесса извлечения битового подпотока. Когда это происходит, декодер не имеет достаточно данных для декодирования извлеченного битового потока.
[0006] Настоящий пример ограничивает PPS и APS, чтобы гарантировать, что соответствующие единицы NAL не будут ошибочно удалены из битового потока во время процесса извлечения битового подпотока. В частности, на PPS и APS упоминаются единицами VCL NAL, которые содержат слайсы кодированных изображений. Единица PPS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к PPS в единице PPS NAL. Аналогично, единица APS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к APS в единице APS NAL. Процесс извлечения битового подпотока удаляет единицы NAL с nuh_layer_id, которые выше целевого nuh_layer_id. Благодаря тому, что единица PPS NAL и единица APS NAL имеют меньший nuh_layer_id, чем все единицы VCL NAL, относящиеся к ним, PPS/APS не может быть удален процессом извлечения битового подпотока, который также сохраняет единицу VCL NAL, относящуюся к PPS/APS. Следовательно, ошибка исключена. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования повышается за счет правильного удаления ненужных единиц NAL, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.
[0007] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой битовый поток дополнительно содержит APS в единице APS NAL, и при этом конкретная единица VCL NAL не относится к единице APS NAL, если значение nuh_layer_id единицы APS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL.
[0008] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой конкретная единица VCL NAL содержит слайс кодированного изображения и заголовок, содержащий элементы данных, относящиеся к слайсу, и при этом заголовок указывает APS ID у APS.
[0009] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой конкретная единица VCL NAL содержит слайс кодированного изображения, при этом слайс связан с заголовком, который содержит синтаксические элементы, которые применяются к слайсу кодированного изображения, и в котором заголовок указывает PPS ID для PPS.
[0010] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой битовый поток является результатом процесса извлечения битового подпотока, который удаляет единицы NAL из битового потока на основе значения nuh_layer_id.
[0011] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой набор единиц VCL NAL является частью уровня, когда все единицы в наборе единиц VCL NAL имеют конкретное значение nuh_layer_id.
[0012] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой уровень включает в себя единицы не-VCL NAL (non-VCL NAL), которые связаны с набором единиц VCL NAL, все из которых имеют конкретное значение nuh_layer_id.
[0013] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, дополнительно содержащая: прием декодером второго битового потока, содержащего второй PPS во второй единице PPS NAL, и второго кодированного изображения, содержащего второй набор единиц VCL NAL, при этом вторая единица VCL NAL относится ко второй единице PPS NAL, при этом значение nuh_layer_id второй единицы PPS NAL не меньше или равно значению nuh_layer_id второй единицы VCL NAL; и в ответ на прием принятие некоторых других корректирующих мер для обеспечения того, чтобы соответствующий битовый поток, соответствующий второму битовому потоку, был принят до декодирования кодированного изображения из второго набора единиц VCL NAL.
[0014] В варианте осуществления раскрытие включает в себя способ, реализуемый кодером, содержащий: кодирование процессором кодера кодированного изображения, содержащего набор единиц VCL NAL в битовом потоке; кодирование процессором в битовый поток PPS в единице PPS NAL на основе ограничения, согласно которому конкретная единица VCL NAL не относится к единице PPS NAL, если значение nuh_layer_id единицы PPS NAL не меньше и не равно в значению nuh_layer_id конкретной единицы VCL NAL; и сохранение в памяти, связанной с процессором, битового потока для передачи в декодер.
[0015] Некоторые системы кодирования видео кодируют видеопоследовательности в уровни изображений. Изображения в разных уровнях имеют разные характеристики. Таким образом, кодер может передавать декодеру разные уровни в зависимости от ограничений на стороне декодера. Для выполнения этой функции кодер может кодировать все уровни в один битовый поток. По запросу кодер может выполнить процесс извлечения битового подпотока, чтобы удалить лишнюю информацию из битового потока. Результатом является извлеченный битовый поток, который содержит только данные для декодирования запрошенных уровней. Этот процесс может быть выполнен путем включения всех данных в единицы NAL. Каждая единица NAL получает ID уровня, известный как nuh_layer_id. Затем процесс извлечения битового подпотока может удалить все единицы NAL с nuh_layer_id, которые находятся за пределами целевого диапазона. Проблема с этим подходом заключается в том, что некоторые единицы NAL относятся ко многим уровням. Например, PPS и APS могут содержать данные, относящиеся к одному или многим уровням. Если nuh_layer_id единицы PPS NAL или единицы APS NAL находится за пределами целевого диапазона, то PPS и/или APS могут быть удалены посредством процесса извлечения битового подпотока. Когда это происходит, декодер не имеет достаточно данных для декодирования извлеченного битового потока.
[0016] Настоящий пример ограничивает PPS и APS, чтобы гарантировать, что соответствующие единицы NAL не будут ошибочно удалены из битового потока во время процесса извлечения битового подпотока. В частности, PPS и APS упоминаются единицами VCL NAL, которые содержат слайсы кодированных изображений. Единица PPS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к PPS в единице PPS NAL. Аналогично, единица APS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к APS в единице APS NAL. Процесс извлечения битового подпотока удаляет единицы NAL с nuh_layer_id, которые выше целевого nuh_layer_id. Благодаря тому, что единица PPS NAL и единица APS NAL имеют меньший nuh_layer_id, чем все единицы VCL NAL, относящиеся к ним, PPS/APS не может быть удален процессом извлечения битового подпотока, который также сохраняет единицу VCL NAL, относящуюся к PPS/APS. Следовательно, ошибка исключена. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования повышается за счет правильного удаления ненужных единиц NAL, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.
[0017] Необязательно, в любом из предыдущих аспектов другая реализация аспекта обеспечивает, дополнительно содержащую кодирование в битовый поток процессором, набора параметров адаптации (APS) в единице APS NAL на основе ограничения, которое выполняет конкретная единица VCL NAL не относится к единице APS NAL, если значение nuh_layer_id единицы PPS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL.
[0018] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой конкретная единица VCL NAL содержит слайс кодированного изображения и заголовок, содержащий элементы данных, относящиеся к слайсу, и при этом заголовок указывает APS ID у APS.
[0019] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой конкретная единица VCL NAL содержит слайс кодированного изображения, при этом слайс связан с заголовком, который содержит синтаксические элементы, которые применяются к слайсу кодированного изображения, и в котором заголовок указывает PPS ID для PPS.
[0020] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, дополнительно содержащая выполнение процессором процесса извлечения битового подпотока для удаления единиц NAL из битового потока на основе значения nuh_layer_id.
[0021] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой набор единиц VCL NAL является частью уровня, когда все единицы в наборе единиц VCL NAL имеют конкретное значение nuh_layer_id.
[0022] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой уровень включает в себя единицы не-VCL NAL, которые связаны с набором единиц VCL NAL, все из которых имеют конкретное значение nuh_layer_id.
[0023] В одном варианте осуществления раскрытие включает в себя устройство кодирования видео, содержащее: процессор, приемник, соединенный с процессором, память, соединенную с процессором, и передатчик, соединенный с процессором, при этом процессор, приемник, память и передатчик выполнены с возможностью осуществлять способ любого из предыдущих аспектов.
[0024] В варианте осуществления изобретение включает в себя некратковременный считываемый компьютером носитель, содержащий компьютерный программный продукт для использования устройством кодирования видео, при этом компьютерный программный продукт содержит выполняемые компьютером инструкции, хранящиеся на некратковременном считываемом компьютером носителе, так что при выполнении процессор предписывает устройству кодирования видео выполнять способ по любому из предшествующих аспектов.
[0025] В варианте осуществления раскрытие включает в себя декодер, содержащий: средство приема для приема битового потока, содержащего PPS в единице PPS NAL, и кодированное изображение, содержащее набор единиц VCL NAL, при этом конкретная единица VCL NAL не относится к единице PPS NAL, если значение nuh_layer_id единицы PPS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL; средство декодирования для декодирования кодированного изображения из набора единиц VCL NAL на основе PPS в единице PPS NAL для получения декодированного изображения; и средство пересылки для пересылки декодированного изображения для отображения как части декодированной видеопоследовательности.
[0026] Некоторые системы кодирования видео кодируют видеопоследовательности в уровни изображений. Изображения в разных уровнях имеют разные характеристики. Таким образом, кодер может передавать декодеру разные уровни в зависимости от ограничений на стороне декодера. Для выполнения этой функции кодер может кодировать все уровни в один битовый поток. По запросу кодер может выполнить процесс извлечения битового подпотока, чтобы удалить лишнюю информацию из битового потока. Результатом является извлеченный битовый поток, который содержит только данные для декодирования запрошенных уровней. Этот процесс может быть выполнен путем включения всех данных в единицы NAL. Каждая единица NAL получает ID уровня, известный как nuh_layer_id. Затем процесс извлечения битового подпотока может удалить все единицы NAL с nuh_layer_id, которые находятся за пределами целевого диапазона. Проблема с этим подходом заключается в том, что некоторые единицы NAL относятся ко многим уровням. Например, PPS и APS могут содержать данные, относящиеся к одному или многим уровням. Если nuh_layer_id единицы PPS NAL или единицы APS NAL находится за пределами целевого диапазона, то PPS и/или APS могут быть удалены посредством процесса извлечения битового подпотока. Когда это происходит, декодер не имеет достаточно данных для декодирования извлеченного битового потока.
[0027] Настоящий пример ограничивает PPS и APS, чтобы гарантировать, что соответствующие единицы NAL не будут ошибочно удалены из битового потока во время процесса извлечения битового подпотока. В частности, PPS и APS упоминаются единицами VCL NAL, которые содержат слайсы кодированных изображений. Единица PPS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к PPS в единице PPS NAL. Аналогично, единица APS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к APS в единице APS NAL. Процесс извлечения битового подпотока удаляет единицы NAL с nuh_layer_id, которые выше целевого nuh_layer_id. Благодаря тому, что единица PPS NAL и единица APS NAL имеют меньший nuh_layer_id, чем все единицы VCL NAL, относящиеся к ним, PPS/APS не может быть удален процессом извлечения битового подпотока, который также сохраняет единицу VCL NAL, относящуюся к PPS/APS. Следовательно, ошибка исключена. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования повышается за счет правильного удаления ненужных единиц NAL, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.
[0028] Необязательно, в любом из предшествующих аспектов, согласно другой реализации аспекта декодер дополнительно выполнен с возможностью выполнения способа по любому из предыдущих аспектов.
[0029] В варианте осуществления раскрытие включает в себя кодер, содержащий: средство кодирования для: кодирования кодированного изображения, содержащего набор единиц VCL NAL в битовом потоке; и кодирование в битовый поток PPS в единице PPS NAL на основе ограничения, состоящего в том, что конкретная единица VCL NAL не относится к единице PPS NAL, если значение nuh_layer_id единицы PPS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL; и средство хранения для сохранения битового потока для связи с декодером.
[0030] Некоторые системы кодирования видео кодируют видеопоследовательности в уровни изображений. Изображения в разных уровнях имеют разные характеристики. Таким образом, кодер может передавать декодеру разные уровни в зависимости от ограничений на стороне декодера. Для выполнения этой функции кодер может кодировать все уровни в один битовый поток. По запросу кодер может выполнить процесс извлечения битового подпотока, чтобы удалить лишнюю информацию из битового потока. Результатом является извлеченный битовый поток, который содержит только данные для декодирования запрошенных уровней. Этот процесс может быть выполнен путем включения всех данных в единицы NAL. Каждая единица NAL получает ID уровня, известный как nuh_layer_id. Затем процесс извлечения битового подпотока может удалить все единицы NAL с nuh_layer_id, которые находятся за пределами целевого диапазона. Проблема с этим подходом заключается в том, что некоторые единицы NAL относятся ко многим уровням. Например, PPS и APS могут содержать данные, относящиеся к одному или многим уровням. Если nuh_layer_id единицы PPS NAL или единицы APS NAL находится за пределами целевого диапазона, то PPS и/или APS могут быть удалены посредством процесса извлечения битового подпотока. Когда это происходит, декодер не имеет достаточно данных для декодирования извлеченного битового потока.
[0031] Настоящий пример ограничивает PPS и APS, чтобы гарантировать, что соответствующие единицы NAL не будут ошибочно удалены из битового потока во время процесса извлечения битового подпотока. В частности, PPS и APS упоминаются единицами VCL NAL, которые содержат слайсы кодированных изображений. Единица PPS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к PPS в единице PPS NAL. Аналогично, единица APS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к APS в единице APS NAL. Процесс извлечения битового подпотока удаляет единицы NAL с nuh_layer_id, которые выше целевого nuh_layer_id. Благодаря тому, что единица PPS NAL и единица APS NAL имеют меньший nuh_layer_id, чем все единицы VCL NAL, относящиеся к ним, PPS/APS не может быть удален процессом извлечения битового подпотока, который также сохраняет единицу VCL NAL, относящуюся к PPS/APS. Следовательно, ошибка исключена. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования повышается за счет правильного удаления ненужных единиц NAL, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.
[0032] Необязательно, в любом из предыдущих аспектов, согласно другой реализации аспекта кодер дополнительно выполнен с возможностью выполнения способа по любому из предыдущих аспектов.
[0033] В варианте осуществления раскрытие включает в себя способ, реализуемый декодером, содержащий: прием приемником декодера битового потока, содержащего PPS в единице PPS NAL, и кодированного изображения, содержащего набор единиц VCL NAL, при этом Единицы VCL NAL, которые относятся к PPS, ограничены включением в себя значения nuh_layer_id, которое меньше или равно значению nuh_layer_id единицы PPS NAL; и декодирование процессором декодера закодированного изображения из набора единиц VCL NAL на основе PPS в единице PPS NAL для получения декодированного изображения.
[0034] Некоторые системы кодирования видео кодируют видеопоследовательности в уровни изображений. Изображения в разных уровнях имеют разные характеристики. Таким образом, кодер может передавать декодеру разные уровни в зависимости от ограничений на стороне декодера. Для выполнения этой функции кодер может кодировать все уровни в один битовый поток. По запросу кодер может выполнить процесс извлечения битового подпотока, чтобы удалить лишнюю информацию из битового потока. Результатом является извлеченный битовый поток, который содержит только данные для декодирования запрошенных уровней. Этот процесс может быть выполнен путем включения всех данных в единицы NAL. Каждая единица NAL получает ID уровня, известный как nuh_layer_id. Затем процесс извлечения битового подпотока может удалить все единицы NAL с nuh_layer_id, которые находятся за пределами целевого диапазона. Проблема с этим подходом заключается в том, что некоторые единицы NAL относятся ко многим уровням. Например, PPS и APS могут содержать данные, относящиеся к одному или многим уровням. Если nuh_layer_id единицы PPS NAL или единицы APS NAL находится за пределами целевого диапазона, то PPS и/или APS могут быть удалены посредством процесса извлечения битового подпотока. Когда это происходит, декодер не имеет достаточно данных для декодирования извлеченного битового потока.
[0035] Настоящий пример ограничивает PPS и APS, чтобы гарантировать, что соответствующие единицы NAL не будут ошибочно удалены из битового потока во время процесса извлечения битового подпотока. В частности, PPS и APS упоминаются единицами VCL NAL, которые содержат слайсы кодированных изображений. Единица PPS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к PPS в единице PPS NAL. Аналогично, единица APS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к APS в единице APS NAL. Процесс извлечения битового подпотока удаляет единицы NAL с nuh_layer_id, которые выше целевого nuh_layer_id. Благодаря тому, что единица PPS NAL и единица APS NAL имеют меньший nuh_layer_id, чем все единицы VCL NAL, относящиеся к ним, PPS/APS не может быть удален процессом извлечения битового подпотока, который также сохраняет единицу VCL NAL, относящуюся к PPS/APS. Следовательно, ошибка исключена. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования повышается за счет правильного удаления ненужных единиц NAL, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.
[0036] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой битовый поток дополнительно содержит APS в единице APS NAL, и при этом единицы VCL NAL, которые относятся к APS, ограничены включением в себя значения nuh_layer_id, которое меньше или равно значению nuh_layer_id единицы APS NAL.
[0037] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, при этом каждая единица VCL NAL содержит слайс кодированного изображения и заголовок, содержащий элементы данных, относящиеся к слайсу, и при этом заголовок указывает APS ID для APS.
[0038] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, при этом каждая единица VCL NAL содержит слайс кодированного изображения, при этом слайс связан с заголовком, который содержит синтаксические элементы, которые применяются к слайсу кодированного изображения, и в котором заголовок указывает PPS ID для PPS.
[0039] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой битовый поток является результатом процесса извлечения битового подпотока, который удаляет единицы NAL из битового потока на основе значения nuh_layer_id.
[0040] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой набор единиц VCL NAL является частью уровня, когда все единицы в наборе единиц VCL NAL имеют конкретное значение nuh_layer_id.
[0041] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой уровень включает в себя единицы не-VCL NAL, которые связаны с набором единиц VCL NAL, все из которых имеют конкретное значение nuh_layer_id.
[0042] В варианте осуществления раскрытие включает в себя способ, реализуемый кодером, содержащий: кодирование процессором кодера кодированного изображения, содержащего набор единиц VCL NAL в битовом потоке; кодирование процессором в битовый поток PPS в единице PPS NAL на основе ограничения, согласно которому единицы VCL NAL, которые относятся к PPS, ограничены включением в себя значения nuh_layer_id, которое меньше или равно значению nuh_layer_id единицы PPS NAL; и сохранение в памяти, связанной с процессором, битового потока для передачи в декодер.
[0043] Некоторые системы кодирования видео кодируют видеопоследовательности в уровни изображений. Изображения в разных уровнях имеют разные характеристики. Таким образом, кодер может передавать декодеру разные уровни в зависимости от ограничений на стороне декодера. Для выполнения этой функции кодер может кодировать все уровни в один битовый поток. По запросу кодер может выполнить процесс извлечения битового подпотока, чтобы удалить лишнюю информацию из битового потока. Результатом является извлеченный битовый поток, который содержит только данные для декодирования запрошенных уровней. Этот процесс может быть выполнен путем включения всех данных в единицы NAL. Каждая единица NAL получает ID уровня, известный как nuh_layer_id. Затем процесс извлечения битового подпотока может удалить все единицы NAL с nuh_layer_id, которые находятся за пределами целевого диапазона. Проблема с этим подходом заключается в том, что некоторые единицы NAL относятся ко многим уровням. Например, PPS и APS могут содержать данные, относящиеся к одному или многим уровням. Если nuh_layer_id единицы PPS NAL или единицы APS NAL находится за пределами целевого диапазона, то PPS и/или APS могут быть удалены посредством процесса извлечения битового подпотока. Когда это происходит, декодер не имеет достаточно данных для декодирования извлеченного битового потока.
[0044] Настоящий пример ограничивает PPS и APS, чтобы гарантировать, что соответствующие единицы NAL не будут ошибочно удалены из битового потока во время процесса извлечения битового подпотока. В частности, PPS и APS упоминаются единицами VCL NAL, которые содержат слайсы кодированных изображений. Единица PPS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к PPS в единице PPS NAL. Аналогично, единица APS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к APS в единице APS NAL. Процесс извлечения битового подпотока удаляет единицы NAL с nuh_layer_id, которые выше целевого nuh_layer_id. Благодаря тому, что единица PPS NAL и единица APS NAL имеют меньший nuh_layer_id, чем все единицы VCL NAL, относящиеся к ним, PPS/APS не может быть удален процессом извлечения битового подпотока, который также сохраняет единицу VCL NAL, относящуюся к PPS/APS. Следовательно, ошибка исключена. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования повышается за счет правильного удаления ненужных единиц NAL, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.
[0045] Необязательно, в любом из предыдущих аспектов другая реализация аспекта обеспечивает, дополнительно содержащую кодирование в битовый поток процессором, APS в единице APS NAL на основе ограничения, согласно которому единицы VCL NAL, которые относятся к APS, ограничены включением в себя значения nuh_layer_id, которое меньше или равно значению nuh_layer_id единицы APS NAL.
[0046] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, при этом каждая единица VCL NAL содержит слайс кодированного изображения и заголовок, содержащий элементы данных, относящиеся к слайсу, и при этом заголовок указывает APS ID для APS.
[0047] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, при этом каждая единица VCL NAL содержит слайс кодированного изображения, при этом слайс связан с заголовком, который содержит синтаксические элементы, которые применяются к слайсу кодированного изображения, и в котором заголовок указывает PPS ID для PPS.
[0048] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, дополнительно содержащая выполнение процессором процесса извлечения битового подпотока для удаления единиц NAL из битового потока на основе значения nuh_layer_id.
[0049] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой набор единиц VCL NAL является частью уровня, когда все единицы в наборе единиц VCL NAL имеют конкретное значение nuh_layer_id.
[0050] Необязательно, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой уровень включает в себя единицы не-VCL NAL, которые связаны с набором единиц VCL NAL, все из которых имеют конкретное значение nuh_layer_id.
[0051] Для ясности любой из вышеупомянутых вариантов осуществления изобретения может быть объединен с любым одним или несколькими другими вышеупомянутыми вариантами осуществления изобретения, чтобы создать новый вариант осуществления в пределах объема настоящего изобретения.
[0052] Эти и другие особенности будут более понятны из следующего подробного описания, рассматриваемого вместе с сопроводительными чертежами и формулой изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0053] Для более полного понимания этого раскрытия теперь сделана ссылка на следующее краткое описание, взятое в связи с прилагаемыми чертежами и подробным описанием, в котором одинаковые номера позиций представляют одинаковые части.
[0054] Фиг. 1 представляет собой блок-схему последовательности операций примерного способа кодирования видеосигнала.
[0055] Фиг. 2 представляет собой схематическую диаграмму примерной системы кодирования и декодирования (кодека) для кодирования видео.
[0056] Фиг. 3 представляет собой схематическую диаграмму, иллюстрирующую примерный видеокодер.
[0057] Фиг. 4 представляет собой схематическую диаграмму, иллюстрирующую примерный видеодекодер.
[0058] Фиг. 5 представляет собой схематическую диаграмму, иллюстрирующую пример гипотетического эталонного декодера (HRD).
[0059] Фиг. 6 представляет собой схематическую диаграмму, иллюстрирующую примерную многоуровневую видеопоследовательность.
[0060] Фиг. 7 представляет собой схематическую диаграмму, иллюстрирующую пример битового потока.
[0061] Фиг. 8 представляет собой схематическую диаграмму примерного устройства кодирования видео.
[0062] Фиг. 9 представляет собой блок-схему последовательности операций примерного способа кодирования видеопоследовательности в битовый поток путем ограничения идентификаторов уровня (ID) для PPS и APS в битовом потоке.
[0063] Фиг. 10 представляет собой блок-схему последовательности операций примерного способа декодирования видеопоследовательности из битового потока, где ID уровня для PPS и APS в битовом потоке ограничены.
[0064] Фиг. 11 представляет собой схематическую диаграмму примерной системы для кодирования видеопоследовательности с использованием битового потока, где ID уровня для PPS и APS в битовом потоке ограничены.
ПОДРОБНОЕ ОПИСАНИЕ
[0065] Прежде всего следует понимать, что хотя иллюстративная реализация одного или более вариантов осуществления представлена ниже, раскрытые системы и/или способы могут быть реализованы с использованием любого числа методик, известных в настоящее время или уже существующих. Раскрытие никоим образом не должно быть ограничено иллюстративными реализациями, чертежами и методиками, проиллюстрированными ниже, в том числе примерными конструкциями и реализациями, проиллюстрированными и описанными в настоящем документе, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с полным объемом ее эквивалентов.
[0066] Нижеследующие термины определяются следующим образом до тех пор, пока они не используются в данном документе в противоположном контексте. В частности, следующие определения призваны внести дополнительную ясность в настоящее раскрытие. Однако термины могут быть описаны иначе в других контекстах. Соответственно, следующие определения следует рассматривать в качестве дополнения и не следует рассматривать их в качестве ограничивающих любые другие определения в описании, обеспеченном для таких терминов в настоящем документе.
[0067] Битовый поток представляет собой последовательность битов, включающих в себя видеоданные, которые сжаты для передачи между кодером и декодером. Кодер представляет собой устройство, которое выполнено с возможностью использования процессов кодирования для сжатия видеоданных в битовый поток. Декодер - это устройство, которое выполнено с возможностью использования процессов декодирования для восстановления видеоданных из битового потока. Изображение представляет собой массив выборок яркости и/или массив выборок цветности, которые создают кадр или его поле. Слайс представляет собой целое число полных тайлов или целое число последовательных строк полной единицы дерева кодирования (Coding Tree Unit, CTU) (например, в пределах тайла) изображения, которые содержатся исключительно в одной единице уровня сетевой абстракции (Network Abstraction Layer, NAL). Изображение, которое кодируется или декодируется, может называться текущим изображением для ясности обсуждения. Кодированное изображение представляет собой кодированное представление изображения, состоящего из единиц NAL уровня кодирования видео (Video Coding Layer, VCL) с конкретным значением идентификатор уровня заголовка единицы NAL (nuh_layer_id) в единице доступа (Access Unit, AU) и содержащего все единицы дерева кодирования (CTU) изображения. Декодированное изображение представляет собой изображение, полученное путем применения процесса декодирования к кодированному изображению.
[0068] AU представляет собой набор кодированных изображений, включенных в разные уровни и связанных с одним и тем же временем для вывода из буфера декодированных изображений (Decoded Picture Buffer, DPB). Единица NAL представляет собой синтаксическую структуру, содержащую данные в форме полезной нагрузки необработанной последовательности байтов (Raw Byte Sequence Payload, RBSP), указание типа данных и перемежающиеся по желанию байтами предотвращения эмуляции. Единица VCL NAL представляет собой единицу NAL, закодированную для содержания видеоданных, таких как закодированный слайс изображения. Единица не-VCL NAL (non-VCL NAL unit), представляет собой единицу NAL, которая содержит не видеоданные, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки соответствия или другие операции. Уровень представляет собой набор единиц VCL NAL, которые совместно используют определенную характеристику (например, общее разрешение, частоту кадров, размер изображения и т. д.), указанную посредством ID уровня и связанными единицами не-VCL NAL. Идентификатор уровня заголовка единиц NAL (nuh_layer_id) представляет собой синтаксический элемент, который указывает идентификатор уровня, который включает в себя единицу NAL.
[0069] Набор параметров изображения (Picture Parameter Set, PPS) представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всем закодированным изображениям, как определено синтаксическим элементом, найденным в заголовке каждого изображения. PPS NAL - это единица NAL, которая содержит PPS. PPS ID, также обозначаемый как pps_pic_parameter_set_id, представляет собой идентификатор, который идентифицирует PPS для ссылки другими синтаксическими элементами. Набор параметров адаптации (Adaptation Parameter Set, APS) представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к слайсам, как определено синтаксическими элементами, найденными в заголовках слайсов. APS NAL представляет собой единицу NAL, которая содержит APS. APS ID, также обозначаемый как aps_adaptation_parameter_set_id, является идентификатором APS для ссылки другими синтаксическими элементами. Заголовок изображения представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всем слайсам закодированного изображения. Заголовок слайса является частью закодированного слайса, содержащего элементы данных, относящиеся ко всем тайлам или строкам CTU в тайле, представленном в слайсе. Кодированная видеопоследовательность представляет собой набор из одного или нескольких кодированных изображений. Декодированная видеопоследовательность представляет собой набор из одного или нескольких декодированных изображений. Процесс извлечения битового подпотока представляет собой процесс, с помощью которого единицы NAL в битовом потоке, не включенные в целевой набор, определяемый индексом целевого набора выходных уровней (OLS) и целевым наивысшим временным идентификатором (TemporalId), удаляются из битовый поток, при этом выходной суббитовый поток включает в себя единицы NAL в битовом потоке, которые включены в целевой набор.
[0070] В настоящем документе используются следующие сокращения: единица доступа (Access Unit, AU), блок дерева кодирования (Coding Tree Block,CTB), единица дерева кодирования (Coding Tree Unit, CTU), единица кодирования (Coding Unit, CU), видеопоследовательность кодированного уровня (Coded Layer Video Sequence, CLVS), начало видеопоследовательности кодированного уровня (Coded Layer Video Sequence Start, CLVSS), Последовательность кодированного видео (Coded Video Sequence, CVS), Начало последовательности кодированного видео (Coded Video Sequence Start, CVSS), Объединенная группа экспертов по видео (Joint Video Experts Team, JVET), Гипотетический эталонный декодер (Hypothetical Reference Decoder) HRD, Набор тайлов с ограничением движения (Motion Constrained Tile Set, MCTS), Максимальная единица передачи (Maximum Transfer Unit, MTU), Уровень сетевой абстракции (Network Abstraction Layer, NAL), Набор выходных уровней (Output Layer Set, OLS), счетчик порядка изображений (Picture Order Count, POC), точка произвольного доступа (Random Access Point, RAP), полезная нагрузка последовательности необработанных байтов (Raw Byte Sequence Payload, RBSP), набор параметров последовательности (Sequence Parameter Set, SPS), набор параметров видео (Video Paramtere Set, VPS), универсальное кодирование видео ( Versatile Video Coding, VVC).
[0071] Многие методики сжатия видео могут использоваться для уменьшения размера видеофайлов с минимальной потерей данных. Для уменьшения размера видеофайлов с минимальной потерей данных можно использовать многие методы сжатия видео. Например, методы сжатия видео могут включать в себя выполнение пространственного (например, внутрикадрового) предсказания. Для кодирования видео на основе блоков видеослайс (например, видеоизображение или часть видеоизображения) может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоками дерева кодирования (CTB), единицами дерева кодирования (CTU), единицами кодирования (CU) и/или узлами кодирования. Видеоблоки в внутрикадрово-кодируемом (I) слайсе изображения кодируются с использованием пространственного предсказания по отношению к опорным выборкам в соседних блоках в том же самом изображении. Видеоблоки в слайсе межкадрово-кодируемого однонаправленного предсказания (P) или двунаправленного предсказания (B) в изображении могут кодироваться посредством использования пространственного предсказания относительно опорных выборок в соседних блоках в том же самом изображении или временного предсказания относительно опорных выборок в других опорных изображениях. Изображения (images) могут называться кадрами и/или картинками (pictures), а опорные изображения могут называться опорными кадрами и/или опорными картинками (reference pictures). Пространственное или временное предсказание приводит к блоку предсказания, представляющему блок изображения. Остаточные данные представляют собой разности пикселей между исходным блоком изображения и блоком предсказания. Соответственно, межкадрово-кодируемый блок кодируется согласно вектору движения, который указывает на блок опорных выборок, формирующих блок предсказания, и остаточным данным, указывающими разность между кодируемым блоком и блоком предсказания. Внутрикадрово-кодируемый блок кодируется согласно режиму внутрикадрового-кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования. Это приводит к остаточным коэффициентам преобразования, которые могут быть квантованы. Квантованные коэффициенты преобразования могут изначально размещаться в двумерном массиве. Квантованные коэффициенты преобразования могут быть просканированы для создания одномерного вектора коэффициентов преобразования. Энтропийное кодирование может быть применено для достижения еще большего сжатия может применяться энтропийное кодирование. Такие методики кодирования описаны ниже.
[0072] Чтобы обеспечить точное декодирование закодированного видео, видео кодируется и декодируется согласно соответствующим стандартам кодирования видео. Стандарты кодирования видео включают в себя International Telecommunication Union (ITU) Standardization Sector (ITU-T) H.261, International Organization for Standardization/International Electrotechnical Commission (ISO/IEC) Motion Picture Experts Group (MPEG)-1 Part 2, ITU-T H.262 или ISO/IEC MPEG-2 Part 2 ITU-T H.263, ISO/IEC MPEG-4 Part 2, Advanced Video Coding (AVC), также известный как ITU-T H.264 или ISO/IEC MPEG-4 Part 10, и High Efficiency Video Coding (HEVC), также известный как ITU-T H.265 или MPEG-H Part 2. AVC включает в себя такие расширения, как Scalable Video Coding (SVC), Multiview Video Coding (MVC) и Multiview Video Coding plus Depth (MVC+D), а также трехмерное (3D) AVC (3D-AVC). HEVC включает такие расширения, как Scalable HEVC (SHVC), Multiview HEVC (MV-HEVC), и 3D HEVC (3D-HEVC). Совместная группа экспертов по видео (JVET) ITU-T и ISO/IEC приступила к разработке стандарта кодирования видео, называемого Универсальным кодированием видео (Versatile Video Coding, VVC). VVC включен в рабочий проект (Working Draft, WD), который включает в себя JVET-O2001-v14.
[0073] Некоторые системы кодирования видео кодируют видеопоследовательности в уровни изображений. Изображения в разных уровнях имеют разные характеристики. Таким образом, кодер может передавать декодеру разные уровни в зависимости от ограничений на стороне декодера. Для выполнения этой функции кодер может кодировать все уровни в один битовый поток. По запросу кодер может выполнить процесс извлечения битового подпотока, чтобы удалить лишнюю информацию из битового потока. Результатом является извлеченный битовый поток, который содержит только данные для декодирования запрошенных уровней. Этот процесс можно выполнить, включив все данные в единицы уровня сетевой абстракции (NAL). Каждая единица NAL получает идентификатор уровня (ID), известный как идентификатор уровня заголовка единицы NAL (nuh_layer_id). Затем процесс извлечения битового подпотока может удалить все единицы NAL с nuh_layer_id, которые находятся за пределами целевого диапазона. Проблема с этим подходом заключается в том, что некоторые единицы NAL относятся ко многим уровням. Например, набор параметров изображения (PPS) и набор параметров адаптации (APS) могут содержать данные, относящиеся к одному или многим уровням. Если nuh_layer_id единицы PPS NAL или единицы APS NAL находится за пределами целевого диапазона, то PPS и/или APS могут быть удалены посредством процесса извлечения битового подпотока. Когда это происходит, декодер не имеет достаточно данных для декодирования извлеченного битового потока.
[0074] Здесь раскрыт механизм для ограничения PPS и APS, чтобы гарантировать, что соответствующие единицы NAL не будут ошибочно удалены из битового потока во время процесса извлечения битового подпотока. В частности, PPS и APS упоминаются единицами NAL уровня кодирования видео (VCL), которые содержат слайсы кодированных изображений. Единица PPS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к PPS в единице PPS NAL. Аналогично, единица APS NAL ограничена включением в себя nuh_layer_id, который меньше или равен nuh_layer_id всех единиц VCL NAL, которые относятся к APS в единице APS NAL. Процесс извлечения битового подпотока удаляет единицы NAL с nuh_layer_id, которые выше целевого nuh_layer_id. Благодаря тому, что единица PPS NAL и единица APS NAL имеют меньший nuh_layer_id, чем все единицы VCL NAL, относящиеся к ним, PPS/APS не может быть удален процессом извлечения битового подпотока, который также сохраняет единицу VCL NAL, относящуюся к PPS/APS. Следовательно, ошибка исключена. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования повышается за счет правильного удаления ненужных единиц NAL, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.
[0075] Фиг. 1 представляет собой блок-схему последовательности операций примерного рабочего способа 100 кодирования видеосигнала. В частности, видеосигнал кодируется в кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы для уменьшения размера видеофайла. Меньший размер файла позволяет передавать сжатый видеофайл пользователю, уменьшая при этом связанное с этим потребление ресурсов полосы пропускания. Затем декодер декодирует сжатый видеофайл, чтобы восстановить исходный видеосигнал для отображения конечному пользователю. Процесс декодирования как правило зеркально отражает процесс кодирования, что позволяет декодеру последовательно восстанавливать видеосигнал.
[0076] На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может представлять собой несжатый видеофайл, хранящийся в памяти. В качестве другого примера, видеофайл может быть захвачен устройством видеозахвата, таким как видеокамера, и закодирован для поддержки потоковой передачи видео в режиме реального времени. Видеофайл может включать в себя как аудиокомпонент, так и видеокомпонент. Видеокомпонент содержит ряд кадров изображений, которые при последовательном просмотре создают визуальное впечатление движения. Кадры содержат пиксели, которые выражены в показателях света, называемых в данном документе компонентами яркости (или выборками яркости), и цвета, которые называются компонентами цветности (или выборками цветности). цвета). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.
[0077] На этапе 103 видео разделяется на блоки. Разделение включает в себя разбиение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. На этапе 265 видео разбивается на блоки. Разделение включает в себя разделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, при высокоэффективном кодировании видео (HEVC, High Efficiency Video Coding) (также известном как H.265 and MPEG-H Part 2) кадр может быть сначала разделен на единицы дерева кодирования (CTU), которые являются блоками заранее заданного раздела (например 64x64 пикселя). CTU содержат выборки как яркости, так и цветности. Деревья кодирования могут использоваться для разбиения CTU на блоки, а затем рекурсивного разбиения блоков до тех пор, пока не будут достигнуты конфигурации, которые поддерживают дальнейшее кодирование. Например, компоненты яркости кадра могут быть подразделены до тех пор, пока отдельные блоки не будут содержать относительно однородные значения освещения. Кроме того, компоненты цветности кадра могут быть подразделены до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения различаются в зависимости от содержимого видеокадров.
[0078] На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, полученных разделением на этапе 103. Например, может быть использовано межкадровое предсказание и/или внутрикадровое предсказание. Межкадровое предсказание предназначено для получения преимущества от того факта, что объекты в общей сцене имеют тенденцию появляться в последовательных кадрах. Соответственно, блок, представляющий объект в опорном кадре, не нужно повторно описывать в смежных кадрах. В частности, объект, такой как стол, может оставаться в постоянном положении в течение нескольких кадров. Следовательно, стол описывается один раз, и смежные кадры могут ссылаться обратно на опорный кадр. Механизмы сопоставления образов могут использоваться для сопоставления объектов в нескольких кадрах. Кроме того, движущиеся объекты могут быть представлены в нескольких кадрах, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется по экрану в течение нескольких кадров. Векторы движения могут быть использованы для описания такого движения. Вектор движения представляет собой двумерный вектор, который обеспечивает смещение из координат объекта в кадре в координаты объекта в опорном кадре. Таким образом, межкадровое предсказание может кодировать блок изображения в текущем кадре в качестве набора векторов движения, указывающих смещение от соответствующего блока в опорном кадре.
[0079] Внутрикадровое предсказание кодирует блоки в общем кадре. Внутрикадровое предсказание использует тот факт, что компоненты яркости и цветности имеют тенденцию располагаться рядом в кадре. Например, фрагмент зелени в части дерева имеет тенденцию располагаться рядом с аналогичными фрагментами зелени. Внутрикадровое предсказание использует несколько направленных режимов предсказания (например, тридцать три в HEVC), планарный режим и режим постоянного тока (DC). Направленные режимы (directional mode) указывают, что текущий блок аналогичен/совпадает с выборками соседнего блока в соответствующем направлении. Планарный режим (planar mode) указывает, что ряд блоков вдоль строки/столбца (например, плоскости) может быть интерполирован на основе соседних блоков на краях строки. Планарный режим, по сути, указывает на плавный переход света/цвета через строку/столбец, используя относительно постоянный наклон при изменении значений. Режим DC используется для сглаживания границ и указывает, что блок похож/аналогичен среднему значению, связанному с выборками всех соседних блоков, связанных с угловыми направлениями направленных режимов предсказания. Соответственно, блоки внутрикадрового предсказания могут представлять блоки изображения как значения различных реляционных режимов предсказания вместо фактических значений. Кроме того, блоки межкадрового предсказания могут представлять блоки изображения как значения векторов движения вместо фактических значений. В любом случае в некоторых случаях блоки предсказания могут не точно представлять блоки изображения. Любые различия хранятся в остаточных блоках. Преобразования могут быть применены к остаточным блокам для дальнейшего сжатия файла.
[0080] На этапе 107 могут применяться различные методики фильтрации. В HEVC фильтры применяются по схеме внутриконтурной фильтрации. Основанное на блоках предсказание, рассмотренное выше, может привести к созданию блочных изображений в декодере. Кроме того, схема основанного на блоках предсказания может кодировать блок, а затем восстановить закодированный блок для последующего использования в качестве опорного блока. Схема внутриконтурной фильтрации итеративно применяет к блокам/кадрам фильтры шумоподавления, фильтры деблокирования, адаптивные циклические фильтры и фильтры адаптивного к выборке смещения (SAO). Эти фильтры смягчают такие артефакты блочности, чтобы можно было точно восстановить закодированный файл. Кроме того, эти фильтры смягчают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью создают дополнительные артефакты в последующих блоках, которые кодируются на основе этих восстановленных опорных блоков.
[0081] После разделения, сжатия и фильтрации видеосигнала полученные данные кодируются в битовый поток на этапе 109. Битовый поток включает в себя данные, рассмотренные выше, а также любые данные сигнализации, необходимые для поддержки надлежащего восстановления видеосигнала в декодере. Например, такие данные могут включать данные разделения, данные предсказания, остаточные блоки и различные флаги, обеспечивающие инструкции кодирования, для декодера. Битовый поток может быть сохранен в памяти для передачи на декодер по запросу. Битовый поток также может широковещаться или многоадресно передаваться в множество декодеров. Создание битового потока является итеративным процессом. Соответственно, этапы 101, 103, 105, 107 и 109 могут происходить непрерывно и/или одновременно в отношении многих кадров и блоков. Порядок, показанный на Фиг. 1, представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса кодирования видео определенным порядком.
[0082] Декодер принимает битовый поток и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующие синтаксические и видео данные. Декодер использует синтаксические данные из битового потока для определения разделов для кадров на этапе 111. Разделение должно совпадать с результатами разделения на блоки на этапе 103. Теперь описывается энтропийное кодирование/декодирование, используемое на этапе 111. Кодер принимает множество решений во время процесса сжатия, например выбирает схемы разделения на блоки из нескольких возможных вариантов на основе пространственного расположения значений во входном изображении(-ях). Для сигнализации точных выборов может использоваться большое число бинов. Как используется в данном документе, бин представляет собой двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может изменяться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбрасывать любые опции, которые явно не подходят для конкретного случая, оставляя набор допустимых опций. Каждой допустимой опции затем назначается кодовое слово. Длина кодовых слов основана на числе допустимых опций (например, один бин для двух опций, два бина для трех-четырех опций и т. д.). Затем кодер кодирует кодовое слово для выбранной опции. Эта схема уменьшает размер кодовых слов, поскольку кодовые слова настолько велики, насколько это необходимо, чтобы однозначно указывать выбор из небольшого подмножества допустимых опций, в отличие от однозначного указания выбора из потенциально большого набора всех возможных опций. Затем декодер декодирует выбор, определяя набор допустимых опций аналогично кодеру. Посредством определения набора допустимых опций, декодер может считывать кодовое слово и определять выбор, сделанный кодером.
[0083] На этапе 113 декодер выполняет декодирование блоков. В частности, декодер применяет обратные преобразования для формирования остаточных блоков. Затем декодер применяет остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения согласно разделению. Блоки предсказания могут включать в себя как блоки внутрикадрового предсказания, так и блоки межкадрового предсказания, формируемые кодером на этапе 105. Затем восстановленные блоки изображения размещаются в кадры восстанавливаемого видеосигнала согласно данным разделения, определенным на этапе 111. Синтаксис для этапа 113 также может быть просигнализирован в битовом потоке посредством энтропийного кодирования, как описано выше.
[0084] На этапе 115 фильтрация выполняется над кадрами восстановленного видеосигнала способом, аналогичным этапу 107 в кодере. Например, фильтры шумоподавления, фильтры деблокирования, адаптивные циклические фильтры и фильтры SAO могут быть применены к кадрам для удаления артефактов блочности. После фильтрации кадров видеосигнал может выводиться на дисплей на этапе 117 для просмотра конечным пользователем.
[0085] Фиг. 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 буфера декодированных изображений. Эти компоненты описаны далее.
[0086] Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей деревом кодирования. Дерево кодирования использует различные режимы разбиения для разбиения блока пикселей на более мелкие блоки пикселей. Затем эти блоки могут быть дополнительно подразделены на более мелкие блоки. Блоки могут называться узлами в дереве кодирования. Более крупные родительские узлы подвергаются фрагментации на более мелкие дочерние узлы. Число раз, которое узел подразделяется, называется глубиной узла/дерева кодирования. Полученные разделением блоки могут быть включены в единицы кодирования (CU) в некоторых случаях. Например, CU может быть частью CTU, которая содержит блок яркости, блок(-и) цветоразности красного (Cr) и блок(-и) цветоразноси синего (Cb) вместе с соответствующими инструкциями синтаксиса для CU. Режимы разбиения могут включать в себя двоичное дерево (BT), троичное дерево (TT) и квадратичное дерево (QT), используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различных форм в зависимости от используемых режимов разбиения. Разделенный видеосигнал 201 пересылается в компонент 211 общего управления кодером, компонент 213 преобразования, масштабирования и квантования, компонент 215 внутрикадровой оценки, компонент 227 анализа для управления фильтром и компонент 221 оценки движения для сжатия.
[0087] Компонент 211 общего управления кодером выполнен с возможностью принятия решений, связанных с кодированием изображений видеопоследовательности в битовый поток в соответствии. Например, компонент 211 общего управления кодером управляет оптимизацией битовой скорости/размера битового потока в зависимости от качества восстановления. Такие решения могут приниматься на основе доступности пространства хранения/полосы пропускания и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет использованием буфера с учетом скорости передачи, чтобы смягчить проблемы недостаточного заполнения и переполнения буфера. Чтобы справиться с этими проблемами, компонент 211 общего управления кодером управляет разделением, предсказанием и фильтрацией посредством других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшать сложность сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодека, чтобы сбалансировать качество восстановления видеосигнала с учетом битовой скорости. Компонент 211 общего управления кодером создает управляющие данные, которые управляют работой других компонентов. Управляющие данные также пересылаются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке, чтобы сигнализировать параметры для декодирования в декодере.
[0088] Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для межкадрового предсказания. Кадр или слайс разделенного видеосигнала 201 может быть разбит на несколько видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняют кодирование c межкадровым предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного предсказания. Система 200 кодека может выполнять несколько проходов кодирования, например, для выбора надлежащего режима кодирования для каждого блока видеоданных.
[0089] Компонент 221 оценки движения и компонент 219 компенсации движения могут быть в высокой степени интегрированы, но показаны отдельно в концептуальных целях. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указать сдвиг кодируемого объекта относительно блока предсказания. Блок предсказания является блоком, который обнаружен как точно соответствующий блоку, который подлежит кодированию, исходя из разности пикселей. Блок предсказания также может именоваться опорным блоком. Такая разность пикселей может быть определена суммой абсолютных разностей (sum of absolute difference, SAD), суммой квадратов разностей (sum of square difference, SSD) или другими показателями различия. HEVC использует несколько кодируемых объектов, в том числе CTU, блоки дерева кодирования (CTB) и CU. Например, CTU можно разбить на CTB, которые затем можно разбить на CB для включения в CU. CU может быть закодирована как единица предсказания, содержащий данные предсказания, и/или единицу преобразования (transform unit, TU), содержащую преобразованные остаточные данные для CU. Компонент 221 оценки движения формирует векторы движения, единицы предсказания и TU, используя анализ искажения скорости как часть процесса оптимизации искажения скорости. Например, компонент 221 оценки движения может определять несколько опорных блоков, несколько векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д., имеющие наилучшие характеристики скорость-искажение. Наилучшие характеристики скорость-искажение уравновешивают качество восстановления видео (например, объем потерь данных при сжатии) с эффективностью кодирования (например, размер окончательного кодирования).
[0090] В некоторых примерах система 200 кодека может вычислять значения для положений субцелочисленных пикселей опорных изображений, сохраненных в компоненте 223 буфера декодированных изображений. Например, система 200 кодека может интерполировать значения положений одной четверти пикселя, положений одной восьмой пикселя или других положений дробных пикселей опорного изображения. Следовательно, компонент 221 оценки движения может выполнять поиск движения относительно положений полных пикселей и положений дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для единицы предсказания видеоблока во межкадрово-кодированном слайсе путем сравнения положения единицы предсказания с положением блока предсказания опорного изображения. Компонент 221 оценки движения выводит вычисленный вектор движения в качестве данных движения в компонент 231 форматирования заголовка и CABAC для кодирования и движения для компонента 219 компенсации движения.
[0091] Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать в себя получение или формирование блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы в некоторых примерах. После приема вектора движения для единицы предсказания текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок путем вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, что формирует значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, а компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости, как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок направляются в компонент 213 преобразования, масштабирования и квантования.
[0092] Разделенный видеосигнал 201 также отправляется в компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания. Как и в случае с компонентом 221 оценки движения и компонентом 219 компенсации движения, компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания могут быть в высокой степени интегрированы, но в концептуальных целях проиллюстрированы отдельно. Компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания осуществляют внутрикадровое предсказание текущего блока относительно блоков в текущем кадре, в качестве альтернативы межкадровому предсказанию, выполняемому компонентом 221 оценки движения и компонентом 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 внутрикадровой оценки определяет режим внутрикадрового предсказания для использования, чтобы кодировать текущий блок. В некоторых примерах компонент 215 внутрикадровой оценки выбирает надлежащий режим внутрикадрового предсказания для кодирования текущего блока из множества проверяемых режимов внутрикадрового предсказания. Выбранные режимы внутрикадрового предсказания затем пересылаются в компонент 231 форматирования заголовка и CABAC для кодирования.
[0093] Например, компонент 215 внутрикадровой оценки вычисляет значения скоростного искажения, используя анализ скоростного искажения для различных тестируемых режимов внутрикадрового предсказания, и выбирает режим внутрикадрового предсказания, имеющий лучшие характеристики скоростного искажения среди тестированных режимов. Анализ скорость-искажение обычно определяет степень искажения (или ошибку) между закодированным блоком и исходным незакодированным блоком, который был закодирован для получения упомянутого закодированного блока, а также битовая скорости (например, число битов), используемая для получения упомянутого закодированного блока. Компонент 215 внутрикадровой оценки вычисляет отношения по искажениям и скоростям для различных закодированных блоков, чтобы определить, какой режим внутрикадрового предсказания демонстрирует наилучшее значение скорость-искажение для блока. Кроме того, компонент 215 внутрикадровой оценки может быть выполнен с возможностью кодирования блоков глубины карты глубины с использованием режима моделирования глубины (DMM) на основе оптимизации скорость-искажение (RDO).
[0094] Компонент 217 внутрикадрового предсказания может формировать остаточный блок из блока предсказания на основе выбранных режимов внутрикадрового предсказания, определенных компонентом 215 внутрикадровой оценки, при реализации в кодере, или считывать остаточный блок из битового потока при реализации в декодере. Остаточный блок включает в себя разность значений между блоком предсказания и исходным блоком, представленную в виде матрицы. Остаточный блок затем пересылается в компонент 213 преобразования, масштабирования и квантования. Компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания могут работать как над компонентами яркости, так и над компонентами цветности.
[0095] Компонент 213 преобразования, масштабирования и квантования выполнен с возможностью дальнейшего сжатия остаточного блока. Компонент 213 преобразования, масштабирования и квантования применяет преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусное преобразование (DST) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий остаточные значения коэффициентов преобразования. Также могут быть использованы вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. Преобразование может переводить остаточную информацию из области значений пикселей в область преобразования, такую как частотная область. Компонент 213 преобразования, масштабирования и квантования также выполнен с возможностью масштабирования преобразованной остаточной информации, например на основе частоты. Такое масштабирование включает в себя применение коэффициента масштабирования к остаточной информации, так что информация разных частот квантуется с разными степенями детализации, что может повлиять на конечное визуальное качество восстановленного видео. Компонент 213 преобразования, масштабирования и квантования также выполнен с возможностью квантования коэффициентов преобразования для дальнейшего снижения битовой скорости. Процесс квантования может уменьшать битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена посредством корректировки параметра квантования. В некоторых примерах компонент 213 преобразования, масштабирования и квантования может затем выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования пересылаются в компонент 231 форматирования заголовка и CABAC для кодирования в битовый поток.
[0096] Компонент 229 обратного преобразования и масштабирования применяет обратную операцию компонента 213 преобразования, масштабирования и квантования для поддержки оценки движения. Компонент 229 обратного преобразования и масштабирования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в пиксельной области, например для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения могут вычислять опорный блок путем прибавления остаточного блока обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. Фильтры применяются к восстановленным опорным блокам для смягчения артефактов, создаваемых во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.
[0097] Компонент 227 анализа для управления фильтром и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 обратного преобразования и масштабирования может быть объединен с соответствующим блоком предсказания из компонента 217 внутрикадрового предсказания и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах фильтры могут быть применены к остаточным блокам. Как и в случае с другими компонентами на Фиг. 2, компонент 227 анализа для управления фильтром и компонент 225 внутриконтурных фильтров являются в высокой степени интегрируемыми и могут быть реализованы вместе, но представлены в концептуальных целях по-отдельности. Фильтры, применяемые к восстановленным опорным блокам, применяются к определенным пространственным областям и включают в себя несколько параметров для корректировки того, как такие фильтры применяются. Компонент 227 анализа для управления фильтром анализирует восстановленные опорные блоки для определения того, где такие фильтры должны применяться, и устанавливает соответствующие параметры. Такие данные пересылаются в компонент 231 форматирования заголовка и CABAC в качестве управляющих фильтром данных для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе управляющих фильтром данных. Фильтры могут включать в себя деблокирующий фильтр, фильтр шумоподавления, SAO-фильтр и адаптивный циклический фильтр. Такие фильтры могут применяться в пространственной/пиксельной области (например, к восстановленному блоку пикселей) или в частотной области, в зависимости от примера.
[0098] При работе в качестве кодера отфильтрованный восстановленный блок изображения, остаточный блок и/или блок предсказания сохраняются в компоненте 223 буфера декодированных изображений для последующего использования при оценке движения, как описано выше. При работе в качестве декодера компонент 223 буфера декодированных изображений сохраняет и пересылает восстановленные и отфильтрованные блоки на дисплей в ходе вывода видеосигнала. Компонент 223 буфера декодированных изображений может представлять собой любое запоминающее устройство, способное сохранять блоки предсказания, остаточные блоки и/или восстановленные блоки изображения.
[0099] Компонент 231 форматирования заголовка и CABAC принимает данные от различных компонентов системы 200 кодека и кодирует такие данные в кодируемый битовый поток для передачи на декодер. В частности, компонент 231 форматирования заголовка и CABAC формирует различные заголовки для кодирования управляющих данных, таких как общие управляющие данные и управляющие фильтром данные. Кроме того, данные предсказания, включающие в себя данные движения и внутрикадрового предсказания, а также остаточные данные в форме данных квантованных коэффициентов преобразования, все кодируются в битовом потоке. Окончательный битовый поток включает в себя всю информацию, необходимую декодеру для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов режимов внутрикадрового предсказания (также называемые таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов внутрикадрового предсказания, указание информации разделения и т. д. Такие данные могут быть закодированы с помощью энтропийного кодирования. Например, информация может быть закодирована с использованием контекстно-адаптивного кодирования с переменной длиной (CAVLC), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с вероятностным интервалом разделения (PIPE) или другого способа энтропийного кодирования. После энтропийного кодирования кодированный битовый поток может быть передан на устройство (например, видеодекодер) или помещен в архив для последующей передачи или извлечения.
[00100] Фиг. 3 представляет собой блок-схему, иллюстрирующую примерный видеокодер 300. Видеокодер 300 может использоваться для реализации функций кодирования системы 200 кодека и/или реализации этапов 101, 103, 105, 107 и/или 109 рабочего способа 100. Кодер 300 разделяет входной видеосигнал, в результате чего получается разделенный видеосигнал 301, который по существу аналогичен разделенному видеосигналу 201. Затем разделенный видеосигнал 301 сжимается и кодируется в битовый поток компонентами кодера 300.
[00101] В частности, разделенный видеосигнал 301 пересылается в компонент 317 внутрикадрового предсказания для внутрикадрового предсказания. Компонент 317 внутрикадрового предсказания может быть по существу аналогичен компоненту 215 внутрикадровой оценки и компоненту 217 внутрикадрового предсказания. Разделенный видеосигнал 301 также пересылается в компонент 321 компенсации движения для межкадрового предсказания на основе опорных блоков в компоненте 323 буфера декодированных изображений. Компонент 321 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и компоненту 219 компенсации движения. Блоки предсказания и остаточные блоки из компонента 317 внутрикадрового предсказания и компонента 321 компенсации движения пересылаются в компонент 313 преобразования и квантования для преобразования и квантования остаточных блоков. Компонент 313 преобразования и квантования может быть по существу аналогичен компоненту 213 преобразования, масштабирования и квантования. Преобразованные и квантованные остаточные блоки и соответствующие блоки предсказания (вместе с связанными управляющими данными) пересылаются в компонент 331 энтропийного кодирования для кодирования в битовый поток. Компонент 331 энтропийного кодирования может быть по существу аналогичен компоненту 231 форматирования заголовка и CABAC.
[00102] Преобразованные и квантованные остаточные блоки и/или соответствующие блоки предсказания также пересылаются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 обратного преобразования и квантования может быть по существу аналогичен компоненту 229 обратного преобразования и масштабирования. Внутриконтурные фильтры в компоненте 325 внутриконтурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 внутриконтурных фильтров может быть по существу аналогичен компоненту 227 анализа для управления фильтром и компоненту 225 внутриконтурных фильтров. Компонент 325 внутриконтурных фильтров может включать в себя несколько фильтров, как описано в отношении компонента 225 внутриконтурных фильтров. Затем отфильтрованные блоки сохраняются в компоненте 323 буфера декодированных изображений для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированных изображений может быть по существу аналогичен компоненту 223 буфера декодированных изображений.
[00103] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный видеодекодер 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодека и/или реализации этапов 111, 113, 115, и/или 117 рабочего способа 100. Декодер 400 принимает битовый поток, например, от кодера 300, и формирует реконструированный выходной видеосигнал на основе битового потока для отображения конечному пользователю.
[00104] Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как кодирование CAVLC, CABAC, SBAC, PIPE, или другой методики энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка для обеспечения контекста для интерпретации дополнительных данных, закодированных как кодовые слова в битовом потоке. Декодированная информация включает в себя любую требуемую информацию для декодирования видеосигнала, такую как общие управляющие данные, управляющие фильтром данные, информация разделения, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования пересылаются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.
[00105] Восстановленные остаточные блоки и/или блоки предсказания пересылаются в компонент 417 внутрикадрового предсказания для восстановления в блоки изображения на основе операций внутрикадрового предсказания. Компонент 417 внутрикадрового предсказания может быть по существу аналогичен компоненту 215 внутрикадровой оценки и компоненту 217 внутрикадрового предсказания. В частности, компонент 417 внутрикадрового предсказания использует режимы предсказания для нахождения опорного блока в кадре и применяет остаточный блок к результату для восстановления внутрикадрово предсказанных блоков изображения. Восстановленные внутрикадрово предсказанные блоки изображения и/или остаточные блоки и соответствующие данные межкадрового предсказания пересылаются в компонент 423 буфера декодированных изображений через компонент 425 внутриконтурных фильтров, которые могут быть по существу аналогичны компоненту 223 буфера декодированных изображений и компоненту 225 внутриконтурных фильтров, соответственно. Компонент 425 внутриконтурных фильтров фильтрует восстановленные блоки изображения, остаточные блоки и/или блоки предсказания, и такая информация сохраняется в компоненте 423 буфера декодированных изображений. Восстановленные блоки изображения из компонента 423 буфера декодированных изображений пересылаются в компонент 421 компенсации движения для межкадрового предсказания. Компонент 421 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для формирования блока предсказания и применяет остаточный блок к результату для восстановления блока изображения. Получаемые в результате восстановленные блоки также можно переслать через компонент 425 внутриконтурных фильтров в компонент 423 буфера декодированных изображений. Компонент 423 буфера декодированных изображений продолжает сохранять дополнительные восстановленные блоки изображения, которые могут быть восстановлены в кадры посредством информации разделения. Такие кадры также могут быть помещены в последовательность. Последовательность выводится на дисплей в виде восстановленного выходного видеосигнала.
[00106] Фиг. 5 представляет собой схематическое изображение, иллюстрирующее пример HRD 500. HRD 500 может использоваться в кодере, таком как система 200 кодека и/или кодер 300. HRD 500 может проверить битовый поток, созданный на этапе 109 способа 100, до того, как битовый поток будет направлен в декодер, такой как декодер 400. В некоторых примерах битовый поток может непрерывно пересылаться через HRD 500 по мере кодирования битового потока. В случае, если часть битового потока не соответствует связанным ограничениям, HRD 500 может указать такой сбой кодеру, чтобы заставить кодер повторно кодировать соответствующую часть битового потока с помощью других механизмов.
[00107] HRD 500 включает в себя гипотетический планировщик потоков (HSS) 541. HSS 541 представляет собой компонент, сконфигурированный для выполнения гипотетического механизма доставки. Гипотетический механизм доставки используется для проверки соответствия битового потока или декодера временным характеристикам и потоку данных битового потока 551, вводимого в HRD 500. Например, HSS 541 может принимать битовый поток 551, выдаваемый кодером, и управлять процессом проверки соответствия битового потока 551. В конкретном примере HSS 541 может управлять скоростью, с которой кодированные изображения проходят через HRD 500, и проверять, что битовый поток 551 не содержит несоответствующих данных.
[00108] HSS 541 может пересылать битовый поток 551 в CPB 543 с предварительно определенной скоростью. HRD 500 может управлять данными в блоках декодирования (DU) 553. DU 553 представляет собой единица доступа (AU) или подмножество AU и связанных с ним единиц уровня сетевой абстракции (NAL) без уровня кодирования видео (VCL). В частности, AU содержит одно или несколько изображений, связанных с выходным временем. Например, AU может содержать одно изображение в одноуровневом битовом потоке и может содержать изображение для каждого уровня в многоуровневом битовом потоке. Каждое изображение AU может быть разделено на слайсы, каждый из которых включен в соответствующая единица VCL NAL. Следовательно, DU 553 может содержать одно или несколько изображений, один или несколько слайсов изображения или их комбинации. Кроме того, параметры, используемые для декодирования AU, изображений и/или слайсов, могут быть включены в единицы не-VCL NAL. Таким образом, DU 553 содержит единицы не-VCL NAL, которые содержат данные, необходимые для поддержки декодирования единиц VCL NAL в DU 553. CPB 543 является буфером в порядке очереди в HRD 500. CPB 543 содержит DU 553, включающие в себя видеоданные в порядке декодирования. CPB 543 сохраняет видеоданные для использования во время проверки соответствия битового потока.
[00109] CPB 543 пересылает DU 553 компоненту 545 процесса декодирования. Компонент 545 процесса декодирования представляет собой компонент, который соответствует стандарту VVC. Например, компонент 545 процесса декодирования может эмулировать декодер 400, используемый конечным пользователем. Компонент 545 процесса декодирования декодирует DU 553 со скоростью, которая может быть достигнута примерным декодером конечного пользователя. Если компонент 545 процесса декодирования не может декодировать DU 553 достаточно быстро, чтобы предотвратить переполнение CPB 543, то битовый поток 551 не соответствует стандарту и должен быть повторно закодирован.
[00110] Компонент 545 процесса декодирования декодирует DU 553, что создает декодированные DU 555. Декодированный DU 555 содержит декодированное изображение. Декодированные DU 555 пересылаются в DPB 547. DPB 547 может быть по существу аналогичен компоненту 223, 323 и/или 423 буфера декодированных изображений. Для поддержки межкадрового предсказания изображения, помеченные для использования в качестве опорных изображений 556, которые получены из декодированных DU 555, возвращаются в компонент 545 процесса декодирования для поддержки дальнейшего декодирования. DPB 547 выводит декодированную видеопоследовательность в виде последовательности изображений 557. Изображения 557 являются реконструированными изображениями, которые обычно отражают изображения, закодированные кодером в битовый поток 551.
[00111] Изображения 557 направляются компоненту 549 обрезки вывода. Компонент 549 обрезки вывода сконфигурирован для применения окна обрезки соответствия к изображениям 557. Это приводит к выходу обрезанных изображений 559. Выходное обрезанное изображение 559 является полностью реконструированным изображением. Соответственно, выходное обрезанное изображение 559 имитирует то, что конечный пользователь увидит при декодировании битового потока 551. Таким образом, кодер может просмотреть выходные обрезанные изображения 559, чтобы убедиться, что кодирование является удовлетворительным.
[00112] HRD 500 инициализируется на основе параметров HRD в битовом потоке 551. Например, HRD 500 может считывать параметры HRD из сообщений VPS, SPS и/или SEI. Затем HRD 500 может выполнять операции проверки соответствия битового потока 551 на основе информации в таких параметрах HRD. В качестве конкретного примера, HRD 500 может определять один или несколько графиков доставки CPB из параметров HRD. График доставки определяет время доставки видеоданных в и/или из ячейки памяти, такой как CPB и/или DPB. Следовательно, график доставки CPB определяет время доставки AU, DU 553 и/или изображений в/из CPB 543. Следует отметить, что HRD 500 может использовать графики доставки DPB для DPB 547, которые аналогичны графикам доставки CPB.
[00113] Видео может быть закодировано в различные уровни и/или OLS для использования декодерами с различными уровнями аппаратных возможностей, а также для различных сетевых условий. Графики доставки CPB выбраны с учетом этих проблем. Соответственно, битовые подпотоки более высокого уровня назначаются для оптимальных аппаратных и сетевых условий, и, следовательно, более высокие уровни могут получать один или несколько графиков доставки CPB, которые используют большой объем памяти в CPB 543 и короткие задержки для передач DU 553 к DPB. 547. Аналогичным образом битовые субпотоки нижнего уровня предназначены для ограниченных аппаратных возможностей декодера и/или плохих сетевых условий. Следовательно, нижние уровни могут получать один или несколько графиков доставки CPB, которые используют небольшой объем памяти в CPB 543 и более длительные задержки для передач DU 553 к DPB 547. Затем OLS, уровни, подуровни или их комбинации могут быть протестированы в соответствии с соответствующим графиком доставки, чтобы гарантировать, что результирующий битовый подпоток может быть правильно декодирован в условиях, которые ожидаются для битового подпотока. Соответственно, параметры HRD в битовом потоке 551 могут указывать графики доставки CPB, а также включать в себя достаточно данных, позволяющих HRD 500 определять графики доставки CPB и сопоставлять графики доставки CPB с соответствующими OLS, уровнями и/или подуровнями.
[00114] Фиг. 6 представляет собой схематическую диаграмму, иллюстрирующую примерную многоуровневую видеопоследовательность 600. Многоуровневая видеопоследовательность 600 может кодироваться кодером, таким как система 200 кодека и/или кодер 300, и декодироваться декодером, таким как система 200 кодека и/или декодер 400, например, в соответствии со способом 100. Кроме того, многоуровневая видеопоследовательность 600 может быть проверена на соответствие стандарту с помощью HRD, такого как HRD 500. Многоуровневая видеопоследовательность 600 включена для изображения примерного применения уровней в закодированной видеопоследовательности. Многоуровневая видеопоследовательность 600 представляет собой любую видеопоследовательность, которая использует множество уровней, таких как уровень N 631 и уровень N+1 632.
[00115] Например, многоуровневая видеопоследовательность 600 может использовать межуровневое предсказание 621. Межуровневое предсказание 621 применяется между изображениями 611, 612, 613 и 614 и изображениями 615, 616, 617 и 618 в разных уровнях. В показанном примере изображения 611, 612, 613 и 614 являются частью уровня N+1 632, а изображения 615, 616, 617 и 618 являются частью уровня N 631. Уровень, такой как уровень N 631 и/или уровень N+1 632, представляет собой группу изображений, которые все связаны с аналогичным значением характеристики, такой как аналогичный размер, качество, разрешение, отношение сигнал/шум, возможности, так далее. Формально уровень может быть определен как набор единиц VCL NAL, которые совместно используют один и тот же ID уровня и связанные единицы не-VCL NAL. Единица VCL NAL представляет собой единицу NAL, закодированную для содержания видеоданных, таких как закодированный слайс изображения. Единица не-VCL NAL, представляет собой единицу NAL, которая содержит не видеоданные, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки соответствия или другие операции.
[00116] В показанном примере уровень N+1 632 связан с большим размером изображения, чем уровень N 631. Соответственно, изображения 611, 612, 613 и 614 в уровне N+1 632 имеют больший размер изображения (например, большую высоту и ширину и, следовательно, больше выборок), чем изображения 615, 616, 617 и 618 в уровне N 631 в этом пример. Однако такие изображения могут быть разделены между уровнем N+1 632 и уровнем N 631 по другим характеристикам. Хотя показаны только два уровня, уровень N+1 632 и уровень N 631, набор изображений может быть разделен на любое количество уровней на основе связанных характеристик. Уровень N+1 632 и уровень N 631 также могут обозначаться посредством ID уровня. ID уровня - это элемент данных, который связан с изображением и указывает, что изображение является частью указанного уровня. Соответственно, каждое изображение 611-618 может быть связано с соответствующим посредством ID уровня, чтобы указать, какой уровень N+1 632 или уровень N 631 включает в себя соответствующее изображение. Например, ID уровня может включать в себя ID уровня заголовка единицы NAL (nuh_layer_id), который представляет собой синтаксический элемент, указывающий ID уровня, который включает в себя единицу NAL (например, который включает в себя слайсы и/или параметры изображений в уровне). Уровень, связанный с более низким качеством/меньшим размером изображения/меньшим размером битового потока, такой как уровень N 631, обычно назначается идентификатором нижнего уровня и называется нижним уровнем. Кроме того, уровень, связанный с более высоким качеством/большим размером изображения/большим размером битового потока, такой как уровень N+1 632, обычно назначается идентификатором более высокого уровня и упоминается как более высокий уровень.
[00117] Изображения 611-618 в разных уровнях 631-632 сконфигурированы для отображения в альтернативном варианте. В качестве конкретного примера, декодер может декодировать и отображать изображение 615 в текущее время отображения, если требуется изображение меньшего размера, или декодер может декодировать и отображать изображение 611 в текущее время отображения, если требуется изображение большего размера. Таким образом, изображения 611-614 на более высоком уровне N+1 632 содержат по существу те же данные изображения, что и соответствующие изображения 615-618 на более низком уровне N 631 (несмотря на разницу в размере изображения). В частности, изображение 611 содержит по существу те же данные изображения, что и изображение 615, изображение 612 содержит по существу те же данные изображения, что и изображение 616, и т. д.
[00118] Изображения 611-618 могут быть закодированы посредством ссылки на другие изображения 611-618 в том же уровне N 631 или N+1 632. Кодирование изображения со ссылкой на другое изображение в том же уровне приводит к межкадровому предсказанию 623. Межкадровое предсказание 623 изображено сплошными стрелками. Например, изображение 613 может быть закодировано с использованием межкадрового предсказания 623 с использованием одного или двух изображений 611, 612 и/или 614 на уровне N+1 632 в качестве эталонных, где одно изображение используется для однонаправленного межкадрового предсказания и/или или два изображения используются для двунаправленного межкадрового предсказания. Кроме того, изображение 617 может быть закодировано с использованием межкадрового предсказания 623 с использованием одного или двух изображений 615, 616 и/или 618 на уровне N 631 в качестве эталонных, где одно изображение используется для однонаправленного межкадрового предсказания и/или два изображения используются для двунаправленного межкадрового предсказания. Когда изображение используется в качестве опорного для другого изображения на том же уровне при выполнении межкадрового предсказания 623, изображение может упоминаться как опорное изображение. Например, изображение 612 может быть опорным изображением, используемым для кодирования изображения 613 в соответствии с межкадровым предсказанием 623. Межкадровое предсказание 623 также может называться внутриуровневым предсказанием в многоуровневом контексте. Таким образом, межкадровое предсказание 623 представляет собой механизм кодирования выборок текущего изображения посредством ссылки на указанные выборки в опорном изображении, которое отличается от текущего изображения, где опорное изображение и текущее изображение находятся на одном уровне.
[00119] Изображения 611-618 также могут быть закодированы посредством ссылки на другие изображения 611-618 в других уровнях. Этот процесс известен как межуровневое предсказание 621 и изображен пунктирными стрелками. Межуровневое предсказание 621 представляет собой механизм кодирования выборок текущего изображения посредством ссылки на указанные выборки в опорном изображении, где текущее изображение и опорное изображение находятся на разных уровнях и, следовательно, имеют разные ID уровня. Например, изображение на нижнем уровне N 631 может использоваться в качестве опорного изображения для кодирования соответствующего изображения на более высоком уровне N+1 632. В качестве конкретного примера изображение 611 может быть закодировано со ссылкой на изображение 615 в соответствии с межуровневым предсказанием 621. В таком случае изображение 615 используется как межуровневое опорное изображение. Межуровневое опорное изображение является опорным изображением, используемым для межуровневого предсказания 621. В большинстве случаев межуровневое предсказание 621 ограничено таким образом, что текущее изображение, такое как изображение 611, может использовать только межуровневое опорное изображение (изображения), которые включены в одну и ту же AU 627 и находятся на более низком уровне, например как на изображении 615. Когда доступно несколько уровней (например, более двух), межуровневое предсказание 621 может кодировать/декодировать текущее изображение на основе нескольких межуровневых опорных изображений на более низких уровнях, чем текущее изображение.
[00120] Видеокодер может использовать многоуровневую видеопоследовательность 600 для кодирования изображений 611-618 посредством множества различных комбинаций и/или перестановок межкадрового предсказания 623 и межуровневого предсказания 621. Например, изображение 615 может быть закодировано в соответствии с внутрикадровым предсказанием. Затем изображения 616-618 могут быть закодированы в соответствии с межкадровым предсказанием 623 с использованием изображения 615 в качестве опорного изображения. Кроме того, изображение 611 может быть закодировано в соответствии с межуровневым предсказанием 621 с использованием изображения 615 в качестве межуровневого опорного изображения. Затем изображения 612-614 могут быть закодированы в соответствии с межкадровым предсказанием 623 с использованием изображения 611 в качестве опорного изображения. Таким образом, опорное изображение может служить как одноуровневым опорным изображением, так и межуровневым опорным изображением для различных механизмов кодирования. Путем кодирования N+1 632 изображений более высокого уровня на основе N 631 изображений более низкого уровня, более высокий уровень N+1 632 может избежать использования внутрикадрового предсказания, которое имеет гораздо более низкую эффективность кодирования, чем межкадровое предсказание 623 и межуровневое предсказание 621. Как таковая, низкая эффективность кодирования внутрикадрового предсказания может быть ограничена изображениями самого маленького/самого низкого качества и, следовательно, ограничена кодированием наименьшего количества видеоданных. Изображения, используемые в качестве опорных изображений и/или межуровневых опорных изображений, могут быть указаны в записях списка(ов) опорных изображений, содержащихся в структуре списка опорных изображений.
[00121] Изображения 611-618 также могут быть включены в единицы доступа (AU) 627. AU 627 представляет собой набор кодированных изображений, которые включены в разные уровни и связаны с одним и тем же временем вывода во время декодирования. Соответственно, кодированные изображения в одной и той же AU 627 запланированы для вывода из DPB в декодер в одно и то же время. Например, изображения 614 и 618 находятся в одной и той же AU 627. Изображения 613 и 617 находятся в другой AU 627, отличной от изображений 614 и 618. Изображения 614 и 618 в одной и той же AU 627 могут отображаться альтернативно. Например, изображение 618 может отображаться, когда требуется небольшой размер изображения, а изображение 614 может отображаться, когда требуется большой размер изображения. Когда требуется большой размер изображения, выводится изображение 614, а изображение 618 используется только для межуровневого предсказания 621. В этом случае изображение 618 отбрасывается без вывода после завершения межуровневого предсказания 621.
[00122] AU 627 может быть дополнительно разделена на один или более блоков изображения (PU) 628. PU 628 является подмножеством AU 627, которое содержит одиночное кодированное изображение. PU 628 может быть формально определен как набор единиц NAL, которые связаны друг с другом в соответствии с заданным правилом классификации, являются последовательными в порядке декодирования и содержат ровно одно кодированное изображение. Следует отметить, что PU 628 может называться блоком декодирования (DU) при обсуждении с точки зрения HRD и/или связанных с ним тестов на соответствие.
[00123] Следует также отметить, что изображения 611-618 и, следовательно, AU 627 и PU 628 связаны с временным идентификатором (TemporalId) 629. TemporalId 629 представляет собой идентификатор, который указывает относительное положение единицы NAL в видеопоследовательности. Изображения и/или PU 628 в одной и той же AU 627 связаны с одним и тем же значением TemporalId 629. Например, первая AU 627 в последовательности может включать в себя TemporalId 629, равный нулю, а последующие AU 627 включают в себя последовательно увеличивающиеся TemporalId 629. Единицы не-VCL NAL, также могут быть связаны с TemporalIds 629. Например, набор параметров может быть включен в AU 627 и может быть связан с одним или несколькими изображениями в AU 627. В таком случае TemporalId 629 набора параметров может быть меньше или равен TemporalId 629 у AU 627.
[00124] Фиг. 7 представляет собой схематическую диаграмму, иллюстрирующую пример битового потока 700. Например, битовый поток 700 может быть сформирован системой 200 кодека и/или кодером 300 для декодирования системой 200 кодека и/или декодером 400 согласно способу 100. Кроме того, битовый поток 700 может включать в себя многоуровневую видеопоследовательность 600. Кроме того, битовый поток 700 может включать в себя различные параметры для управления работой HRD, такого как HRD 500. На основе таких параметров HRD может проверить битовый поток 700 на соответствие стандартам перед передачей в декодер для декодирования.
[00125] Битовый поток 700 включает в себя VPS 711, один или несколько SPS 713, множество наборов параметров изображения (PPS) 715, множество наборов параметров адаптации (APS) 716, множество заголовков 718 изображения, множество заголовков 717 слайсов, данные 720 изображения и сообщения 719 SEI. VPS 711 содержит данные, относящиеся ко всему битовому потоку 700. Например, VPS 711 может содержать связанные с данными OLS, уровни и/или подуровни, используемые в битовом потоке 700. SPS 713 содержит данные последовательности, общие для всех изображений в кодированной видеопоследовательности, содержащейся в битовом потоке 700. Например, каждый уровень может содержать одну или более кодированных видеопоследовательностей, и каждая кодированная видеопоследовательность может ссылаться на SPS 713 для соответствующих параметров. Параметры в SPS 713 могут включать размер изображения, битовую глубину, параметры инструмента кодирования, ограничения скорости передачи и т. д. Следует отметить, что хотя каждая последовательность относится к SPS 713, в некоторых примерах один SPS 713 может содержать данные для нескольких последовательностей. PPS 715 содержит параметры, которые применяются ко всему изображению. Следовательно, каждое изображение в видеопоследовательности может относиться к PPS 715. Следует отметить, что хотя каждое изображение относится к PPS 715, в некоторых примерах один PPS 715 может содержать данные для нескольких изображений. Например, несколько схожих изображений могут быть кодированы согласно схожим параметрам. В таком случае один PPS 715 может содержать данные для таких схожих изображений. PPS 715 может указывать инструменты кодирования, доступные для слайсов в соответствующих изображениях, параметры квантования, смещения и т. д. PPS 715 может быть связан с конкретным набором изображений 725, а битовый поток 700 может включать в себя множество PPS 715. Таким образом, каждый PPS 715 может включать в себя PPS ID 732, который идентифицирует PPS 715 для ссылки другими синтаксическими элементами. В некоторых примерах PPS ID 732 может храниться в синтаксическом элементе ID набора параметров изображения PPS (pps_pic_parameter_set_id) в PPS 715.
[00126] APS 716 представляет собой синтаксическую структуру, содержащую синтаксические элементы/параметры, которые применяются к одному или нескольким слайсам 727 в одном или нескольких изображениях 725. Такие корреляции могут быть определены на основе синтаксических элементов, обнаруженных в заголовках 717 слайсов, связанных со слайсами 727. Например, APS 716 может применяться по меньшей мере к одному, но менее чем ко всем слайсам 727 на первом изображении 721, по меньшей мере к одному, но менее чем ко всем слайсам 727 на втором изображении 725 и т. д. APS 716 можно разделить на несколько типов на основе параметров, содержащихся в APS 716. Такие типы могут включать в себя адаптивный контурный фильтр (ALF) APS, отображение яркости с масштабированием цветности (LMCS) APS и список масштабирования (Scaling) APS. ALF представляет собой адаптивный блочный фильтр, который включает в себя передаточную функцию, управляемую переменными параметрами, и использует обратную связь от контура обратной связи для уточнения передаточной функции. Кроме того, ALF используется для исправления артефактов кодирования (например, ошибок), которые возникают в результате кодирования на основе блоков, таких как артефакты размытия и звона. Таким образом, параметры ALF, включенные в ALF APS, могут включать в себя параметры, выбранные кодером, чтобы заставить ALF удалять артефакты блочного кодирования во время декодирования в декодере. LMCS - это процесс, применяемый как часть процесса декодирования, который сопоставляет образцы яркости с конкретными значениями, а в некоторых случаях также применяет операцию масштабирования к значениям образцов цветности. Инструмент LMCS может изменять форму компонентов яркости на основе сопоставлений с соответствующими компонентами цветности, чтобы уменьшить искажение скорости. Таким образом, LMCS APS включает в себя параметры, выбранные кодером, чтобы инструмент LMCS изменил форму компонентов яркости. Список масштабирования APS содержит параметры инструмента кодирования, связанные с матрицами квантования, используемыми заданными фильтрами. Таким образом, APS 716 может содержать параметры, используемые для применения различных фильтров к кодированным слайсам 727 во время проверки соответствия в HRD и/или при декодировании в декодере. APS 716 может быть связан с конкретным набором слайсов 727, а битовый поток 700 может включать в себя множество APS 716. Таким образом, каждый APS 716 может включать в себя APS ID 731, который идентифицирует APS 716 для ссылки другими синтаксическими элементами. В некоторых примерах APS ID 731 может храниться в синтаксическом элементе ID набора параметров адаптации APS (aps_adaptation_parameter_set_id) в APS 716.
[00127] Заголовок 718 изображения представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всем слайсам 727 кодированного изображения 725. Например, заголовок 718 изображения может содержать информацию о подсчете порядка изображения, данные опорного изображения, данные, относящиеся к изображениям внутри точки произвольного доступа (IRAP), данные, относящиеся к применению фильтра для изображения 725, и т. д. PU может содержать ровно один заголовок 718 изображения и ровно одно изображение 725. Таким образом, битовый поток 700 может включать ровно один заголовок 718 изображения на изображение 725. Заголовок 718 изображения также может указывать PPS ID 732, который указывает, какой PPS 715 содержит параметры, относящиеся к изображению 725, которое соответствует заголовку 718 изображения. В конкретном примере PPS ID 732 может храниться в заголовке 718 изображения в качестве ID набора параметров изображения заголовка изображения (PH) (ph_pic_parameter_set_id). Заголовок 718 изображения может также указывать APS ID 731, который указывает, какой APS 716 содержит параметры, относящиеся к изображению 725, которое соответствует заголовку 718 изображения. В конкретном примере APS ID 731 может храниться в заголовке 718 изображения в качестве APS ID списка масштабирования PH (ph_scaling_list_aps_id) или APS ID PH LMCS (ph_lmcs_aps_id), в зависимости от примера.
[00128] Заголовок 717 слайса содержит параметры, характерные для каждого слайса 727 в изображении 725. 717. Следовательно, может быть один заголовок 727 слайса на слайс. Заголовок 717 слайса может содержать информацию о типе слайса, информацию о фильтрации, весовые коэффициенты предсказания, точки входа тайлов, параметры деблокирования и т. д. В некоторых случаях синтаксические элементы могут быть одинаковыми для всех слайсов 727 в изображении 725. Чтобы уменьшить избыточность, заголовок 718 изображения и заголовок 717 слайса могут совместно использовать определенные типы информации. Например, некоторые параметры (например, параметры фильтрации) могут быть включены в заголовок 718 изображения, когда они применяются ко всему изображению 725, или включены в заголовок 717 слайса, когда они применяются к группе слайсов 727, которые являются подмножеством всего изображения 725. Заголовок 717 слайса также может указывать APS ID 731, который указывает, какой APS 716 содержит параметры, относящиеся к слайсу 727, который соответствует заголовку 717 слайса. В конкретном примере APS ID 731 может храниться в заголовке 717 слайса в качестве APS ALF ID заголовка слайса (SH) для компонентов яркости (sh_alf_aps_id_luma) или SH ALF APS ID для компонентов цветности (sh_alf_aps_id_chroma), в зависимости от примера.
[00129] Данные 720 изображения содержат видеоданные, закодированные согласно межкадровому предсказанию и/или внутрикадровому предсказанию, а также соответствующие преобразованным и квантованным остаточным данным. Например, данные 720 изображения могут включать уровни 723, изображения 725 и/или слайсы 727. Уровень 723 представляет собой набор единиц VCL NAL, которые совместно используют указанную характеристику (например, общее разрешение, частоту кадров, размер изображения и т. д.), как указано посредством ID уровня, таким как nuh_layer_id 729, и связанные единицы не-VCL NAL. Например, уровень 723 может включать в себя набор изображений 725, которые имеют один и тот же nuh_layer_id 729. Уровень 723 может быть по существу подобен уровням 631 и/или 632. nuh_layer_id 729 представляет собой синтаксический элемент, который указывает идентификатор уровня 723, который включает в себя по меньшей мере одна единица NAL. Например, уровень 723 самого низкого качества, известный как базовый уровень, может включать в себя самое низкое значение nuh_layer_id 729 с возрастающими значениями nuh_layer_id 729 для уровней 723 более высокого качества. Следовательно, нижний уровень 723 - это уровень 723 с меньшим значением nuh_layer_id 729, а более высокий уровень - это уровень 723 с большим значением nuh_layer_id 729.
[00130] Изображение 725 - это массив дискретных выборок яркости и/или массив дискретных выборок цветности, которые создают кадр или. Например, изображение 725 представляет собой закодированное изображение, которое может быть выведено для отображения или использовано для поддержки кодирования другого изображения (изображений) 725 для вывода. Изображение 725 содержит один или более слайсов 727. Слайс 727 может быть определен как целое число полных тайлов или целое число последовательных строк полной единицы дерева кодирования (CTU) (например, в пределах тайла) изображения 725, которые содержатся исключительно в одном элементе NAL. Слайсы 727 дополнительно делятся на CTU и/или блоки дерева кодирования (CTB). CTU - это группа выборок заранее определенного размера, которые могут быть разделены деревом кодирования. CTB является подмножеством CTU и содержит компоненты яркости или компоненты цветности CTU. CTU/CTB дополнительно разбиваются на блоки кодирования на основе деревьев кодирования. Затем блоки кодирования можно кодировать/декодировать согласно механизмам предсказания.
[00131] Сообщение 719 SEI представляет собой синтаксическую структуру с заданной семантикой, которая передает информацию, которая не требуется процессу декодирования для определения значений выборок в декодированных изображениях. Например, сообщения 719 SEI могут содержать данные для поддержки процессов HRD или другие вспомогательные данные, которые не имеют прямого отношения к декодированию битового потока 700 в декодере.
[00132] Битовый поток 700 может быть закодирован как последовательность единиц NAL. Единица NAL представляет собой контейнер для видеоданных и/или вспомогательного синтаксиса. Единица NAL может быть блоком 747 VCL NAL или единицей не-VCL NAL. Блок 747 VCL NAL представляет собой единицу NAL, закодированную для содержания видеоданных. В частности, единица 747 VCL NAL содержит слайс 727 и связанный с ним заголовок 717 слайса. Единица не-VCL NAL, представляет собой единицу NAL, которая содержит не видеоданные, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки соответствия или другие операции. Единицы не-VCL NAL могут включать в себя единицу 741 VPS NAL, единицу 743 SPS NAL, единицу 745 PPS NAL, единицу 746 APS NAL, единицу 748 PH NAL и единицу 749 SEI NAL, которые содержат VPS 711, SPS 713, единицу PPS. 715, APS 716, заголовок 718 изображения и сообщение 719 SEI соответственно. Следует отметить, что предыдущий список единиц NAL является примерным и не исчерпывающим.
[00133] Как отмечено выше, изображения 725 в разных уровнях 723 имеют разные характеристики. Например, изображения 725 в разных уровнях 723 могут быть закодированы с разными размерами, разрешением, частотой кадров и т. д. Это позволяет кодеру передавать различные уровни 723 в декодер в зависимости от ограничений на стороне декодера. Для выполнения этой функции кодер может кодировать все уровни 723 в один битовый поток 700. По запросу кодер (или слайсер на сервере размещения контента) может выполнять процесс извлечения битового подпотока для удаления лишней информации из битового потока 700 перед передачей. Результатом является извлеченный битовый поток 700, который содержит только данные для декодирования запрошенного уровня (уровней) 723. Этот процесс может быть выполнен с использованием единиц NAL. В частности, nuh_layer_id 729 включен в каждый из единиц NAL. Следовательно, nuh_layer_id 729 включен в единицу 741 VPS NAL, единицу 743 SPS NAL, единицу 745 PPS NAL, единицу 746 APS NAL, единицу 748 PH NAL, единицу 747 VCL NAL и единицу 749 SEI NAL. Процесс извлечения битового подпотока получает целевой диапазон, который описывает ID запрошенных уровней 723. Процесс извлечения битового подпотока может удалить все единицы NAL с nuh_layer_id 729, которые находятся за пределами целевого диапазона. Это оставляет только единицы NAL с nuh_layer_id 729 в пределах целевого диапазона, остающиеся в извлеченном битовом потоке 700 для передачи в декодер. Проблема с этим подходом заключается в том, что некоторые единицы NAL относятся ко многим уровням 723. Например, блок 745 PPS NAL, содержащий PPS 715, и блок 746 APS NAL, содержащий APS 716, могут содержать данные, относящиеся к одному или многим уровням 723. Если nuh_layer_id 729 блока 745 PPS NAL или блока 746 APS NAL находится за пределами целевого диапазона, то PPS 715 и/или APS 716 могут быть удалены посредством процесса извлечения битового подпотока. Когда это происходит, PPS 715 и/или APS 716 не передаются в декодер. В этом случае у декодера недостаточно данных для декодирования извлеченного битового потока 700.
[00134] Соответственно, битовый поток 700 использует ограничение на PPS 715 и APS 716, чтобы гарантировать, что блок 745 PPS NAL и блок 746 APS NAL не будут ошибочно удалены из битового потока 700 во время процесса извлечения битового подпотока. В частности, PPS 715 и APS 716 упоминаются заголовком 718 изображения и/или заголовком 717 слайса посредством использования PPS ID 732 и APS ID 731 соответственно. PPS 715 и/или блок 745 PPS NAL ограничены включением в себя значения nuh_layer_id 729, которое меньше или равно значению nuh_layer_id 729 всех блоков 747 VCL NAL, которые относятся к PPS 715 в блок 745 PPS NAL. Процесс извлечения битового подпотока может работать с группой уровней на основе запроса значения nuh_layer_id 729 или меньше. Следовательно, ограничение гарантирует, что блок 745 PPS NAL включает в себя значение nuh_layer_id 729, которое содержится в запрошенном диапазоне, когда PPS 715 связан с блоком 747 VCL NAL со значением nuh_layer_id 729 в запрошенном диапазоне. Соответственно, конкретная единица 747 VCL NAL не относится к единице 745 PPS NAL, если значение nuh_layer_id 729 блока 745 PPS NAL не меньше и не равно значению nuh_layer_id 729 конкретной единицы 747 VCL NAL. В конкретной реализации nuh_layer_id 729 PPS 715 должен быть меньше или равен nuh_layer_id 729 в блоках 747 VCL NAL, связанных с изображением 725, когда ph_pic_parameter_set_id в заголовке 718 изображения установлен равным pps_pic_parameter_set_id в PPS. 715.
[00135] Аналогичным образом, APS 716 и/или блок 746 APS NAL ограничены включением в себя значения nuh_layer_id 729, которое меньше или равно значению nuh_layer_id 729 всех блоков 747 VCL NAL, которые относятся к APS 716 в единице 746 APS NAL. Процесс извлечения битового подпотока может работать с группой уровней на основе запроса значения nuh_layer_id 729 или меньше. Следовательно, ограничение гарантирует, что блок 746 APS NAL включает в себя значение nuh_layer_id 729, которое содержится в запрошенном диапазоне, когда APS 716 связан с блоком 747 VCL NAL со значением nuh_layer_id 729 в запрошенном диапазоне. Соответственно, конкретная единица 747 VCL NAL не относится к единице 746 APS NAL, если значение nuh_layer_id 729 блока 746 APS NAL не меньше и не равно значению nuh_layer_id 729 конкретной единицы 747 VCL NAL. В конкретной реализации nuh_layer_id 729 APS 716 должен быть меньше или равен nuh_layer_id 729 в блоке 747 VCL NAL, связанном со слайсом 727, когда ph_scaling_list_aps_id, ph_lmcs_aps_id, sh_alf_aps_id_luma и/или sh_alf_aps_id_chroma в заголовок 718 изображения и/или заголовок 717 слайса устанавливается равным aps_adaptation_parameter_set_id в APS 716.
[00136] Путем обеспечения того, чтобы блок 745 PPS NAL и блок 746 APS NAL имели меньший nuh_layer_id 729, чем все единицы 747 VCL NAL, относящиеся к ним, PPS 715 и APS 716 не могут быть удалены процессом извлечения битового подпотока, который также сохраняет единицу 747 VCL NAL, относящаяся к PPS/APS. Следовательно, ошибка исключена. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования повышается за счет правильного удаления ненужных единиц NAL, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.
[00137] Предшествующая информация теперь описывается более подробно ниже. Многоуровневое кодирование видео также называют масштабируемым кодированием видео или масштабируемым кодированием видео. Масштабируемость при кодировании видео может поддерживаться с помощью методов многоуровневого кодирования. Многоуровневый битовый поток содержит базовый уровень (Base Layer, BL) и один или несколько уровней улучшения (enhancement layer, EL). Примеры масштабируемости включают пространственную масштабируемость, масштабируемость качества/отношения сигнал-шум (Signal To Noise Ratio, SNR), масштабируемость для нескольких представлений, масштабируемость частоты кадров и т. д. Когда используется метод многоуровневого кодирования, изображение или его часть могут быть закодированы без использования опорного изображения (внутрикадрового предсказание), могут быть закодированы путем обращения к опорным изображениям, которые находятся на том же уровне (межкадровое предсказание), и /или может быть закодировано посредством ссылки на опорные изображения, которые находятся в другом(других) уровне(уровнях) (межуровневое предсказание). Опорное изображение, используемое для межуровневого предсказания текущего изображения, называется межуровневым опорным изображением (Inter-Layer Reference Picture, ILRP). Фиг. 6 иллюстрирует пример многоуровневого кодирования для пространственной масштабируемости, в которой изображения на разных уровнях имеют разное разрешение.
[00138] Некоторые семейства кодирования видео обеспечивают поддержку масштабируемости в отдельном(ых) профиле(ях) от профиля(ов) для одноуровневого кодирования. Масштабируемое кодирование видео (Scalable Video Coding, SVC) - это масштабируемое расширение расширенного кодирования видео (Advanced Video Coding, AVC), обеспечивающее поддержку пространственной, временной и качественной масштабируемости. Для SVC в каждом макроблоке (macroblock, MB) в изображениях EL сигнализируется флаг, чтобы указать, предсказывается ли EL MB с использованием совмещенного блока из нижнего уровня. Предсказание из совмещенного блока может включать в себя текстуру, векторы движения и/или режимы кодирования. Реализации SVC не могут напрямую повторно использовать немодифицированные реализации AVC в своей конструкции. Синтаксис макроблока SVC EL и процесс декодирования отличаются от синтаксиса и процесса декодирования AVC.
[00139] Масштабируемый HEVC (SHVC) - это расширение HEVC, обеспечивающее поддержку пространственной масштабируемости и масштабируемости качества. Multiview HEVC (MV-HEVC) - это расширение HEVC, обеспечивающее поддержку масштабируемости для нескольких представлений. 3D HEVC (3D-HEVC) - это расширение HEVC, обеспечивающее поддержку кодирования 3D-видео, которое является более совершенным и эффективным, чем MV-HEVC. Временная масштабируемость может быть включена как неотъемлемая часть одноуровневого кодека HEVC. В многоуровневом расширении HEVC декодированные изображения, используемые для межуровневого предсказания, поступают только из одной и той же AU и обрабатываются как долгосрочные опорные изображения (LTRP). Таким изображениям назначаются опорные индексы в списке (списках) опорных изображений вместе с другими временными опорными изображениями в текущем уровне. Межуровневое предсказание (Inter-Layer Prediction, ILP) достигается на уровне единицы предсказания путем установки значения опорного индекса для ссылки на межуровневое опорное изображение (изображения) в списке (списках) опорных изображений. Пространственная масштабируемость изменяет опорное изображение или его часть, когда ILRP имеет пространственное разрешение, отличное от текущего кодируемого или декодируемого изображения. Передискретизация опорного изображения может быть реализована либо на уровне изображения, либо на уровне блока кодирования.
[00140] VVC также может поддерживать многоуровневое кодирование видео. Битовый поток VVC может включать в себя несколько уровней. Все уровни могут быть независимыми друг от друга. Например, каждый уровень может быть закодирован без использования межуровневого предсказания. В этом случае уровни также называются уровнями одновременной передачи. В некоторых случаях некоторые уровни кодируются с использованием ILP. Флаг в VPS может указывать, являются ли уровни уровнями одновременной передачи или некоторые уровни используют ILP. Когда некоторые уровни используют ILP, отношения зависимости уровней между уровнями также сигнализируются в VPS. В отличие от SHVC и MV-HEVC, VVC может не указывать OLS. OLS включает в себя указанный набор уровней, где один или несколько уровней в наборе уровней указаны как выходные уровни. Выходной уровень - это выходной уровень OLS. В некоторых реализациях VVC для декодирования и вывода может быть выбран только один уровень, когда уровни являются уровнями одновременной передачи. В некоторых реализациях VVC весь битовый поток, включая все уровни, указывается для декодирования, когда любой уровень использует ILP. Кроме того, определенные уровни среди уровней указываются как выходные уровни. Выходные уровни могут быть указаны как только самый высокий уровень, все уровни или самый высокий уровень плюс набор указанных нижних уровней.
[00141] Предыдущие аспекты содержат определенные проблемы. Например, значения nuh_layer_id для блоков SPS, PPS и APS NAL не могут быть должным образом ограничены. Кроме того, значение TemporalId для единиц SEI NAL может быть ограничено должным образом. Кроме того, параметр NoOutputOfPriorPicsFlag может быть задан неправильно, если включена передискретизация опорного изображения, а изображения в CLVS имеют разное пространственное разрешение. Кроме того, в некоторых системах кодирования видео суффиксные сообщения SEI не могут содержаться в сообщении SEI с масштабируемой вложенностью. В качестве другого примера, период буферизации, синхронизация изображения и сообщения SEI с информацией о блоке декодирования могут включать в себя зависимости синтаксического анализа от VPS и/или SPS.
[00142] В общем, это раскрытие описывает подходы к улучшению кодирования видео. Описания методов основаны на VVC. Однако методы также применимы к многоуровневому кодированию видео, основанному на других спецификациях видеокодека.
[00143] Одна или несколько из вышеупомянутых проблем могут быть решены следующим образом. Значения nuh_layer_id для блоков SPS, PPS и APS NAL должным образом ограничены здесь. Значение TemporalId для единиц SEI NAL здесь должным образом ограничено. Параметр NoOutputOfPriorPicsFlag правильно указан, когда включена передискретизация опорного изображения и изображения в CLVS имеют разное пространственное разрешение. Сообщения SEI с суффиксом могут содержаться в сообщении SEI с масштабируемой вложенностью. Зависимости синтаксического анализа сообщений BP, PT и DUI SEI от VPS или SPS могут быть удалены путем повторения синтаксического элемента decoding_unit_hrd_params_present_flag в синтаксисе сообщения BP SEI, синтаксических элементов decoding_unit_hrd_params_present_flag и decoding_unit_cpb_params_in_pic_timing_sei_flag в синтаксисе сообщения PT SEI и синтаксического элемента decoding_unit_cpb_params_in_pic_timing_sei_flag в синтаксисе сообщения DUI SEI.
[00144] Пример реализации предыдущих механизмов выглядит следующим образом. Пример общей семантики единицы NAL выглядит следующим образом.
[00145] Значение nuh_temporal_id_plus1 минус 1 указывает временной идентификатор для единицы NAL. Значение nuh_temporal_id_plus1 не должно быть равно нулю. Переменная TemporalId может быть получена следующим образом:
TemporalId=nuh_temporal_id_plus1-1
Когда nal_unit_type находится в диапазоне от IDR_W_RADL до RSV_IRAP_13 включительно, TemporalId должен быть равен нулю. Когда nal_unit_type равен STSA_NUT, TemporalId не должен быть равен нулю.
[00146] Значение TemporalId должно быть одинаковым для всех единиц VCL NAL единицы доступа. Значение TemporalId кодированного изображения, единицы доступа уровня или единицы доступа может быть значением TemporalId единиц VCL NAL кодированного изображения, единицы доступа уровня или единицы доступа. Значение TemporalId представления подуровня может быть наибольшим значением TemporalId среди всех единиц VCL NAL в представлении подуровня.
[00147] Значение TemporalId для единиц не-VCL NAL, ограничено следующим образом. Если nal_unit_type равен DPS_NUT, VPS_NUT или SPS_NUT, TemporalId равен нулю, а TemporalId единицы доступа, содержащей единицу NAL, должен быть равен нулю. В противном случае, если nal_unit_type равен EOS_NUT или EOB_NUT, TemporalId должен быть равен нулю. В противном случае, если nal_unit_type равен AUD_NUT, FD_NUT, PREFIX_SEI_NUT или SUFFIX_SEI_NUT, TemporalId должен быть равен TemporalId единицы доступа, содержащей единицу NAL. В противном случае, когда nal_unit_type равен PPS_NUT или APS_NUT, TemporalId должен быть больше или равен TemporalId единицы доступа, содержащей единицу NAL. Когда единица NAL является единицей не-VCL NAL, значение TemporalId должно быть равно минимальному значению значений TemporalId всех единиц доступа, к которым применяется единица не-VCL NAL. Когда nal_unit_type равен PPS_NUT или APS_NUT, TemporalId может быть больше или равен TemporalId содержащей единицы доступа. Это связано с тем, что все PPS и APS могут быть включены в начало битового потока. Кроме того, первое кодированное изображение имеет TemporalId, равный нулю.
[00148] Пример семантики RBSP набора параметров последовательности выглядит следующим образом. RBSP SPS должен быть доступен для процесса декодирования до обращения к нему. SPS может быть включен по крайней мере в одну единицу доступа с TemporalId, равным нулю, или предоставлен через внешний механизм. Единица SPS NAL, содержащая SPS, может быть ограничена, чтобы иметь nuh_layer_id, равный наименьшему значению nuh_layer_id единиц PPS NAL, которые относятся к SPS.
[00149] Пример семантики RBSP набора параметров изображения выглядит следующим образом. RBSP PPS должен быть доступен для процесса декодирования до обращения к нему. PPS должен быть включен, по крайней мере, в одну единицу доступа с TemporalId, меньшим или равным TemporalId единицы PPS NAL, или предоставляться через внешний механизм. Единица PPS NAL, содержащая RBSP PPS, должна иметь nuh_layer_id, равный наименьшему значению nuh_layer_id единиц NAL кодированного слайса, которые относятся к PPS.
[00150] Пример семантики набора параметров адаптации выглядит следующим образом. Каждый RBSP APS должен быть доступен для процесса декодирования до того, как на него будет сделана ссылка. APS также должен быть включен по крайней мере в одну единицу доступа с TemporalId, меньшим или равным TemporalId единицы NAL кодированного слайса, которая ссылается на APS или предоставляется через внешний механизм. Единица APS NAL может совместно использоваться изображениями/слайсами нескольких уровней. nuh_layer_id единицы APS NAL должен быть равен наименьшему значению nuh_layer_id единиц NAL кодированного слайса, которые относятся к единице APS NAL. В качестве альтернативы единица APS NAL может не совместно использоваться изображениями/слайсами нескольких уровней. nuh_layer_id единицы APS NAL должен быть равен nuh_layer_id слайсов, относящихся к APS.
[00151] В примере удаление изображений из DPB перед декодированием текущего изображения обсуждается следующим образом. Удаление изображений из DPB перед декодированием текущего изображения (но после синтаксического анализа заголовка слайса первого слайса текущего изображения) может происходить во время удаления CPB первой единицы декодирования единицы доступа n (содержащей текущее изображение). Это происходит следующим образом. Инициируется процесс декодирования для построения списка опорных изображений, и инициируется процесс декодирования для маркировки опорных изображений.
[00152] Когда текущее изображение является изображением начала видеопоследовательности кодированного уровня (CLVSS), которое не является нулевым изображением, применяются следующие последовательные этапы. Переменная NoOutputOfPriorPicsFlag выводится для тестируемого декодера следующим образом. Если значение pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 или sps_max_dec_pic_buffering_minus1 [Htid] происходит от SPS отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 или sps_max_dec_pic_buffering_minus1 [Htid], соответственно, полученных из SPS, на который ссылается предыдущее изображение, NoOutputOfPriorPicsFlag может быть установлен в единицу тестируемым декодером, независимо от значения no_output_of_prior_pics_flag. Следует отметить, что хотя установка NoOutputOfPriorPicsFlag, равного no_output_of_prior_pics_flag, может быть предпочтительной в этих условиях, тестируемому декодеру разрешено устанавливать NoOutputOfPriorPicsFlag в единицу в этом случае. В противном случае NoOutputOfPriorPicsFlag может быть установлен равным no_output_of_prior_pics_flag.
[00153] Значение NoOutputOfPriorPicsFlag, полученное для тестируемого декодера, применяется для HRD, так что, когда значение NoOutputOfPriorPicsFlag равно 1, все буферы хранения изображений в DPB очищаются без вывода содержащихся в них изображений, а заполнение DPB равно установить равным нулю. Когда оба следующих условия истинны для любых изображений k в DPB, все такие изображения k в DPB удаляются из DPB. Изображение k помечается как неиспользуемое для ссылки, и изображение k имеет PictureOutputFlag, равный нулю, или соответствующее время вывода DPB меньше или равно времени удаления CPB первого элемента декодирования (обозначаемого как элемент декодирования m) текущего изображения n. Это может произойти, когда DpbOutputTime[k] меньше или равно DuCpbRemovalTime[m]. Для каждого изображения, которое удаляется из DPB, заполнение DPB уменьшается на единицу.
[00154] В примере вывод и удаление изображений из DPB обсуждается следующим образом. Вывод и удаление изображений из DPB перед декодированием текущего изображения (но после разбора заголовка слайса первого слайса текущего изображения) может происходить, когда первая единица декодирования единицы доступа, содержащей текущее изображение, удаляется из CPB и происходит следующим образом. Инициируются процесс декодирования для построения списка опорных изображений и процесс декодирования для маркировки опорных изображений.
[00155] Если текущее изображение является изображением CLVSS, которое не является нулевым изображением, применяются следующие последовательные этапы. Переменная NoOutputOfPriorPicsFlag может быть получена для тестируемого декодера следующим образом. Если значение pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 или sps_max_dec_pic_buffering_minus1 [Htid] получаемый от SPS отличается от значения pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 или sps_max_dec_pic_buffering_minus1 [Htid], соответственно, полученных из SPS, на который ссылается предыдущее изображение, NoOutputOfPriorPicsFlag может быть установлен в единицу тестируемым декодером, независимо от значения no_output_of_prior_pics_flag. Следует отметить, что хотя установка NoOutputOfPriorPicsFlag, равного no_output_of_prior_pics_flag, является предпочтительной в этих условиях, тестируемый декодер может установить NoOutputOfPriorPicsFlag в единицу в этом случае. В противном случае NoOutputOfPriorPicsFlag может быть установлен равным no_output_of_prior_pics_flag.
[00156] Значение NoOutputOfPriorPicsFlag, полученное для тестируемого декодера, может применяться для HRD следующим образом. Если NoOutputOfPriorPicsFlag равен единице, все буферы хранения изображений в DPB очищаются без вывода содержащихся в них изображений, а заполнение DPB устанавливается равным нулю. В противном случае (NoOutputOfPriorPicsFlag равен нулю) все буферы хранения изображений, содержащие изображение, помеченное как не нужное для вывода и неиспользуемое для ссылки, очищаются (без вывода), а все непустые буферы хранения изображений в DPB очищаются повторным вызовом процесс перегрузки, а заполненность DPB устанавливается равной нулю.
[00157] В противном случае (текущее изображение не является изображением CLVSS) все буферы хранения изображений, содержащие изображение, которое помечено как не нужное для вывода и неиспользуемое для ссылки, очищаются (без вывода). Для каждого опустошенного буфера хранения изображений значение заполнения DPB уменьшается на единицу. Когда одно или несколько из следующих условий истинны, процесс скачкообразного изменения инициируется повторно, при дальнейшем уменьшении заполнения DPB на единицу для каждого дополнительного буфера хранения изображений, который очищается до тех пор, пока ни одно из следующих условий не будет истинным. Условием является то, что количество изображений в DPB, помеченных как необходимые для вывода, больше, чем sps_max_num_reorder_pics[Htid]. Другим условием является то, что sps_max_latency_increase_plus1[Htid] не равно нулю и в DPB есть хотя бы одно изображение, помеченное как необходимое для вывода, для которого связанная переменная PicLatencyCount больше или равна SpsMaxLatencyPictures[Htid]. Другим условием является то, что количество изображений в DPB больше или равно SubDpbSize[Htid].
[00158] Ниже приведен пример общего синтаксиса сообщения SEI.
// Specified in ITU-T H.SEI | ISO/IEC 23002-7.
// Specified in ITU-T H.SEI | ISO/IEC 23002-7.
[00159] Ниже приведен пример синтаксиса масштабируемого вложенного сообщения SEI.
[00160] Пример семантики масштабируемого вложенного сообщения SEI выглядит следующим образом. Масштабируемое вложенное сообщение SEI обеспечивает механизм для связывания сообщений SEI с определенными уровнями в контексте определенных OLS или с определенными уровнями вне контекста OLS. Масштабируемое вложенное сообщение SEI содержит одно или несколько сообщений SEI. Сообщения SEI, содержащиеся в сообщении SEI с масштабируемой вложенностью, также называются сообщениями SEI с масштабируемой вложенностью. Соответствие битового потока может потребовать применения следующих ограничений, когда сообщения SEI содержатся в сообщении SEI с масштабируемой вложенностью.
[00161] Сообщение SEI с типом полезной нагрузки (payloadType), равным ста тридцати двум (хэш декодированного изображения) или ста тридцати трем (масштабируемое вложение), не должно содержаться в сообщении SEI с масштабируемым вложением. Если сообщение SEI с масштабируемой вложенностью содержит сообщение SEI с информацией о периоде буферизации, синхронизации изображения или блоке декодирования, сообщение SEI с масштабируемой вложенностью не должно содержать никакого другого сообщения SEI с payloadType, не равным нулю (период буферизации), единице (хронометраж изображения), или сто тридцать (информация о единице декодирования).
[00162] Соответствие битового потока может также потребовать, чтобы следующие ограничения применялись к значению nal_unit_type единицы SEI NAL, содержащей масштабируемое вложенное сообщение SEI. Когда сообщение SEI с масштабируемой вложенностью содержит сообщение SEI с payloadType, равным нулю (период буферизации), единице (синхронизация изображения), ста тридцати (информация о единице декодирования), ста сорока пяти (зависимая индикация RAP) или ста шестидесяти восемь (информация поля кадра), единица SEI NAL, содержащая сообщение SEI с масштабируемой вложенностью, должен иметь набор nal_unit_type, равный PREFIX_SEI_NUT. Если сообщение SEI с масштабируемым вложением содержит сообщение SEI с payloadType, равным ста тридцати двум (хэш декодированного изображения), единица SEI NAL, содержащая сообщение SEI с масштабируемым вложением, должен иметь набор nal_unit_type, равный SUFFIX_SEI_NUT.
[00163] nesting_ols_flag может быть установлен равным единице, чтобы указать, что сообщения SEI с масштабируемой вложенностью применяются к определенным уровням в контексте конкретных OLS. nesting_ols_flag может быть установлен равным нулю, чтобы указать, что сообщения SEI с масштабируемой вложенностью обычно применяются (например, не в контексте OLS) к конкретным уровням.
[00164] Соответствие битового потока может потребовать применения следующих ограничений к значению nesting_ols_flag. Когда масштабируемое вложенное сообщение SEI содержит сообщение SEI, значение payloadType которого равно нулю (период буферизации), единице (хронометраж изображения) или ста тридцати (информация о единице декодирования), значение nesting_ols_flag должно быть равно единице. Когда масштабируемое вложенное сообщение SEI содержит сообщение SEI, для которого payloadType равен значению в VclAssociatedSeiList, значение nesting_ols_flag должно быть равно нулю.
[00165] Nesting_num_olss_minus1 плюс один указывает количество OLS, к которым применяются сообщения SEI с масштабируемой вложенностью. Значение nesting_num_olss_minus1 должно быть в диапазоне от нуля до TotalNumOlss - 1 включительно. nesting_ols_idx_delta_minus1[i] используется для получения переменной NestingOlsIdx[i], которая указывает индекс OLS i-й OLS, к которой применяются масштабируемые вложенные сообщения SEI, когда nesting_ols_flag равна единице. Значение nesting_ols_idx_delta_minus1[i] должно находиться в диапазоне от нуля до TotalNumOlss - 2 включительно. Переменная NestingOlsIdx[i] может быть получена следующим образом:
if(i== 0) NestingOlsIdx[i] =nesting_ols_idx_delta_minus1[i] else NestingOlsIdx[i]=NestingOlsIdx[i - 1] +nesting_ols_idx_delta_minus1[i] + 1
[00166] Nesting_num_ols_layers_minus1[i] плюс один указывает количество уровней, к которым применяются сообщения SEI с масштабируемой вложенностью в контексте NestingOlsIdx[i]-го OLS. Значение nesting_num_ols_layers_minus1[i] должно находиться в диапазоне от нуля до NumLayersInOls[NestingOlsIdx[i]] - 1 включительно.
[00167] Nesting_ols_layer_idx_delta_minus1[i][j] используется для получения переменной NestingOlsLayerIdx[i][j], которая указывает индекс уровня OLS j-го уровня, к которому применяются масштабируемые вложенные сообщения SEI в контексте NestingOlsIdx[i]-й OLS, когда nesting_ols_flag равна единице. Значение nesting_ols_layer_idx_delta_minus1[i] должно быть в диапазоне от нуля до NumLayersInOls[nestingOlsIdx[i]] - два включительно.
[00168] Переменная NestingOlsLayerIdx[i][j] может быть получена следующим образом:
if( j == 0)
NestingOlsLayerIdx[i][j] = nesting_ols_layer_idx_delta_minus1[i][j]
else
NestingOlsLayerIdx[i][j] = NestingOlsLayerIdx[i][j-1] +
nesting_ols_layer_idx_delta_minus1[i][j] + 1
[00169] Наименьшее значение среди всех значений LayerIdInOls[NestingOlsIdx[i]][NestingOlsLayerIdx[i][0]] для i в диапазоне от нуля до nesting_num_olss_minus1 включительно должно быть равно nuh_layer_id текущей единицы SEI NAL (например, единица SEI NAL, содержащая масштабируемое вложенное сообщение SEI). nesting_all_layers_flag может быть установлен равным единице, чтобы указать, что сообщения SEI с масштабируемой вложенностью обычно применяются ко всем уровням, у которых nuh_layer_id больше или равен nuh_layer_id текущей единицы SEI NAL. Флаг nesting_all_layers_flag может быть установлен равным нулю, чтобы указать, что сообщения SEI с масштабируемой вложенностью могут или не могут в целом применяться ко всем уровням, у которых nuh_layer_id больше или равен nuh_layer_id текущей единицы SEI NAL.
[00170] Nesting_num_layers_minus1 плюс один указывает количество уровней, к которым обычно применяются масштабируемые вложенные сообщения SEI. Значение nesting_num_layers_minus1 должно находиться в диапазоне от нуля до vps_max_layers_minus1 - GeneralLayerIdx[nuh_layer_id] включительно, где nuh_layer_id - это nuh_layer_id текущей единицы SEI NAL. Nesting_layer_id[i] указывает значение nuh_layer_id i-го уровня, к которому обычно применяются сообщения SEI с масштабируемой вложенностью, когда nesting_all_layers_flag равен нулю. Значение nesting_layer_id[i] должно быть больше, чем nuh_layer_id, где nuh_layer_id - это nuh_layer_id текущей единицы SEI NAL.
[00171] Когда nesting_ols_flag равен единице, переменная NestingNumLayers, указывающая номер уровня, к которому обычно применяются масштабируемые вложенные сообщения SEI, и список NestingLayerId[i] для i в диапазоне от нуля до NestingNumLayers - 1 включительно, указывающий список значений nuh_layer_id уровней, к которым обычно применяются масштабируемые вложенные сообщения SEI, выводится следующим образом, где nuh_layer_id - это nuh_layer_id текущей единицы SEI NAL:
if( nesting_all_layers_flag ){
NestingNumLayers = vps_max_layers_minus1+1-GeneralLayerIdx[nuh_layer_id]
for( i = 0; i < NestingNumLayers; i ++)
NestingLayerId[i] = vps_layer_id[GeneralLayerIdx[nuh_layer_id]+i] (D-2)
} else {
NestingNumLayers = nesting_num_layers_minus1+1
for( i = 0; i < NestingNumLayers; i ++)
NestingLayerId[i] = ( i == 0 ) ? nuh_layer_id : nesting_layer_id[i]
}
[00172] Nesting_num_seis_minus1 плюс один указывает количество масштабируемых вложенных сообщений SEI. Значение nesting_num_seis_minus1 должно быть в диапазоне от нуля до шестидесяти трех включительно. nesting_zero_bit доолжен быть установлен равным нулю.
[00173] Фиг. 8 представляет собой схематическую диаграмму примерного устройства 800 кодирования видео. Устройство 800 кодирования видео подходит для реализации раскрытых примеров/вариантов осуществления, которые описаны в данном документе. Устройство 800 кодирования видео содержит нисходящие порты 820, восходящие порты 850 и/или блоки приемопередатчиков (Tx/Rx) 810, включая передатчики и/или приемники. Устройство 800 кодирования видео также включает в себя процессор 830, включающий в себя логический блок и/или центральный процессор (CPU), для обработки данных и память 832 для хранения данных. Устройство 800 кодирования видео может также содержать электрические, оптико-электрические (OE) компоненты, электрическо-оптические (EO) компоненты и/или компоненты беспроводной связи, подключенные к восходящим портам 850 и/или нисходящим портам 820 для обмена данными через электрические, оптические или беспроводные сети. Устройство 800 кодирования видео может также включать в себя устройства 860 ввода и/или вывода (I/O) для передачи данных пользователю и от пользователя. Устройства 860 ввода/вывода могут включать в себя устройства вывода, такие как дисплей, для отображения видеоданных, динамики для вывода аудиоданных и т.д. Устройства 860 ввода/вывода могут также включать в себя устройства ввода, такие как клавиатура, мышь, шаровой манипулятор и т. д., и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.
[00174] Процессор 830 реализуется аппаратным обеспечением и программным обеспечением. Процессор 830 может быть реализован в виде одного или более ядер (например, в форме многоядерного процессора), микросхем CPU, программируемых пользователем вентильных матриц (FPGA), специализированных интегральных схем (ASIC) и процессоров цифровых сигналов (DSP). Процессор 830 осуществляет связь с нисходящими портами 820, Tx/Rx 810, восходящими портами 850 и памятью 832. Процессор 830 содержит модуль 814 кодирования. Модуль 814 кодирования реализует описанные здесь раскрытые варианты осуществления, такие как способы 100, 900 и 1000, которые могут использовать многоуровневую видеопоследовательность 600 и/или битовый поток 700. Модуль 814 кодирования может также реализовывать любой другой способ/механизм, описанный в данном документе. Кроме того, модуль 814 кодирования может реализовать систему 200 кодека, кодер 300, декодер 400 и/или HRD 500. Например, модуль 814 кодирования может использовать сигналы и/или считывать различные параметры, как описано здесь. Кроме того, модуль кодирования может использоваться для кодирования и/или декодирования видеопоследовательности на основе таких параметров. Таким образом, описанные здесь изменения сигнализации могут повысить эффективность и/или избежать ошибок в модуле 814 кодирования. Соответственно, модуль 814 кодирования может быть сконфигурирован для выполнения механизмов для решения одной или нескольких проблем, рассмотренных выше. Следовательно, модуль 814 кодирования предписывает устройству 800 кодирования видео обеспечивать дополнительную функциональность и/или эффективность кодирования при кодировании видеоданных. Таким образом, модуль 814 кодирования улучшает функциональность устройства 800 кодирования видео, а также решает проблемы, которые характерны для областей техники кодирования видео. Кроме того, модуль 814 кодирования осуществляет перевод устройства 800 кодирования видео в другое состояние. В качестве альтернативы, модуль 814 кодирования может быть реализован как инструкции, хранящиеся в памяти 832 и выполняемые процессором 830 (например, как компьютерный программный продукт, хранящийся на некратковременном носителе).
[00175] Память 832 содержит память одного или более типов, например диски, ленточные накопители, твердотельные накопители, постоянное запоминающее устройство (ROM), оперативное запоминающее устройство (RAM), флэш-память, троичное запоминающее устройство с адресацией по содержимому (TCAM), статическое оперативное запоминающее устройство (SRAM) и т. д. Память 832 может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбираются для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программы.
[00176] Фиг. 9 представлена блок-схема примерного способа 900 кодирования видеопоследовательности в битовый поток, такой как битовый поток 700, путем ограничения ID уровня для PPS и APS в битовом потоке. Способ 900 может быть использован кодером, таким как система 200 кодека, кодер 300 и/или устройство 800 кодирования видео при выполнении способа 100. Кроме того, способ 900 может работать с HRD 500 и, следовательно, может выполнять тесты на соответствие многоуровневой видеопоследовательности 600.
[00177] Способ 900 может начинаться, когда кодер принимает видеопоследовательность и решает закодировать эту видеопоследовательность в многоуровневый битовый поток, например, на основе пользовательского ввода. На этапе 901 кодер кодирует закодированное изображение в наборе единиц VCL NAL в битовом потоке. Например, кодированное изображение может быть включено в уровень. Кроме того, кодер может кодировать один или несколько уровней, включая кодированное изображение, в многоуровневый битовый поток. Уровень может включать в себя набор единиц VCL NAL с одинаковым ID уровня и связанных единиц не-VCL NAL. Например, набор единиц VCL NAL является частью уровня, когда все единицы в наборе единиц VCL NAL имеют конкретное значение nuh_layer_id. Уровень может включать в себя набор единиц VCL NAL, которые содержат видеоданные кодированных изображений, а также любые наборы параметров, используемые для кодирования таких изображений. Один или несколько уровней могут быть выходными уровнями. Уровни, которые не являются выходным уровнем, кодируются для поддержки восстановления выходного уровня (уровней), но такие поддерживающие уровни не предназначены для вывода в декодере. Таким образом, кодер может кодировать различные комбинации уровней для передачи в декодер по запросу. Уровень может передаваться по желанию, чтобы позволить декодеру получать различные представления видеопоследовательности в зависимости от сетевых условий, возможностей аппаратного обеспечения и/или пользовательских настроек.
[00178] Уровень также включает в себя различные единицы не-VCL NAL. Единицы не-VCL NAL, связаны с набором единиц VCL NAL, все из которых имеют конкретное значение nuh_layer_id. Ограничения могут применяться к nuh_layer_id единиц не-VCL NAL, чтобы гарантировать, что единицы не-VCL NAL должным образом связаны с единицами VCL NAL и не удаляются из битового потока в процессе извлечения суббитового потока перед передачей в декодер.
[00179] На этапе 903 кодер кодирует PPS в битовый поток. PPS кодируется в единицу PPS NAL. Единица PPS NAL является примером единицы не-VCL NAL, которая связана с одним или несколькими уровнями. Единица PPS NAL кодируется на основе ограничения, согласно которому конкретная единица VCL NAL не может/не может ссылаться на единицу PPS NAL, если значение nuh_layer_id единицы PPS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL. Иными словами, единица PPS и/или PPS NAL ограничена включением в себя значения nuh_layer_id, которое меньше или равно значению nuh_layer_id всех единиц VCL NAL, которые относятся к PPS в единице PPS NAL. Такое ограничение или требование гарантирует, что битовый поток соответствует, например, VVC или какому-либо другому стандарту, модифицированному, как указано здесь. Однако кодер также может быть способен работать в других режимах, где он не ограничен таким образом, например, при работе по другому стандарту или другой версии того же стандарта. Конкретная единица VCL NAL, описанная в ограничении, может содержать слайс кодированного изображения и может быть связан с заголовком, таким как заголовок слайса и/или заголовок изображения, содержащий элементы данных, относящиеся к слайсу. Заголовок указывает PPS ID для PPS. PPS ID в заголовке указывает, что слайс относится к единице PPS NAL и, следовательно, применяется ограничение.
[00180] На этапе 905 кодер кодирует APS в битовый поток. APS кодируется в единицу APS NAL. Единица APS NAL является примером единицы не-VCL NAL, которая связана с одним или несколькими уровнями. Единица APS NAL кодируется на основе ограничения, согласно которому конкретная единица VCL NAL не относится к единице APS NAL, если значение nuh_layer_id единицы APS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL. Другими словами, APS и/или единица APS NAL ограничены включением в себя значения nuh_layer_id, которое меньше или равно значению nuh_layer_id всех единиц VCL NAL, которые относятся к APS в единице APS NAL. Конкретная единица VCL NAL может содержать слайс кодированного изображения и может быть связана с заголовком, таким как заголовок слайса и/или заголовок изображения, содержащий элементы данных, относящиеся к слайсу. Заголовок указывает APS ID для APS. APS ID в заголовке указывает, что слайс относится к единице APS NAL и, следовательно, применяется ограничение. Предшествующие ограничения и/или требования гарантируют, что битовый поток соответствует, например, VVC или какому-либо другому стандарту, измененному, как указано здесь. Однако кодер также может быть способен работать в других режимах, где он не ограничен таким образом, например, при работе по другому стандарту или другой версии того же стандарта.
[00181] На этапе 907 кодер может сохранить битовый поток для передачи декодеру по запросу. Как только запрос получен, кодер и/или соответствующий слайсер также могут выполнять процесс извлечения битового подпотока для удаления единиц NAL из битового потока на основе значения nuh_layer_id на этапе 909. Этот процесс приводит к битовому потоку, который включает только единицы VCL NAL и единицы не-VCL NAL, связанные с запрошенным(и) уровнем(ями). Из-за рассмотренных выше ограничений единицы/PPS NAL и/или единицы APS/APS NAL сохраняются в битовом потоке, когда единицы VCL NAL на запрошенном(запрошенных) уровне(уровнях) связаны с ними, и удаляются из битового потока, когда единицы VCL NAL на запрошенных уровнях не связаны с ними. Затем извлеченный битовый поток может быть передан в декодер для декодирования и вывода.
[00182] Фиг. 10 представлена блок-схема примерного способа 1000 декодирования видеопоследовательности из битового потока, такого как битовый поток 700, где ID уровней для PPS и APS в битовом потоке ограничены. Способ 1000 может быть использован декодером, таким как система 200 кодека, декодер 400 и/или устройство 800 кодирования видео при выполнении способа 100. Кроме того, способ 1000 может применяться к многоуровневой видеопоследовательности 600, которая была проверена на соответствие HRD, например HRD 500.
[00183] Способ 1000 может начинаться, когда декодер начинает прием битового потока закодированных данных, представляющих многоуровневую видеопоследовательность, например, в результате выполнения способа 900 и/или в ответ на запрос декодера. На этапе 1001 декодер принимает битовый поток, содержащий PPS в единице PPS NAL, APS в единице APS NAL и закодированное изображение в наборе единиц VCL NAL. Например, кодированное изображение может быть включено в уровень. Кроме того, битовый поток может включать в себя один или несколько уровней, включающих в себя кодированное изображение. Уровень может включать в себя набор единиц VCL NAL с одинаковым ID уровня и связанных единиц не-VCL NAL. Например, набор единиц VCL NAL является частью уровня, когда все единицы в наборе единиц VCL NAL имеют конкретное значение nuh_layer_id. Уровень может включать в себя набор единиц VCL NAL, которые содержат видеоданные кодированных изображений, а также любые наборы параметров, используемые для кодирования таких изображений. Один или несколько уровней могут быть выходными уровнями. Уровни, которые не являются выходным уровнем, кодируются для поддержки восстановления выходного уровня (уровней), но такие поддерживающие уровни не предназначены для вывода. Таким образом, декодер может получать различные представления видеопоследовательности в зависимости от условий сети, возможностей оборудования и/или пользовательских настроек. Уровень также включает в себя различные единицы не-VCL NAL. Единицы не-VCL NAL связаны с набором единиц VCL NAL, все из которых имеют конкретное значение nuh_layer_id. Ограничения могут применяться к nuh_layer_id единиц не-VCL NAL, чтобы гарантировать, что единицы не-VCL NAL должным образом связаны с единицами VCL NAL и не удаляются из битового потока в процессе извлечения суббитового потока перед передачей в декодер.
[00184] Единица PPS NAL является примером единицы не-VCL NAL, которая связана с одним или несколькими уровнями. Единица PPS NAL кодируется на основе ограничения, согласно которому конкретная единица VCL NAL (например, из набора единиц VCL NAL) не может/не может ссылаться на единицу PPS NAL, если значение nuh_layer_id единицы PPS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL. Иными словами, единица PPS и/или PPS NAL ограничена включением в себя значения nuh_layer_id, которое меньше или равно значению nuh_layer_id всех единиц VCL NAL, которые относятся к PPS в единице PPS NAL. Конкретная единица VCL NAL может содержать слайс кодированного изображения и может быть связана с заголовком, таким как заголовок слайса и/или заголовок изображения, содержащий элементы данных, относящиеся к слайсу. Заголовок указывает PPS ID для PPS. PPS ID в заголовке указывает, что слайс относится к единице PPS NAL и, следовательно, применяется ограничение.
[00185] Единица APS NAL является другим примером единицы не-VCL NAL, которая связана с одним или несколькими уровнями. Единица APS NAL кодируется на основе ограничения, согласно которому конкретная единица VCL NAL не относится к единице APS NAL, если значение nuh_layer_id единицы APS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL. Другими словами, APS и/или единица APS NAL ограничены включением в себя значения nuh_layer_id, которое меньше или равно значению nuh_layer_id всех единиц VCL NAL, которые относятся к APS в единице APS NAL. Конкретная единица VCL NAL может содержать слайс кодированного изображения и может быть связана с заголовком, таким как заголовок слайса и/или заголовок изображения, содержащий элементы данных, относящиеся к слайсу. Заголовок указывает APS ID для APS. APS ID в заголовке указывает, что слайс относится к единице APS NAL и, следовательно, применяется ограничение.
[00186] Битовый поток, полученный на этапе 1001, является результатом процесса извлечения битового подпотока, который удаляет единицы NAL из битового потока на основе значения nuh_layer_id. Этот процесс приводит к битовому потоку, который включает только единицы VCL NAL и единицы не-VCL NAL, связанные с запрошенным(и) уровнем(ями). Из-за рассмотренных выше ограничений единицы/PPS NAL и/или единицы APS/APS NAL сохраняются в битовом потоке, когда единицы VCL NAL на уровне(ях) приема связаны с ними, и удаляются из битового потока, когда Единицы VCL NAL в полученном(полученных) уровне(уровнях) не связаны с ними. В варианте осуществления видеодекодер ожидает, что единицы VCL NAL, единица PPS NAL и единица APS NAL будут содержать nuh_layer_id, которые ограничены, как описано выше, на основе VVC или какого-либо другого стандарта. Однако, если декодер определяет, что это условие не соответствует действительности, декодер может обнаружить ошибку, сообщить об ошибке, запросить повторную отправку исправленного битового потока (или его части) или предпринять некоторые другие корректирующие меры, чтобы гарантировать, что соответствующий принимается битовый поток.
[00187] На этапе 1003 декодер может декодировать кодированное изображение из набора единиц VCL NAL на основе PPS в единице PPS NAL и/или APS в единице APS NAL для получения декодированного изображения. На этапе 1005 декодер может переслать декодированное изображение для отображения как части декодированной видеопоследовательности.
[00188] Фиг. 11 представляет собой схематическую диаграмму примерной системы 1100 для кодирования видеопоследовательности с использованием битового потока, где ID уровня для PPS и APS в битовом потоке ограничены. Система 1100 может быть реализована с помощью кодера и декодера, такого как система 200 кодека, кодер 300, декодер 400 и/или устройство 800 кодирования видео. Кроме того, система 1100 может использовать HRD 500 для выполнения тестов на соответствие для многоуровневой видеопоследовательности 600 и/или битового потока 700. Кроме того, система 1100 может использоваться при реализации способов 100, 900 и/или 1000.
[00189] Система 1100 включает в себя видеокодер 1102. Видеокодер 1102 содержит модуль 1105 кодирования для кодирования кодированного изображения в наборе единиц VCL NAL в битовом потоке. Модуль 1105 кодирования дополнительно предназначен для кодирования в битовый поток PPS в единице PPS NAL на основе ограничения, что конкретная единица VCL NAL (например, из набора единиц NAL VC) не относится к единице PPS NAL, если значение nuh_layer_id единицы PPS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL. Видеокодер 1102 дополнительно содержит модуль 1106 хранения для сохранения битового потока для передачи на декодер. Видеокодер 1102 дополнительно содержит передающий модуль 1107 для передачи битового потока на видеодекодер 1110. Видеокодер 1102 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 900.
[00190] Система 1100 также включает в себя видеодекодер 1110. Видеодекодер 1110 содержит приемный модуль 1111 для приема битового потока, содержащего PPS в единице PPS NAL и закодированное изображение в наборе единиц VCL NAL, при этом конкретная единица VCL NAL не относится к единице PPS NAL, если значение nuh_layer_id единицы PPS NAL не меньше и не равно значению nuh_layer_id конкретной единицы VCL NAL. Видеодекодер 1110 дополнительно содержит модуль 1113 декодирования для декодирования кодированного изображения из набора единиц VCL NAL на основе PPS в единице PPS NAL для получения декодированного изображения. Видеодекодер 1110 дополнительно содержит модуль 1115 пересылки для пересылки декодированного изображения для отображения как части декодированной видеопоследовательности. Видеодекодер 1110 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 1000.
[00191] Первый компонент напрямую связан со вторым компонентом, когда между первым компонентом и вторым компонентом нет промежуточных компонентов, за исключением линии, дорожки или другой среды. Первый компонент опосредованно связан со вторым компонентом, когда между первым компонентом и вторым компонентом есть промежуточные компоненты, отличные от линии, дорожки или другой среды. Термин "связанные" и его варианты включают в себя как непосредственно связанные, так и опосредованно связанные. Использование термина "примерно" означает диапазон, включающий 10% от последующего числа, если не указано иное.
[00192] Также следует понимать, что этапы иллюстративных способов, изложенных в настоящем документе, не обязательно должны выполняться в описанном порядке, и порядок этапов таких способов следует понимать как просто иллюстративный. Подобным образом в такие способы могут быть включены дополнительные этапы, а некоторые этапы могут быть исключены или объединены в способах, соответствующих различным вариантам осуществления настоящего раскрытия.
[00193] Хотя в настоящем раскрытии обеспечено несколько вариантов осуществления, нужно понимать, что раскрытые системы и способы могут быть воплощены во многих других конкретных формах, не выходя за рамки сущности или объема настоящего раскрытия. Настоящие примеры следует рассматривать как иллюстративные, а не ограничительные, и есть намерение не ограничиваться приведенными в данном документе деталями. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему, или определенные функции могут быть опущены или не реализованы.
[00194] Кроме того, методики, системы, подсистемы и способы, описанные и проиллюстрированные в различных вариантах осуществления как дискретные или отдельные, могут быть объединены или интегрированы с другими системами, компонентами, технологиями или способами без отклонения от объема настоящего раскрытия. Другие примеры изменений, замен и переделок могут быть установлены специалистом в данной области техники и могут быть выполнены без отклонения от сущности и объема, раскрытых в данном документе.
Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Принимают приемником декодера битовый поток, содержащий набор параметров изображения (PPS) в единице уровня сетевой абстракции (NAL) PPS, и кодированное изображение, содержащее набор единиц NAL уровня кодирования видео (VCL). При этом конкретная единица VCL NAL относится к единице PPS NAL, когда значение идентификатора уровня заголовка единицы NAL (nuh_layer_id) единицы PPS NAL меньше чем или равно значению nuh_layer_id конкретной единицы VCL NAL. Декодируют процессором декодера закодированное изображение из набора единиц VCL NAL на основе PPS в единице PPS NAL для получения декодированного изображения, когда значение nuh_layer_id единицы PPS NAL меньше чем или равно значению nuh_layer_id конкретной единицы VCL NAL. При этом конкретная единица VCL NAL содержит слайс кодированного изображения и заголовок, содержащий элементы данных, относящиеся к слайсу, и при этом заголовок указывает идентификатор (ID) APS у APS. 3 н. и 6 з.п. ф-лы, 11 ил.
1. Способ декодирования, реализуемый декодером, содержащий:
прием, приемником декодера, битового потока, содержащего набор параметров изображения (PPS) в единице уровня сетевой абстракции (NAL) PPS и кодированное изображение, содержащее набор единиц NAL уровня кодирования видео (VCL), при этом конкретная единица VCL NAL относится к единице PPS NAL, когда значение идентификатора уровня заголовка единицы NAL (nuh_layer_id) единицы PPS NAL меньше чем или равно значению nuh_layer_id конкретной единицы VCL NAL; и
декодирование, процессором декодера, закодированного изображения из набора единиц VCL NAL на основе PPS в единице PPS NAL для получения декодированного изображения, когда значение nuh_layer_id единицы PPS NAL меньше чем или равно значению nuh_layer_id конкретной единицы VCL NAL;
при этом конкретная единица VCL NAL содержит слайс кодированного изображения и заголовок, содержащий элементы данных, относящиеся к слайсу, и при этом заголовок указывает идентификатор (ID) APS у APS.
2. Способ по п. 1, в котором битовый поток дополнительно содержит набор параметров адаптации (APS) в единице APS NAL, и при этом конкретная единица VCL NAL относится к единице APS NAL, когда значение nuh_layer_id единицы APS NAL меньше чем или равно значению nuh_layer_id конкретной единицы VCL NAL.
3. Способ по п. 1 или 2, в котором конкретная единица VCL NAL содержит слайс кодированного изображения, при этом слайс связан с заголовком, который содержит синтаксические элементы, которые применяются к слайсу кодированного изображения, и при этом заголовок указывает PPS ID для PPS.
4. Способ по любому из пп. 1-3, в котором битовый поток является результатом процесса извлечения битового подпотока, который удаляет единицы NAL из битового потока на основе значения nuh_layer_id.
5. Способ по любому из пп. 1-4, в котором набор единиц VCL NAL является частью уровня, когда все единицы в наборе единиц VCL NAL имеют конкретное значение nuh_layer_id.
6. Способ по любому из пп. 1-5, в котором уровень включает в себя единицы не-VCL NAL, которые связаны с набором единиц VCL NAL, все из которых имеют конкретное значение nuh_layer_id.
7. Способ по любому из пп. 1-6, дополнительно содержащий:
прием декодером второго битового потока, содержащего второй PPS во второй единице PPS NAL, и второго кодированного изображения, содержащего второй набор единиц VCL NAL, при этом вторая единица VCL NAL относится ко второй единице PPS NAL, при этом значение nuh_layer_id второй единицы PPS NAL не меньше или равно значению nuh_layer_id второй единицы VCL NAL; и
прием соответствующего битового потока, соответствующего второму битовому потоку, путем применения корректирующих мер до декодирования кодированного изображения из второго набора единиц VCL NAL.
8. Некратковременный считываемый компьютером носитель, содержащий компьютерные инструкции, которые, при выполнении по меньшей мере одним аппаратным процессором, предписывают упомянутому по меньшей мере одному аппаратному процессору выполнять способ по любому из пп. 1-7.
9. Устройство декодирования, содержащее
приемник, выполненный с возможностью приема битового потока, содержащего набор параметров изображения (PPS) в единице уровня сетевой абстракции (NAL) PPS и кодированное изображение, содержащее набор единиц NAL уровня кодирования видео (VCL), при этом конкретная единица VCL NAL относится к единице PPS NAL, когда значение идентификатора уровня заголовка единицы NAL (nuh_layer_id) единицы PPS NAL меньше чем или равно значению nuh_layer_id конкретной единицы VCL NAL;
память, соединенную с приемником, при этом память хранит инструкции; и
процессор, соединенный с памятью, при этом процессор выполнен с возможностью выполнять инструкции для предписания устройству декодирования выполнять способ по любому из пп. 1-7.
Устройство для закрепления лыж на раме мотоциклов и велосипедов взамен переднего колеса | 1924 |
|
SU2015A1 |
Benjamin Bross et al | |||
Приспособление для точного наложения листов бумаги при снятии оттисков | 1922 |
|
SU6A1 |
Аппарат для очищения воды при помощи химических реактивов | 1917 |
|
SU2A1 |
Способ защиты переносных электрических установок от опасностей, связанных с заземлением одной из фаз | 1924 |
|
SU2014A1 |
Устройство для закрепления лыж на раме мотоциклов и велосипедов взамен переднего колеса | 1924 |
|
SU2015A1 |
Токарный резец | 1924 |
|
SU2016A1 |
Авторы
Даты
2024-07-08—Публикация
2020-09-17—Подача