Перекрестная ссылка на родственную заявку
В настоящей заявке на патент испрашивается преимущество предварительной заявки на патент США № 62/905,244, поданной 24 сентября 2019 года Ван Е-Куем (Ye-Kui Wang) и озаглавленной «Hypothetical Reference Decoder (HRD) for Multi-Layer Video Bitstreams», которая включена в данный документ путем ссылки.
Область техники, к которой относится изобретение
Настоящее раскрытие относится, в общем, к кодированию видео и, в частности, относится к изменениям параметров гипотетического опорного декодера (HRD) для поддержки эффективного кодирования и/или тестирования на соответствие многослойных битовых потоков.
Уровень техники
Объем видеоданных, необходимых для отображения даже относительно короткого видео, может быть значительным, что может привести к трудностям в тех случаях, когда данные должны передаваться в потоковом режиме или передаваться иным образом по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед передачей по современным телекоммуникационным сетям. Размер видео также может быть проблемой, когда видео хранится в запоминающем устройстве, так как ресурсы памяти могут быть ограничены. Устройства для сжатия видео часто используют программное обеспечение и/или аппаратные средства в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Затем сжатые данные принимаются в пункте назначения устройством для распаковки видео, которое декодирует видеоданные. При ограниченных сетевых ресурсах и постоянно растущих требованиях к более высокому качеству видео желательны улучшенные технологии сжатия и распаковки, которые улучшают коэффициент сжатия практически без ущерба для качества изображения.
Раскрытие сущности изобретения
В варианте осуществления раскрытие включает в себя способ, реализуемый декодером, причем способ содержит: прием, приемником декодера, битового потока, содержащего один или более наборов слоев вывода (OLS) и набор параметров видео (VPS), задающий OLS, причем битовый поток был проверен с помощью наборов тестов на соответствие битового потока, которые тестируют на соответствие каждой рабочей точки (OP) каждого OLS, заданного VPS; и декодирование, процессором декодера, изображения из OLS.
Системы кодирования видео используют различные тесты на соответствие с тем, чтобы гарантировать, что битовый поток может быть декодирован декодером. Например, проверка на соответствие может включать в себя тестирование всего битового потока на соответствие, затем проверку каждого слоя битового потока на соответствие и, наконец, проверку потенциально декодируемых выходных сигналов на соответствие. Для того, чтобы реализовать проверки на соответствие в битовый поток включаются соответствующие параметры. Гипотетический опорный декодер (HRD) может считывать параметры и выполнять тесты. Видео может включать в себя множество слоев и множество различных OLS. По запросу кодер передает один или более слоев выбранного OLS. Например, кодер может передать лучший слой (слои) из OLS, который может поддерживаться текущей пропускной способностью сети. Проблема с этим подходом состоит в том, что значительное количество слоев тестируется, но фактически не передается в декодер. Однако параметры для поддержки такого тестирования все же могут быть включены в битовый поток, что без необходимости увеличивает размер битового потока. Настоящий пример включает в себя механизм для применения тестов на соответствие битового потока только к каждому OLS. Таким образом, весь битовый поток, каждый слой и декодируемые выходные сигналы совместно тестируются при тестировании соответствующего OLS. Таким образом, сокращается количество тестов на соответствие, что позволяет снизить использование ресурсов процессора и памяти в кодере. Кроме того, уменьшение количества тестов на соответствие позволяет уменьшить количество связанных с ними параметров, включенных в битовый поток. Это позволяет уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой набор тестов на соответствие битового потока выполняется гипотетическим опорным декодером (HRD), работающим в кодере.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой VPS включает в себя общее количество наборов слоев вывода минус один (num_output_layer_sets_minus1) плюс один набор слоев вывода, который задает общее количество OLS, заданных VPS.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой каждая OP выбирается в качестве тестируемой OP (targetOp) на основе целевого OLS с индексом OLS OP (opOlsIdx) и наибольшим значением OP временного идентификатора (opTid).
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой каждый OLS представляет собой набор слоев, для которого один или более слоев заданы в качестве слоев вывода.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой VPS включает в себя синтаксическую структуру общих параметров HRD (general_hrd_parameters), которая обеспечивает параметры HRD, которые применяются ко всем OLS, заданным VPS.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой наличие параметров HRD в битовом потоке указывает то, что декодер способен декодировать битовый поток в соответствии с графиком доставки.
В варианте осуществления раскрытие включает в себя способ, реализуемый кодером, причем способ содержит: кодирование, процессором кодера, битового потока, содержащего один или более OLS; кодирование в битовый поток, процессором, VPS, задающего OLS; и выполнение, процессором, набора тестов на соответствие битового потока в каждой OP каждого OLS, который задан VPS, для тестирования каждой OP на соответствие.
Системы кодирования видео используют различные тесты на соответствие с тем, чтобы гарантировать, что битовый поток может быть декодирован декодером. Например, проверка на соответствие может включать в себя тестирование всего битового потока на соответствие, затем проверку каждого слоя битового потока на соответствие и, наконец, проверку потенциально декодируемых выходных сигналов на соответствие. Для того, чтобы реализовать проверки на соответствие в битовый поток включаются соответствующие параметры. Гипотетический опорный декодер (HRD) может считывать параметры и выполнять тесты. Видео может включать в себя множество слоев и множество различных OLS. По запросу кодер передает один или более слоев выбранного OLS. Например, кодер может передать лучший слой (слои) из OLS, который может поддерживаться текущей пропускной способностью сети. Проблема с этим подходом состоит в том, что значительное количество слоев тестируется, но фактически не передается в декодер. Однако параметры для поддержки такого тестирования все же могут быть включены в битовый поток, что без необходимости увеличивает размер битового потока. Настоящий пример включает в себя механизм для применения тестов на соответствие битового потока только к каждому OLS. Таким образом, весь битовый поток, каждый слой и декодируемые выходные сигналы совместно тестируются при тестировании соответствующего OLS. Таким образом, сокращается количество тестов на соответствие, что позволяет снизить использование ресурсов процессора и памяти в колере. Кроме того, уменьшение количества тестов на соответствие позволяет уменьшить количество связанных с ними параметров, включенных в битовый поток. Это позволяет уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой набор тестов на соответствие битового потока выполняется HRD, работающим в процессоре.
качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой VPS включает в себя num_output_layer_sets_minus1 плюс один набор слоев вывода, который задает общее количество OLS, заданных VPS.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, дополнительно содержащая выбор, процессором, каждой OP в качестве targetOp путем выбора целевого OLS с opOlsIdx и наибольшим opTid.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой каждый OLS представляет собой набор слоев, для которого один или более слоев заданы в качестве слоев вывода.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой VPS включает в себя синтаксическую структуру general_hrd_parameters, которая обеспечивает параметры HRD, которые применяются ко всем OLS, заданным VPS.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой наличие параметров HRD в битовом потоке указывает то, что декодер способен декодировать битовый поток в соответствии с графиком доставки.
В варианте осуществления раскрытие включает в себя устройство кодирования видео, содержащее: процессор, приемник, подключенный к процессору, память, подключенную к процессору, и передатчик, подключенный к процессору, причем процессор, приемник, память и передатчик выполнен с возможностью выполнения способа согласно любому из предыдущих аспектов.
В варианте осуществления раскрытие включает в себя невременный машиночитаемый носитель информации, содержащий компьютерный программный продукт для использования устройством для кодирования видео, причем компьютерный программный продукт содержит исполняемые компьютером инструкции, хранящиеся на невременном машиночитаемом носителе информации, которые при их исполнении процессором предписывают устройству для кодирования видео выполнять способ согласно любому из предыдущих аспектов.
В варианте осуществления раскрытие включает в себя декодер, содержащий: средство приема, предназначенное для приема битового потока, содержащего один или более OLS, и VPS, задающий OLS, причем битовый поток был проверен с помощью наборов тестов на соответствие битового потока, которые тестируют на соответствие каждая OP каждого OLS, заданного VPS; средство декодирования, предназначенное для декодирования изображения из OLS; и средство пересылки, предназначенное для пересылки изображения для отображения в виде части декодированной видеопоследовательности.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой декодер дополнительно выполнен с возможностью выполнения способа согласно любому из предыдущих аспектов.
В варианте осуществления раскрытие включает в себя кодер, содержащий: средство кодирования для: кодирования битового потока, содержащего один или более OLS; и кодирования в битовый поток VPS, задающий OLS; средство HRD для выполнения набора тестов на соответствие битового потока в каждой OP каждого OLS, который задан VPS, для тестирования каждой OP на соответствие; и средство хранения, предназначенное для хранения битового потока для передачи в декодер.
В качестве варианта, в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой кодер дополнительно выполнен с возможностью выполнения способа согласно любому из предыдущих аспектов.
В целях ясности любой из вышеизложенных вариантов осуществления может быть объединен с любым одним или несколькими другими вышеизложенными вариантами осуществления для создания нового варианта осуществления в пределах объема настоящего раскрытия.
Эти и другие признаки станут более понятными из последующего подробного описания, рассматриваемого совместно с сопроводительными чертежами и формулой изобретения.
Краткое описание чертежей
Для более полного понимания настоящего раскрытия теперь делается ссылка на последующее краткое описание, приведенное совместно с сопроводительными чертежами и подробным описанием, в котором одинаковые ссылочные позиции обозначают одинаковые элементы.
Фиг.1 – блок-схема последовательности операций примерного способа кодирования видеосигнала.
Фиг.2 – схематичное представление примерной системы кодирования и декодирования (кодека) для кодирования видео.
Фиг.3 – схематичное представление, иллюстрирующее примерный видеокодер.
Фиг.4 – схематичное представление, иллюстрирующее примерный видеодекодер.
Фиг.5 – схематичное представление, иллюстрирующее примерный гипотетический опорный декодер (HRD).
Фиг.6 – схематичное представление, иллюстрирующее примерную многослойную видеопоследовательность, выполненную с возможностью межслойного предсказания.
Фиг.7 – схематичное представление, иллюстрирующее примерную многослойную видеопоследовательность, выполненную с возможностью временного масштабирования.
Фиг.8 – схематичное представление, иллюстрирующее пример битового потока.
Фиг.9 – схематичное представление примерного устройства для кодирования видео.
Фиг.10 – блок-схема последовательности операций примерного способа кодирования видеопоследовательности для поддержки выполнения тестов на соответствие битового потока для OLS.
Фиг.11 – блок-схема последовательности операций примерного способа декодирования видеопоследовательности, которая была подвергнута тестам на соответствие битового потока для OLS.
Фиг.12 – схематичное представление примерной системы кодирования видеопоследовательности для поддержки выполнения тестов на соответствие битового потока для OLS.
Осуществление изобретения
Прежде всего следует отметить, что хотя иллюстративная реализация одного или более вариантов осуществления представлена ниже, раскрытые системы и/или способы могут быть реализованы с использованием любого количества технологий, известных в настоящее время или уже существующих. Настоящее раскрытие никоим образом не должно быть ограничено иллюстративными реализациями, чертежами и технологиями, проиллюстрированными ниже, включая иллюстративные конструкции и реализации, проиллюстрированные и описанные в данном документе, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с их полным объемом эквивалентов.
Приведенные ниже термины определяются следующим образом, если они не используются в данном контексте в противоположном контексте. В частности, следующие определения предназначены для обеспечения дополнительной ясности настоящего раскрытия. Однако термины могут быть описаны по-разному в разных контекстах. Соответственно, приведенные ниже определения следует рассматривать как дополнение и не следует рассматривать как ограничение любых других определений описаний, представленных для таких терминов в данном документе.
Битовый поток – это последовательность битов, включающая в себя видеоданные, которые сжимают для передачи между кодером и декодером. Кодер – это устройство, которое выполнено с возможностью использования процессов кодирования для сжатия видеоданных в битовый поток. Декодер – это устройство, которое выполнено с возможностью использования процессов декодирования для восстановления видеоданных из битового поток для отображения. Изображение представляет собой массив выборок яркости и/или массив выборок цветности, которые создают кадр или его область. Изображение, которое кодируется или декодируется, может называться текущим изображением для ясности обсуждения. Единица слоя абстракции сети (NAL) представляет собой синтаксическую структуру, содержащую данные в виде необработанных полезных данных последовательности байтов (RBSP), указатель типа данных и байты предотвращения эмуляции, которые чередуются по желанию. Единица NAL слоя кодирования видео (VCL) представляет собой единицу NAL, кодированную таким образом, чтобы она содержала видеоданные, такие как кодированный слайс изображения. Единица NAL без VCL представляет собой единицу NAL, который содержит данные, не относящиеся к видео, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки на соответствие или другие операции. Единица доступа (AU) представляет собой набор единиц NAL, которые взаимодействуют друг с другом в соответствии с заданным правилом классификации и относятся к одному конкретному времени вывода. Единица декодирования (DU) представляет собой AU или поднабор AU и ассоциированных единиц NAL без VCL. Например, AU включает в себя единицы NAL VCL и любые единицы NAL без VCL, ассоциированные с единицами NAL VCL в AU. Кроме того, DU включает в себя набор единиц NAL VCL из AU или его поднабора, а также любые единицы NAL без VCL, ассоциированные с единицами NAL VCL в DU. Слой представляет собой набор единиц NAL VCL, которые совместно используют определенную характеристику (например, общее разрешение, частоту кадров, размер изображения и т.д.), и ассоциированные единицы NAL без VCL. Порядок декодирования – это порядок, в котором синтаксические элементы обрабатываются в процессе декодирования. Набор параметров видео (VPS) – это единица данных, которая содержит параметры, относящиеся ко всему видео.
Масштабируемый по времени битовый поток представляет собой битовый поток, кодированный в многочисленных слоях, обеспечивающих различное временное разрешение/частоту кадров (например, каждый слой кодируется для поддержки разной частоты кадров). Подслой представляет собой масштабируемый по времени слой масштабируемого по времени битового потока, включающего в себя единицы NAL VCL с конкретным значением временного идентификатора и ассоциированные единицы NAL без VCL. Например, временной подслой – это слой, который содержит видеоданные, ассоциированные с заданной частотой кадров. Представление подслоя представляет собой поднабор битового потока, содержащего единицы NAL конкретного подслоя и нижних подслоев. Таким образом, один или более временных подслоев могут быть объединены для достижения представления подслоя, которое может быть декодировано для получения видеопоследовательности с заданной частотой кадров. Набор слоев вывода (OLS) – это набор слоев, для которого один или более слоев задаются в качестве слоев вывода. Слой вывода представляет собой слой, предназначенный для вывода (например, на дисплей). Индекс OLS – это индекс, который однозначно идентифицирует соответствующий OLS. Нулевой (0-й) OLS – это OLS, который содержит только нижний слой (слой с идентификатором нижнего слоя) и, следовательно, содержит только слой вывода. Временной идентификатор (ID) – это элемент данных, который указывает то, что данные соответствуют временному местоположению в видеопоследовательности. Процесс извлечения битового подпотока представляет собой процесс, который удаляет единицы NAL из битового потока, которые не принадлежат целевому набору, определенному целевым индексом OLS и целевым наибольшим временным ID. Результатом процесса извлечения битового подпотока является выходной битовый подпоток, содержащий единицы NAL из битового потока, которые являются частью целевого набора.
HRD представляет собой модель декодера, работающую в кодере, который проверяет изменчивость битовых потоков, создаваемых процессом кодирования, для тестирования на соответствие с заданными ограничениями. Тест на соответствие битового потока – это тест для определения того, соответствует ли кодированный битовый поток стандарту, такому как универсальное кодирование видео (VVC). Параметры HRD представляют собой синтаксические элементы, которые инициируют и/или определяют условия работы HRD. Параметры HRD могут содержаться в синтаксической структуре параметров HRD. Синтаксическая структура представляет собой объект данных, выполненный с возможностью включения множества различных параметров. Синтаксический элемент – это объект данных, который содержит один или более параметров одного типа. Следовательно, синтаксическая структура может содержать множество синтаксических элементов. Параметры HRD уровня последовательности представляют собой параметры HRD, которые применяются ко всей кодированной видеопоследовательности. Максимальный временной идентификатор HRD (hrd_max_tid[i]) указывает временной идентификатор представления самого высокого подслоя, для которого параметры HRD содержатся в i-м наборе параметров HRD OLS. Синтаксическая структура общих параметров HRD (general_hrd_parameters) представляет собой синтаксическую структуру, которая содержит параметры HRD уровня последовательности. Рабочая точка (OP) – это временное поднабор OLS, который идентифицируется индексом OLS и наибольшим временным идентификатором. Тестируемая OP (targetOp) – это OP, выбранная для тестирования на соответствие в HRD. Целевой OLS – это OLS, выбранный для извлечения из битового потока. Флаг наличия параметров единицы декодирования HRD (decoding_unit_hrd_params_present_flag) является флагом, который указывает то, работают ли соответствующие параметры HRD в слое DU или в слое AU. Буфер кодированных изображений (CPB) представляет собой буфер обратного магазинного типа в HRD, который содержит кодированные изображения в порядке декодирования для использования во время верификации соответствия битового потока. Буфер декодированных изображений (DPB) представляет собой буфер для хранения декодированных изображений для ссылки, переупорядочивания вывода и/или задержки вывода.
Сообщение с дополнительной информацией расширения (SEI) представляет собой синтаксическую структуру с заданной семантикой, которая передает информацию, которая не требуется процессу декодирования для определения значений выборок в декодированных изображениях. Масштабируемое вкладывающее SEI-сообщение представляет собой сообщение, содержащее множество SEI-сообщений, которые соответствуют одному или более OLS или одному или более слоям. Немасштабируемое вложенное SEI-сообщение представляет собой сообщение, которое не является вложенным и, следовательно, содержит одно SEI-сообщение. SEI-сообщение периода буферизации (BP) представляет собой SEI-сообщение, которое содержит параметры HRD для инициирования HRD с целью управления CPB. SEI-сообщение таймирования изображения (PT) представляет собой SEI-сообщение, которое содержит параметры HRD для управления информацией о доставке для AU в CPB и/или DPB. SEI-сообщение информации единицы декодирования (DUI) представляет собой SEI-сообщение, которое содержит параметры HRD для управления информацией о доставке для DU в CPB и/или DPB.
Задержка удаления CPB представляет собой период времени, в течение которого соответствующая текущая AU может оставаться в CPB до удаления и вывода в DPB. Начальная задержка удаления CPB представляет собой задержку удаления CPB по умолчанию для каждого изображения, AU и/или DU в битовом потоке, OLS и/или слое. Смещение удаления CPB представляет собой местоположение в CPB, используемое для определения границ соответствующей AU в CPB. Начальное смещение удаления CPB представляет собой смещение удаления CPB по умолчанию, ассоциированное с каждым изображением, AU и/или DU в битовом потоке, OLS и/или слое. Информация задержки вывода буфера декодированного изображения (DPB) представляет собой период времени, в течение которого соответствующая AU может оставаться в DPB до вывода. Информация задержки удаления CPB представляет собой информацию, относящуюся к удалению соответствующего DU из CPB. График доставки определяет время доставки видеоданных в и/или из ячейки памяти, такой как CPB и/или DPB. ID слоя VPS (vps_layer_id) представляет собой синтаксический элемент, который указывает ID i-го слоя, указанного в VPS. Общее количество наборов слоев вывода минус один (num_output_layer_sets_minus1) плюс один – это синтаксический элемент, задающий общее количество OLS, заданных VPS. Счетчик буфера HRD-кодированного изображения (hrd_cpb_cnt_minus1) представляет собой синтаксический элемент, который определяет количество альтернативных графиков доставки CPB. Флаг наличия параметров CPB подслоя (sublayer_cpb_params_present_flag) является синтаксическим элементом, который определяет то, включает в себя ли набор параметров HRD OLS параметры HRD для заданных представлений подслоя. Индекс графика (ScIdx) – это индекс, идентифицирующий график доставки. Счетчик CPB BP минус 1 (bp_cpb_cnt_minus1) представляет собой синтаксический элемент, который указывает количество пар начальной задержки и смещения удаления CPB и, следовательно, количество графиков доставки, доступных для временного подслоя. Идентификатор слоя заголовка единицы NAL (nuh_layer_id) представляет собой синтаксический элемент, который указывает идентификатор слоя, который включает в себя единицу NAL. Синтаксический элемент общего флага фиксированной скорости изображения (fixed_pic_rate_general_flag) представляет собой синтаксический элемент, который указывает то, ограничено ли временное расстояние между моментами времени вывода HRD последовательных изображений в порядке вывода. Синтаксическая структура параметров HRD подслоя (sublayer_hrd_parameters) представляет собой синтаксическую структуру, которая включает в себя параметры HRD для соответствующего подслоя. Общий флаг наличия параметров VCL HRD (general_vcl_hrd_params_present_flag) представляет собой флаг, который указывает то, присутствуют ли параметры VCL HRD в синтаксической структуре общих параметров HRD. Синтаксический элемент максимального количества подслоев BP минус один (bp_max_sublayers_minus1) представляет собой синтаксический элемент, который указывает максимальное количество временных подслоев, для которых задержка удаления CPB и смещение удаления CPB указаны в сообщении SEI BP. Синтаксический элемент максимального количества подслоев VPS минус один (vps_max_sublayers_minus1) представляет собой синтаксический элемент, который определяет максимальное количество временных подслоев, которые могут присутствовать в слое, заданном VPS. Флаг OLS с масштабируемой вложенностью – это флаг, указывающий то, применяются ли масштабируемые вложенные SEI-сообщения к определенным OLS или конкретным слоям. Количество OLS с масштабируемой вложенностью минус один (num_olss_minus1) – это синтаксический элемент, который указывает количество OLS, к которым применяются масштабируемые вложенные SEI-сообщения. Индекс OLS вложенности (NestingOlsIdx) – это синтаксический элемент, указывающий индекс OLS для OLS, к которому применяются масштабируемые вложенные SEI-сообщения. Целевой индекс OLS (targetOlsIdx) – это переменная, которая идентифицирует индекс OLS целевого OLS, подлежащего декодированию. Общее количество OLS минус один (TotalNumOlss-1) – это синтаксический элемент, который задает общее количество OLS, заданных в VPS.
В данном документе используются следующие сокращения: адаптивный контурный фильтр (ALF), блок дерева кодирования (CTB), блок дерева кодирования (CTU), единица кодирования (CU), кодированная видеопоследовательность (CVS), буфер декодированных изображений (DPB), мгновенное обновление декодирования (IDR), точка произвольного доступа при внутрикадровом предсказании (IRAP), объединенная группа экспертов по видео (JVET), младший значащий бит (LSB), старший значащий бит (MSB), набор тайлов с ограничением по движению (MCTS), максимальная единица передачи (MTU), слой абстракции сети (NAL), счетчик очередности изображений (POC), набор параметров изображения (PPS), необработанные полезные данные последовательности байтов (RBSP), адаптивное смещение выборок (SAO), набор параметров последовательности (SPS), временное предсказание вектора движения (TMVP) и универсальное кодирование видео (VVC).
Для уменьшения размера видеофайлов с минимальной потерей данных можно использовать различные технологии сжатия видео. Например, технологии сжатия видео могут включать в себя выполнение пространственного (например, внутрикадрового) предсказания и/или временного (например, межкадрового) предсказания для уменьшения или устранения избыточности данных в видеопоследовательностях. Для кодирования видео на основе блоков видеослайс (например, видеоизображение или часть видеоизображения) может быть разделен на видеоблоки, которые также могут называться блоками дерева кодирования, блоками дерева кодирования (CTB), единицами дерева кодирования (CTU), единицами кодирования (CU) и/или узлами кодирования. Видеоблоки во внутрикадрово-кодированном (I) слайсе изображения кодируются с использованием пространственного предсказания по отношению к опорным выборам в соседних блоках в одном и том же изображении. Видеоблоки в межкадрово-кодированном слайсе изображения с однонаправленным предсказанием (P) или двунаправленным предсказанием (B) могут быть закодированы с использованием пространственного предсказания по отношению к опорным выборкам в соседних блоках в одном и том же изображении или временного предсказания по отношению к опорным выборкам в других опорных изображениях. Изображения могут упоминаться как кадры и/или изображения, и опорные изображения могут упоминаться как опорные кадры и/или опорные изображения. Пространственное или временное предсказание приводит к блоку предсказания, представляющему блок изображения. Остаточные данные представляют собой разность в пикселях между исходным блоком изображения и блоком предсказания. Соответственно, межкадрово-кодированный блок закодирован в соответствии с вектором движения, который указывает блок опорных выборок, образующих блок предсказания, и остаточными данными, указывающими различие между кодированным блоком и блоком предсказания. Внутрикадрово-кодированный блок закодирован в соответствии с режимом внутрикадрового кодирования и остаточными данными. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования. В результате это приводит к остаточным коэффициентам преобразования, которые могут квантоваться. Квантованные коэффициенты преобразования могут первоначально располагаться в двумерном массиве. Квантованные коэффициенты преобразования могут быть просканированы для получения одномерного вектора коэффициентов преобразования. Энтропийное кодирование может применяться для достижения еще большего сжатия. Такие технологии сжатия видео обсуждены более подробно ниже.
Чтобы гарантировать точное декодирование кодированного видео, видео кодируется и декодируется согласно соответствующим стандартам кодирования видео. Стандарты кодирования видео включают в себя сектор стандартизации международного союза электросвязи (ITU) (ITU-T) H.261, группу экспертов по движущимся изображениям (MPEG)-1 международной организации по стандартизации/международной электротехнической комиссии (ISO/IEC) часть 2, ITU-T H.262 или ISO/IEC MPEG-2 часть 2, ITU-T H.263, ISO/IEC MPEG-4 часть 2, усовершенствованное кодирование видео (AVC), также известное как ITU-T H.264 или ISO/IEC MPEG-4 часть 10, и высокоэффективное кодирование видео (HEVC), также известное как ITU-T H.265 или MPEG-H часть 2. AVC включает в себя такие расширения, как масштабируемое кодирование видео (SVC), кодирование многовидового видео (MVC) и кодирование многовидового видео плюс глубины (MVC+D), и трехмерное (3D) AVC (3D-AVC). HEVC включает в себя такие расширения, как масштабируемое HEVC (SHVC), многовидовое HEVC (MV-HEVC) и 3D HEVC (3D-HEVC). Объединенная группа экспертов по видео (JVET) ITU-T и ISO/IEC приступила к разработке стандарта кодирования видео, называемого универсальное кодирование видео (VVC). VVC включено в рабочий проект (WD), который включает в себя JVET-O2001-v14.
Системы кодирования видео используют различные тесты на соответствие с тем, чтобы гарантировать, что битовый поток может быть декодирован декодером. Например, проверка на соответствие может включать в себя тестирование всего битового потока на соответствие, затем проверку каждого слоя битового потока на соответствие и, наконец, проверку потенциально декодируемых выходных сигналов на соответствие. Для того, чтобы реализовать проверки на соответствие в битовом потоке включаются соответствующие параметры. Гипотетический опорный декодер (HRD) может считывать параметры и выполнять тесты. Видео может включать в себя множество слоев и множество различных наборов слоев вывода (OLS). По запросу кодер передает один или более слоев выбранного OLS. Например, кодер может передать лучший слой (слои) из OLS, который может поддерживаться текущей пропускной способностью сети. Первая проблема с этим подходом состоит в том, что значительное количество слоев тестируется, но фактически не передается в декодер. Однако параметры для поддержки такого тестирования все же могут быть включены в битовый поток, что без необходимости увеличивает размер битового потока.
В первом примере здесь раскрыт механизм для применения тестов на соответствие битового потока только к каждому OLS. Таким образом, весь битовый поток, каждый слой и декодируемые выходные сигналы совместно тестируются при тестировании соответствующего OLS. Таким образом, сокращается количество тестов на соответствие, что позволяет снизить использование ресурсов процессора и памяти в колере. Кроме того, уменьшение количества тестов на соответствие позволяет уменьшить количество связанных с ними параметров, включенных в битовый поток. Это позволяет уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.
Вторая проблема состоит в том, что процесс сигнализации параметров HRD, используемый для тестирования на соответствие HRD в некоторых системах кодирования видео, может усложняться в многослойном контексте. Например, набор параметров HRD может сигнализироваться для каждого слоя в каждом OLS. Такие параметры HRD могут сигнализироваться в разных местах в битовом потоке в зависимости от предполагаемого объема параметров. Это приводит к тому, что схема усложняется по мере добавления дополнительных слоев и/или OLS. Кроме того, параметры HRD для разных слоев и/или OLS могут содержать избыточную информацию.
Во втором примере здесь раскрыт механизм для сигнализации глобального набора параметров HRD для OLS и соответствующих слоев. Например, все параметры HRD уровня последовательности, которые применяются ко всем OLS и всем слоям, содержащимся в OLS, сигнализируются в наборе параметров видео (VPS). VPS сигнализируется один раз в битовом потоке, и, таким образом, параметры HRD уровня последовательности сигнализируются один раз. Кроме того, параметры HRD в слое последовательности могут быть ограничены одинаковыми для всех OLS. Таким образом, уменьшается избыточная сигнализация, что повышает эффективность кодирования. Кроме того, этот подход упрощает процесс HRD. В результате сокращается использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.
Третья проблема может возникнуть тогда, когда системы кодирования видео выполняют проверки на соответствие битовых потоков. Видео может быть закодировано в нескольких слоях и/или подслоях, которые затем могут быть организованы в OLS. Каждый слой и/или подслой каждого OLS проверяется на соответствие согласно графикам доставки. Каждый график доставки ассоциируется с различным размером буфера кодированного изображения (CPB) и задержкой CPB для учета различных полос пропускания передачи и возможностей системы. Некоторые системы кодирования видео позволяют каждому подслою определять любое количество графиков доставки. Это может привести к большому количеству сигналов для поддержки проверок на соответствие, что приводит к снижению эффективности кодирования для битового потока.
В третьем примере здесь раскрыты механизмы повышения эффективности кодирования для видео, включающего в себя несколько слоев. В частности, все слои и/или подслои ограничены включением одного и того же количества графиков доставки CPB. Например, кодер может определить максимальное количество графиков доставки CPB, используемых для любого одного слоя, и установить максимальное количество графиков доставки CPB для всех слоев. Затем количество графиков доставки может быть просигнализировано один раз, например, как часть параметров HRD в VPS. Это позволяет избежать необходимости указывать несколько графиков для каждого слоя/подслоя. В некоторых примерах все слои/подслои в OLS могут также совместно использовать один и тот же индекс графика доставки. Эти изменения позволяют уменьшить объем данных, используемых для передачи данных, ассоциированных с проверкой на соответствие. Это позволяет уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.
Четвертая проблема может возникнуть тогда, когда видео кодируется в нескольких слоях и/или подслоях, которые затем организуются в OLS. OLS могут включать в себя нулевой (0-й) OLS, который включает в себя только слой вывода. В битовый поток могут быть включены сообщения дополнительной расширенной информации (SEI) для информирования HRD о конкретных параметрах слоя/OLS, используемых для тестирования слоев битового потока на соответствие стандартам. В частности, масштабируемые вкладывающие SEI-сообщения применяются тогда, когда OLS включены в битовый поток. Масштабируемое вкладывающее SEI-сообщение содержит группы вложенных SEI-сообщений, которые применяются к одному или более OLS и/или одному или более слоям OLS. Каждое из вложенных SEI-сообщений может содержать указатель, указывающий ассоциацию с соответствующим OLS и/или слоем. Вложенное SEI-сообщение настроено для использования с несколькими слоями и может содержать лишнюю информацию при применении к 0-му OLS, содержащему один слой.
В четвертом примере здесь раскрыт механизм повышения эффективности кодирования для видео, включающего в себя 0-й OLS. Немасштабируемое вложенное SEI-сообщение применяется для 0-го OLS. Немасштабируемое вложенное SEI-сообщение ограничивается применением только к 0-му OLS и, следовательно, только к слою вывода, содержащемуся в 0-м OLS. Таким образом, лишняя информация, такая как соотношения вложенности, указатели слоев и т.д., может быть исключена из SEI-сообщения. Немасштабируемое вложенное SEI-сообщение может использоваться как SEI-сообщение периода буферизации (BP), SEI-сообщение таймирования изображения (PT), SEI-сообщение единицы декодирования (DU) или их комбинации. Эти изменения позволяют уменьшить объем данных, используемых для сигнализации информации, относящейся к проверке на соответствие, для 0-го OLS. Это позволяет уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.
Пятая проблема также может возникнуть тогда, когда видео разделено на множество слоев и/или подслоев. Кодер может кодировать эти слои в битовый поток. Кроме того, кодер может использовать HRD для выполнения тестов на соответствие с тем, чтобы проверить битовый поток на соответствие стандартам. Кодер может быть выполнен с возможностью включения специфичных для слоя параметров HRD в битовый поток для поддержки таких тестов на соответствие. Специфичные для слоя параметры HRD могут быть закодированы для каждого слоя в некоторых системах кодирования видео. В некоторых случаях специфичные для слоя параметры HRD являются одинаковыми для каждого слоя, что приводит к избыточной информации, которая без необходимости увеличивает размер кодирования видео.
В пятом примере здесь раскрыты механизмы для уменьшения избыточности параметров HRD для видео, которые используют несколько слоев. Кодер может кодировать параметры HRD для самого высокого слоя. Кодер также может кодировать флаг наличия параметров CPB подслоя (sublayer_cpb_params_present_flag). Флаг sublayer_cpb_params_present_flag может быть установлен равным нулю, чтобы указать то, что все нижние слои должны использовать те же самые параметры HRD, что и самый высокий слой. В этом контексте самый высокий слой имеет наибольший идентификатор слоя (ID), и нижний слой представляет собой любой слой, который имеет ID слоя, который меньше ID слоя самого высокого слоя. Таким образом, параметры HRD для нижних слоев могут быть исключены из битового потока. Это позволяет уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.
Шестая проблема относится к использованию наборов параметров последовательности (SPS) для содержания синтаксических элементов, относящихся к каждой видеопоследовательности в видео. Системы кодирования видео могут кодировать видео в слоях и/или подслоях. Видеопоследовательности могут работать по-разному в разных слоях и/или подслоях. Следовательно, разные слои могут относиться к разным SPS. SEI-сообщение BP может указывать слои/подслои, подлежащие проверке на соответствие стандартам. Некоторые системы кодирования видео могут указывать то, что SEI-сообщение BP применяется к слоям/подслоям, указанным в SPS. Это может вызвать проблемы в том случае, когда разные слои ссылаются на разные SPS, так как такие SPS могут содержать противоречивую информацию, что приводит к непредвиденным ошибкам.
В шестом примере здесь раскрыты механизмы устранения ошибок, связанных с проверкой на соответствие, когда в видеопоследовательности используется несколько слоев. В частности, SEI-сообщение BP модифицируется с тем, чтобы указать то, что любое количество слоев/подслоев, описанных в VPS, может быть проверено на соответствие. Например, SEI-сообщение BP может содержать синтаксический элемент максимального количества подслоев BP минус один (bp_max_sublayers_minus1), который указывает количество слоев/подслоев, которые ассоциируются с данными в SEI-сообщении BP. Между тем, синтаксический элемент максимальное количество подслоев VPS минус один (vps_max_sublayers_minus1) в VPS указывает количество подслоев во всем видео. Синтаксический элемент bp_max_sublayers_minus1 может быть установлен на любое значение от нуля до значения синтаксического элемента vps_max_sublayers_minus1. Таким образом, любое количество слоев/подслоев в видео может быть проверено на соответствие во избежание проблем последовательности на основе слоев, связанных с непостоянством SPS. Соответственно, настоящее раскрытие позволяет избежать ошибок кодирования на основе слоев и, следовательно, увеличить функциональные возможности кодера и/или декодера. Кроме того, настоящий пример поддерживает кодирование на основе слоев, что может повысить эффективность кодирования. Таким образом, настоящий пример поддерживает уменьшенное использование процессора, памяти и/или сетевых ресурсов в кодере и/или декодере.
Седьмая проблема относится к слоям, которые включены в OLS. Каждый OLS содержит по меньшей мере один слой вывода, который выполнен с возможностью отображения в декодере. HRD в кодере может проверить каждый OLS на соответствие стандартам. Соответствующий OLS всегда можно декодировать и отобразить в соответствующем декодере. Процесс HRD может частично управляться SEI-сообщениями. Например, масштабируемое вкладывающее SEI-сообщение может содержать масштабируемые вложенные SEI-сообщения. Каждое масштабируемое вложенное SEI-сообщение может содержать данные, относящиеся к соответствующему слою. При выполнении проверки на соответствие HRD может выполнять процесс извлечения битового потока в целевом OLS. Данные, которые не относятся к слоям в OLS, как правило, удаляются до проверки на соответствие с тем, чтобы можно было проверить каждый OLS отдельно (например, перед передачей). Некоторые системы кодирования видео не удаляют масштабируемые вкладывающие SEI-сообщения во время процесса извлечения битового подпотока, так как такие сообщения относятся к нескольким слоям. Это может привести к тому, что масштабируемые вкладывающие SEI-сообщения останутся в битовом потоке после извлечения битового подпотока даже в том случае, если масштабируемые вкладывающие SEI-сообщения не относятся к какому-либо слою в целевом OLS (OLS, подлежащем извлечению). Это может увеличить размер конечного битового потока без предоставления каких-либо дополнительных функций.
В седьмом примере здесь раскрыты механизмы для уменьшения размера многослойных битовых потоков. Во время извлечения битового подпотока масштабируемые вкладывающие SEI-сообщения могут быть рассмотрены для удаления из битового потока. Когда масштабируемое вкладывающее SEI-сообщение относится к одному или более OLS, проверяются масштабируемые вложенные SEI-сообщения в масштабируемом вкладывающем SEI-сообщении. Когда масштабируемые вложенные SEI-сообщения не относятся к какому-либо слою в целевом OLS, то масштабируемое вкладывающее SEI-сообщение может быть полностью удалено из битового потока. Это приводит к уменьшению размера битового потока, отправляемого в декодер. Соответственно, настоящие примеры повышают эффективность кодирования и уменьшают использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.
На фиг.1 показана блок-схема последовательности операций примерного способа 100 кодирования видеосигнала. В частности, видеосигнал кодируется в кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы, чтобы уменьшить размер видеофайла. Меньший размер файла позволяет передавать сжатый видеофайл пользователю, уменьшая при этом ассоциированные с этим издержки на полосу пропускания. Затем декодер декодирует сжатый видеофайл, чтобы восстановить исходный видеосигнал для отображения конечному пользователю. Процесс декодирования, как правило, повторяет процесс кодирования, что позволяет декодеру последовательно восстанавливать видеосигнал.
На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может быть несжатым видеофайлом, хранящимся в памяти. В качестве другого примера, видеофайл может быть захвачен устройством видеозахвата, таким как видеокамера, и кодирован для поддержки прямой потоковой передачи видео. Видеофайл может включать в себя как компонент аудио, так и компонент видео. Компонент видео содержит ряд кадров изображения, которые при последовательном просмотре создают визуальное впечатление движения. Кадры содержат пиксели, которые выражены с точки зрения света, называемого в данном документе компонентами яркости (или выборками яркости), и цвета, который упоминается как компоненты цветности (или выборки цвета). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.
На этапе 103 видео разделяется на блоки. Разделение включает в себя разделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, в высокоэффективном кодировании видео (HEVC) (также известном как H.265 и MPEG-H часть 2) кадр может быть сначала разделен на единицы дерева кодирования (CTU), которые представляют собой блоки заданного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). CTU содержат как выборки яркости, так и выборки цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, и затем для рекурсивного подразделения блоков до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, компоненты яркости кадра могут разделяться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения света. Кроме того, компоненты цветности кадра могут разделяться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения различаются в зависимости от содержания видеокадров.
На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, разделенных на этапе 103. Например, может использоваться межкадровое предсказание и/или внутрикадровое предсказание. Межкадровое предсказание предназначено для использования того факта, что объекты в общей сцене имеют тенденцию появляться в виде следующих друг за другом кадрах. Соответственно, блок, изображающий объект в опорном кадре, не нужно повторно описывать в соседних кадрах. В частности, объект, такой как таблица, может оставаться в постоянной позиции в течение нескольких кадров. Следовательно, таблица описывается один раз, и соседние кадры могут ссылаться на опорный кадр. Механизмы сопоставления шаблонов могут использоваться для сопоставления объектов в нескольких кадрах. Кроме того, движущиеся объекты могут быть представлены в нескольких кадрах, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется на экране в течение нескольких кадров. Для описания такого движения можно использовать векторы движения. Вектор движения – это двумерный вектор, обеспечивающий смещение координат объекта в кадре до координат объекта в опорном кадре. Таким образом, межкадровое предсказание позволяет кодировать блок изображения в текущем кадре как набор векторов движения, указывающих смещение от соответствующего блока в опорном кадре.
При внутрикадровом предсказании блоки кодируются в общем кадре. Внутрикадровое предсказание использует тот факт, что компоненты яркости и цветности имеют тенденцию группироваться в кадре. Например, участок зелени в части дерева имеет тенденцию располагаться рядом с аналогичными участками зелени. Внутрикадровое предсказание использует несколько режимов направленного предсказания (например, тридцать три в HEVC), планарный режим и режим постоянного тока (DC). Направленные режимы указывают, что текущий блок является аналогичным/таким же, как выборки соседнего блока в соответствующем направлении. Планарный режим указывает то, что последовательность блоков по строкам/столбцам (например, в плоскости) может быть интерполирована на основе соседних блоков на краях строки. Планарный режим по существу указывает на плавный переход света/цвета по строке/столбцу за счет использования относительно постоянного наклона при изменении значений. Режим DC используется для сглаживания границ и указывает то, что блок является аналогичным/таким же, как среднее значение, ассоциированное с выборками всех соседних блоков, ассоциированных с угловыми направлениями режимов направленного предсказания. Соответственно, блоки внутрикадрового предсказания могут представлять блоки изображений как различные относительные значения режима предсказания вместо фактических значений. Кроме того, блоки межкадрового предсказания могут представлять блоки изображений как значения векторов движения вместо фактических значений. Так или иначе, в некоторых случаях блоки предсказания могут не точно представлять блоки изображений. Любые различия сохраняются в остаточных блоках. Преобразования могут быть применены к остаточным блокам для дальнейшего сжатия файла.
На этапе 107 могут применяться различные технологии фильтрации. В HEVC фильтры применяются в соответствии со схемой внутриконтурной фильтрации. Предсказание на основе блоков, рассмотренное выше, может привести к созданию блочных изображений в декодере. Кроме того, схема предсказания на основе блоков позволяет кодировать блок, и затем восстанавливать кодированный блок для последующего использования в качестве опорного блока. Схема внутриконтурной фильтрации итеративно применяет к блокам/кадрам фильтры подавления шума, деблокирующие фильтры, адаптивные контурные фильтры и фильтры адаптивного смещения выборок (SAO). Эти фильтры уменьшают такие артефакты блокировки для того, чтобы можно было точно восстановить кодированный файл. Кроме того, эти фильтры уменьшают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью создают дополнительные артефакты в последующих блоках, которые кодируются на основе восстановленных опорных блоков.
После того, как видеосигнал был разделен, сжат и отфильтрован, результирующие данные кодируются в битовый поток на этапе 109. Битовый поток включает в себя данные, рассмотренные выше, а также любые данные сигнализации, необходимые для поддержки надлежащего восстановления видеосигнала в декодере. Например, такие данные могут включать в себя данные разделения, данные предсказания, остаточные блоки и различные флаги, предоставляющие декодеру инструкции по кодированию. Битовый поток может храниться в памяти для передачи в декодер по запросу. Битовый поток может быть также широковещательно и/или многоадресно передан в множество декодеров. Создание битового потока является итеративным процессом. Соответственно, этапы 101, 103, 105, 107 и 109 могут выполняться непрерывно и/или одновременно во многих кадрах и блоках. Порядок, показанный на фиг.1, представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса кодирования видео определенным порядком.
Декодер принимает битовый потока и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующий синтаксис и видеоданные. Декодер использует синтаксические данные из битового потока для определения разделов для кадров на этапе 111. Разделение должно совпадать с результатами разделения блоков на этапе 103. Теперь будет описано энтропийное кодирование/декодирование, используемое на этапе 111. В процессе сжатия кодер делает выбор из различных вариантов, например, выбирает схемы разделения блоков из нескольких возможных вариантов на основе пространственного позиционирования значений во входном(ых) изображении(ях). Сигнализация точного выбора может использовать большое количество бинов. В используемом в данном документе значении бин представляет собой двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может изменяться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбрасывать любые варианты, которые явным образом не подходят для конкретного случая, оставляя набор допустимых вариантов. Затем каждому допустимому варианту присваивается кодовое слово. Длина кодовых слов зависит от количества допустимых вариантов (например, один бин для двух вариантов, два бина для трех-четырех вариантов и т.д.). Затем кодер кодирует кодовое слово для выбранного варианта. Эта схема уменьшает размер кодовых слов, так как кодовые слова настолько велики, насколько это необходимо, чтобы однозначно указывать выбор из небольшого подмножества допустимых вариантов, в отличие от однозначного указания выбора из потенциально большого набора всех возможных вариантов. Затем декодер декодирует выбранный вариант, определяя набор допустимых опций аналогично кодеру. Определив набор допустимых вариантов, декодер может считать кодовое слово и определить выбор, сделанный кодером.
На этапе 113 декодер выполняет блочное декодирование. В частности, декодер использует обратные преобразования для выработки остаточных блоков. Затем декодер использует остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения в соответствии с разделением. Блоки предсказания могут включать в себя как блоки внутрикадрового предсказания, так и блоки межкадрового предсказания, выработанные кодером на этапе 105. Блоки восстановленного изображения затем помещаются в кадры восстановленного видеосигнала в соответствии с данными разделения, определенными на этапе 111. Синтаксис на этапе 113 также может быть обозначен в битовом потоке с помощью энтропийного кодирования, как обсуждалось выше.
На этапе 115 выполняется фильтрация кадров восстановленного видеосигнала способом, аналогичным этапу 107 в кодере. Например, фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры SAO могут применяться к кадрам для удаления артефактов блочности. Как только кадры отфильтрованы, видеосигнал может быть выведен на дисплей на этапе 117 для просмотра конечным пользователем.
На фиг.2 показано схематичное представление примерной системы 200 кодирования и декодирования (кодека) для кодирования видео. В частности, система 200 кодирования/декодирования обеспечивает функциональные возможности для поддержки реализации способа 100 функционирования. Система 200 кодирования/декодирования обобщена для отображения компонентов, используемых как в кодере, так и в декодере. Система 200 кодирования/декодирования принимает и разделяет видеосигнал, как описано в отношении этапов 101 и 103 в способе 100 функционирования, в результате чего получается разделенный видеосигнал 201. Затем система 200 кодирования/декодирования сжимает разделенный видеосигнал 201 в кодированный битовый поток, действуя в качестве кодера, как описано в отношении этапов 105, 107 и 109 в способе 100. При работе в качестве декодера система 200 кодирования/декодирования вырабатывает выходной видеосигнал из битового потока, как описано в отношении этапов 111, 113, 115 и 117 в способе 100 функционирования. Система 200 кодирования/декодирования включает в себя компонент 211 общего управления кодером, компонент 213 преобразования с масштабированием и квантования, компонент 215 внутрикадровой оценки, компонент 217 внутрикадрового предсказания, компонент 219 компенсации движения, компонент 221 оценки движения, компонент 229 масштабирования и обратного преобразования, компонент 227 анализа управления фильтром, компонент 225 внутриконтурных фильтров, компонент 223 буфера декодированного изображения и компонент 231 форматирования заголовка и контекстно-адаптивного двоичного арифметического кодирования (CABAC). Такие компоненты соединены так, как показано на чертеже. На фиг.2 черные линии указывают перемещение данных, подлежащих кодированию/декодированию, и пунктирные линии указывают перемещение управляющих данных, которые управляют работой других компонентов. Все компоненты системы 200 кодирования/декодирования могут присутствовать в кодере. Декодер может включать в себя подмножество компонентов системы 200 кодирования/декодирования. Например, декодер может включать в себя компонент 217 внутрикадрового предсказания, компонент 219 компенсации движения, компонент 229 масштабирования и обратного преобразования, компонент 225 внутриконтурных фильтров, и компонент 223 буфера декодированного изображения. Теперь эти компоненты будут описаны.
Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей с помощью дерева кодирования. Дерево кодирования использует различные режимы разделения для разделения блока пикселей на более мелкие блоки пикселей. Затем эти блоки можно разделить на еще более мелкие блоки. Блоки могут называться узлами дерева кодирования. Более крупные родительские узлы разделяются на более мелкие дочерние узлы. Количество раз, когда узел подразделяется, называется глубиной узла/дерева кодирования. В некоторых случаях разделенные блоки могут быть включены в единицы кодирования (CU). Например, CU может быть частью CTU, которая содержит блок яркости, блок(и) красной разностной цветности (Cr) и блок(и) синей разностной цветности (Cb) вместе с соответствующими синтаксическими инструкциями для КР. Режимы разделения могут включать в себя двоичное дерево (BT), троичное дерево (TT) и квадродерево (QT), используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различной формы в зависимости от используемых режимов разделения. Разделенный видеосигнал 201 направляется в компонент 211 общего управления кодером, компонент 213 преобразования с масштабированием и квантования, компонент 215 внутрикадровой оценки, компонент 227 анализа управления фильтром и компонент 221 оценки движения для сжатия.
Компонент 211 общего управления кодером выполнен с возможностью принятия решений, ассоциированных с кодированием изображений видеопоследовательности в битовый поток в соответствии с ограничениями приложения. Например, компонент 211 общего управления кодером управляет оптимизацией размер битовой скорости/битового потока в зависимости от качества восстановления. Такие решения могут приниматься на основе наличия дискового пространства/пропускной способности и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет использованием буфера в свете скорости передачи, чтобы смягчить проблемы опустошения и переполнения буфера. Чтобы справиться с этими проблемами, компонент 211 общего управления кодером управляет разделением, предсказанием и фильтрацией с помощью других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшать сложность сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодирования/декодирования, чтобы сбалансировать качество восстановления видеосигнала с проблемами скорости передачи битов. Компонент 211 общего управления кодером создает управляющие данные, которые управляют работой других компонентов. Управляющие данные также направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовый поток для сигнализации параметров для декодирования в декодере.
Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для межкадрового предсказания. Кадр или часть разделенного видеосигнала 201 может быть разделена на множество видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняют межкадровое кодирование с предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного предсказания. Система 200 кодирования/декодирования может выполнять несколько проходов кодирования, например, для выбора соответствующего режима кодирования для каждого блока видеоданных.
Компонент 221 оценки движения и компонент 219 компенсации движения могут быть в высокой степени интегрированы, но проиллюстрированы отдельно для концептуальных целей. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс выработки векторов движения, в котором оценивается движение для видеоблоков. Например, вектор движения может указывать смещение кодированного объекта относительно блока предсказания. Блок предсказания – это блок, который точно соответствует кодируемому блоку с точки зрения разности пикселей. Блок предсказания также может упоминаться как опорный блок. Такая разность пикселей может быть определена с помощью суммы абсолютной разности (SAD), суммы квадратов разностей (SSD) или другими показателями разности. HEVC использует несколько кодированных объектов, включая CTU, блоки дерева кодирования (CTB) и CU. Например, CTU можно разделить на CTB, которые затем можно разделить на CB для включения в CU. CU может быть закодирована как единица предсказания (PU), содержащая данные предсказания, и/или единицу преобразования (TU), содержащую преобразованные остаточные данные для CU. Компонент 221 оценки движения вырабатывает векторы движения, PU и TU, используя анализ характеристики «скорость-искажение» как часть процесса оптимизации характеристики «скорость-искажение». Например, компонент 221 оценки движения может определить несколько опорных блоков, множество векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д, имеющие наилучшие характеристики «скорость-искажение». Наилучшие характеристики «скорость-искажение» уравновешивают качество восстановления видео (например, объем потерь данных при сжатии) с эффективностью кодирования (например, размер окончательного кодирования).
В некоторых примерах система 200 кодирования/декодирования может вычислять значения для позиций субцелых пикселей опорных изображений, сохраненных в компоненте 223 буфера декодированных изображений. Например, система 200 кодирования/декодирования видео может интерполировать значения позиций четверти пикселей, позиции одной восьмой пикселей или другие позиции дробных пикселей опорного изображения. Таким образом, компонент 221 оценки движения может выполнять поиск движения относительно позиций целых пикселей и позиций дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для PU видеоблока в межкадровом кодированном слайсе путем сравнения позиции PU с позицией блока предсказания опорного изображения. Компонент 221 оценки движения выводит вычисленный вектор движения в виде данных движения для форматирования заголовка, и компонент 231 CABAC для кодирования и движения к компоненту 219 компенсации движения.
Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать выборку или выработку блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, в некоторых примерах компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы. После приема вектора движения для PU текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок путем вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, формируя значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, и компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок направляются в компонент 213 преобразования с масштабированием и квантования.
Разделенный видеосигнал 201 также отправляется в компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания. Как и в случае компонента 221 оценки движения и компонента 219 компенсации движения, компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания могут быть сильно интегрированы, но они проиллюстрированы по отдельности для концептуальных целей. Компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания внутрикадрово предсказывают текущий блок относительно блоков в текущем кадре в качестве альтернативы межкадровому предсказанию, выполняемому компонентом 221 оценки движения и компонентом 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 внутрикадровой оценки определяет режим внутрикадрового предсказания, который используется для кодирования текущего блока. В некоторых примерах компонент 215 внутрикадровой оценки выбирает соответствующий режим внутрикадрового предсказания для кодирования текущего блока из нескольких протестированных режимов внутрикадрового предсказания. Выбранные режимы внутрикадрового предсказания затем направляются в компонент форматирования заголовка и CABAC 231 для кодирования.
Например, компонент 215 внутрикадровой оценки вычисляет значения скорости-искажения, используя анализ характеристики «скорость-искажение» для различных протестированных режимов внутрикадрового предсказания и выбирает режим внутрикадрового предсказания, имеющий наилучшие характеристики скорости-искажения среди протестированных режимов. Как правило, анализ характеристики «скорость-искажение» определяет степень искажения (или ошибки) между кодированным блоком и исходным некодированным блоком, который был закодирован для получения кодированного блока, а также битовой скорости (например, количества битов), используемой для получения кодированного блока. Компонент 215 внутрикадровой оценки вычисляет соотношения из искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим внутрикадрового предсказания демонстрирует наилучшее значение скорости-искажения для блока. В дополнение к этому, компонент 215 внутрикадровой оценки может быть выполнен с возможностью кодирования блоков глубины карты глубины с использованием режима моделирования глубины (DMM) на основе оптимизации характеристики «скорость-искажение» (RDO).
Компонент 217 внутрикадрового предсказания может вырабатывать остаточный блок из блока предсказания на основе выбранных режимов внутрикадрового предсказания, определенных компонентом 215 внутрикадровой оценки, когда он реализован в кодере, или считывать остаточный блок из битового потока в случае реализации в декодере. Остаточный блок включает в себя разность значений между блоком предсказания и исходным блоком, представленным в виде матрицы. Затем остаточный блок направляется компоненту 213 преобразования с масштабированием и квантования. Компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания могут работать как с компонентами яркости, так и с компонентами цветности.
Компонент 213 преобразования с масштабированием и квантования выполнен с возможностью дополнительного сжатия остаточного блока. Компонент 213 преобразования с масштабированием и квантования применяет преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусоидальное преобразование (DST) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий остаточные значения коэффициентов преобразования. Кроме того, можно также использовать вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. Преобразование позволяет преобразовать информацию остатка из области пиксельных значений в область преобразования, такую как частотная область. Компонент 213 преобразования с масштабированием и квантования также выполнен с возможностью масштабирования преобразованной остаточной информации, например, на основе частоты. Такое масштабирование включает применение коэффициента масштабирования к остаточной информации таким образом, чтобы информация о разных частотах квантовалась с разной степенью детализации, что может повлиять на конечное визуальное качество восстановленного видео. Компонент 213 преобразования с масштабированием и квантования также выполнен с возможностью квантования коэффициентов преобразования для дальнейшего снижения скорости передачи битов. Процесс квантования позволяет уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена посредством регулировки параметра квантования. В некоторых примерах компонент 213 преобразования с масштабированием и квантования может затем выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования направляются в компонент форматирования заголовка и CABAC 231 для кодирования в битовый поток.
Компонент 229 масштабирования и обратного преобразования применяет обратную операцию компонента 213 преобразования с масштабированием и квантования для поддержки оценки движения. Компонент 229 масштабирования и обратного преобразования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в пиксельной области, например, для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения могут вычислять опорный блок путем добавления остаточного блока обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. К восстановленным опорным блокам применяются фильтры для устранения артефактов, возникающих во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.
Компонент 227 анализа управления фильтром и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 масштабирования и обратного преобразования может быть объединен с соответствующим блоком предсказания из компонента 217 внутрикадрового предсказания и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах вместо этого фильтры могут применяться к остаточным блокам. Как и в случае с другими компонентами, показанными на фиг.2, компонент 227 анализа управления фильтром и компонент 225 внутриконтурных фильтров в высокой степени интегрированы и могут быть реализованы вместе, но изображены отдельно для концептуальных целей. Фильтры, применяемые к восстановленным опорным блокам, применяются к конкретным областям пространства и включают в себя несколько параметров для регулировки применения таких фильтров. Компонент 227 анализа управления фильтром анализирует восстановленные опорные блоки, чтобы определить то, где такие фильтры должны применяться, и устанавливает соответствующие параметры. Такие данные направляются в компонент 231 форматирования заголовка и CABAC в качестве данных управления фильтром для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе данных управления фильтром. Фильтры могут включать в себя фильтр устранения блочности, фильтр подавления шума, фильтр SAO и адаптивный контурной фильтр. В зависимости от примера такие фильтры могут применяться в пространственной/пиксельной области (например, к восстановленному блоку пикселей) или в частотной области.
При работе в качестве кодера отфильтрованный восстановленный блок изображения, остаточный блок и/или блок предсказания сохраняются в компоненте 223 буфера декодированного изображения для последующего использования при оценке движения, как обсуждалось выше. При работе в качестве декодера компонент 223 буфера декодированных изображений сохраняет и пересылает восстановленные и отфильтрованные блоки в дисплей как часть выходного видеосигнала. Компонент 223 буфера декодированного изображения может быть любым запоминающим устройством, способным хранить блоки предсказания, остаточные блоки и/или блоки восстановленного изображения.
Компонент 231 форматирования заголовка и CABAC принимает данные из различных компонентов системы 200 кодирования/декодирования и кодирует такие данные в кодированный битовый поток для передачи в декодер. В частности, компонент 231 форматирования заголовка и CABAC вырабатывает различные заголовки для кодирования данных управления, таких как общие данные управления и данные управления фильтром. Кроме того, данные предсказания, включая данные внутрикадрового предсказания и движения, а также остаточные данные в виде данных квантованных коэффициентов преобразования, кодируются полностью в битовый поток. Окончательный битовый поток включает в себя всю информацию, необходимую декодеру для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов внутрикадрового режима предсказания (также называемые таблицами сопоставления кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов внутрикадрового предсказания, указание информации раздела и т.д. Такие данные могут быть закодированы с применением энтропийного кодирования. Например, информация может быть закодирована с использованием контекстно-адаптивного кодирования переменной длины (CAVLC), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), вероятностного межкадрового энтропийного кодирования (PIPE) или другого способа энтропийного кодирования. После энтропийного кодирования кодированный битовый поток может быть передан в другое устройство (например, видеодекодер) или заархивирован для последующей передачи или извлечения.
На фиг.3 показана блок-схема, иллюстрирующая примерный видеокодер 300. Видеокодер 300 может использоваться для реализации функций кодирования системы 200 кодирования/декодирования и/или реализации этапов 101, 103, 105, 107 и/или 109 способа 100 функционирования. Кодер 300 разделяет входной видеосигнал, в результате чего получается разделенный видеосигнал 301, который по существу аналогичен разделенному видеосигналу 201. Затем разделенный видеосигнал 301 сжимается и кодируется в битовый поток компонентами кодера 300.
В частности, разделенный видеосигнал 301 направляется в компонент 317 внутрикадрового предсказания для внутрикадрового предсказания. Компонент 317 внутрикадрового предсказания может быть по существу аналогичен компоненту 215 внутрикадровой оценки и компоненту 217 внутрикадрового предсказания. Разделенный видеосигнал 301 также направляется в компонент 321 компенсации движения для межкадрового предсказания на основе опорных блоков в компоненте 323 буфера декодированных изображений. Компонент 321 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и компоненту 219 компенсации движения. Блоки предсказания и остаточные блоки из компонента 317 внутрикадрового предсказания и компонента 321 компенсации движения направляются в компонент 313 преобразования и квантования для преобразования и квантования остаточных блоков. Компонент 313 преобразования и квантования может быть по существу аналогичен компоненту 213 преобразования с масштабированием и квантования. Преобразованные и квантованные остаточные блоки и соответствующие блоки предсказания (вместе с соответствующими управляющими данными) направляются в компонент 331 энтропийного кодирования для кодирования в битовый поток. Компонент 331 энтропийного кодирования может быть по существу аналогичен компоненту 231 форматирования заголовка и CABAC.
Преобразованные и квантованные остаточные блоки и/или соответствующие блоки предсказания также направляются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 обратного преобразования и квантования может быть по существу аналогичен компоненту 229 масштабирования и обратного преобразования. Внутриконтурные фильтры в компоненте 325 внутриконтурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 внутриконтурных фильтров может быть по существу аналогичен компоненту 227 анализа управления фильтром и компоненту 225 внутриконтурных фильтров. Компонент 325 внутриконтурных фильтров может включать в себя множество фильтров, как описано в отношении компонента 225 внутриконтурных фильтров. Отфильтрованные блоки затем сохраняются в компоненте 323 буфера декодированных изображений для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированных изображений может быть по существу аналогичен компоненту 223 буфера декодированных изображений.
На фиг.4 показана блок-схема, иллюстрирующая примерный видеодекодер 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодирования/декодирования и/или реализации этапов 111, 113, 115 и/или 117 способа 100 функционирования. Декодер 400 принимает битовый поток, например, из кодера 300, и вырабатывает восстановленный выходной видеосигнал на основе битового потока для отображения конечному пользователю.
Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как кодирование CAVLC, CABAC, SBAC, PIPE или другие технологии энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка для предоставления контекста для интерпретации дополнительных данных, кодированных как кодовые слова в битовый поток. Декодированная информация включает в себя любую требуемую информацию для декодирования видеосигнала, такую как общие данные управления, данные управления фильтром, информацию разделения, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования направляются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.
Восстановленные остаточные блоки и/или блоки предсказания направляются в компонент 417 внутрикадрового предсказания для восстановления в блоки изображений на основе операций внутрикадрового предсказания. Компонент 417 внутрикадрового предсказания может быть аналогичен компоненту 215 внутрикадровой оценки и компоненту 217 внутрикадрового предсказания. В частности, компонент 417 внутрикадрового предсказания использует режимы предсказания для обнаружения опорного блока в кадре и применяет остаточный блок к результату для восстановления внутрикадрово предсказанных блоков изображения. Восстановленные внутрикадрово предсказанные блоки изображения, и/или остаточные блоки и соответствующие данные межкадрового предсказания направляются в компонент 423 буфера декодированных изображений через компонент 425 внутриконтурных фильтров, который может быть по существу аналогичен компоненту 223 буфера декодированных изображений и в компонент 225 внутриконтурных фильтров, соответственно. Компонент 425 внутриконтурных фильтров фильтрует восстановленные блоки изображений, остаточные блоки и/или блоки предсказания, и такая информация сохраняется в компоненте 423 буфера декодированного изображения. Восстановленные блоки изображений из компонента 423 буфера декодированного изображения направляются в компонент 421 компенсации движения для межкадрового предсказания. Компонент 421 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для формирования блока предсказания и применяет остаточный блок к результату для восстановления блока изображения. Результирующие восстановленные блоки также могут быть перенаправлены через компонент 425 внутриконтурных фильтров в компонент 423 буфера декодированных изображений. Компонент 423 буфера декодированных изображений продолжает хранить дополнительные восстановленные блоки изображений, которые могут быть восстановлены в кадры с использованием информации разделения. Такие кадры также могут быть помещены в последовательность. Последовательность выводится на дисплей в виде восстановленного выходного видеосигнала.
На фиг.5 показано схематичное представление, иллюстрирующее примерный HRD 500. HRD 500 может использоваться в кодере, таком как система 200 кодека и/или кодер 300. HRD 500 может проверить битовый поток, созданный на этапе 109 способа 100, прежде чем битовый поток будет направлен в декодер, такой как декодер 400. В некоторых примерах битовый поток может непрерывно пересылаться через HRD 500 по мере кодирования битового потока. В случае, если часть битового потока не соответствует ассоциированным ограничениям, HRD 500 может указать такой сбой кодеру, чтобы заставить кодер повторно кодировать соответствующую часть битового потока с помощью других механизмов.
HRD 500 включает в себя гипотетический планировщик потока (HSS 541. HSS 541 представляет собой компонент, выполненный с возможностью выполнения гипотетического механизма доставки. Гипотетический механизм доставки используется для проверки на соответствие битового потока или декодера по отношению к таймированию и потоку данных битового потока 551, вводимого в HRD 500. Например, HSS 541 может принимать битовый поток 551, выходящий из кодера, и управлять процессом тестирования на соответствие битового потока 551. В конкретном примере HSS 541 может управлять скоростью, с которой кодированные изображения проходят через HRD 500, и верифицировать то, что битовый поток 551 не содержит несоответствующих данных.
HSS 541 может переслать битовый поток 551 CPB 543 с заданной скоростью. HRD 500 может управлять данными в единицах декодирования (DU) 553. DU 553 представляет собой AU или поднабор AU и ассоциированные единицы слоя абстракции сети (NAL) слоя без кодирования видео (VCL). В частности, AU содержит одно или более изображений, ассоциированных с временем вывода. Например, AU может содержать одно изображение в однослойном битовом потоке и может содержать изображение для каждого слоя в многослойном битовом потоке. Каждое изображение AU может быть разделено на слайсы, каждый из которых включен в соответствующую единицу NAL VCL. Следовательно, DU 553 может содержать одно или более изображений, один или более слайсов изображения или их комбинации. Кроме того, параметры, используемые также для декодирования AU, изображений и/или слайсов, могут быть включены в единицы NAL без VCL. Таким образом, DU 553 содержит единицы NAL без VCL, которые содержат данные, необходимые для поддержки декодирования единиц NAL VCL в DU 553. CPB 543 является буфером обратного магазинного типа в HRD 500. CPB 543 содержит DU 553, в том числе видеоданные в порядке декодирования. CPB 543 сохраняет видеоданные для использования во время верификации соответствия битового потока.
CPB 543 пересылает DU 553 в компонент 545 процесса декодирования. Компонент 545 процесса декодирования является компонентом, который соответствует стандарту VVC. Например, компонент 545 процесса декодирования может эмулировать декодер 400, используемый конечным пользователем. Компонент 545 процесса декодирования декодирует DU 553 со скоростью, которая может быть достигнута примерным декодером конечного пользователя. Если компонент 545 процесса декодирования не может декодировать DU 553 достаточно быстро, чтобы предотвратить переполнение CPB 543, то битовый поток 551 не соответствует стандарту и должен быть повторно закодирован.
Компонент 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.
Изображения 557 направляются в компонент 549 кадрирования вывода. Компонент 549 кадрирования вывода выполнен с возможностью применения окна кадрирования соответствия к изображениям 557. В результате получаются выходные кадрированные изображения 559. Соответственно, выходное кадрированное изображение 559 имитирует то, что конечный пользователь увидит при декодировании битового потока 551. Таким образом, кодер может просматривать выходные кадрированные изображения 559, чтобы гарантировать удовлетворительное кодирование.
HRD 500 инициируется на основе параметров HRD в битовом потоке 551. Например, HRD 500 может считывать параметры HRD из сообщений VPS, SPS и/или SEI. Затем HRD 500 может выполнять операции тестирования на соответствие битового потока 551 на основе информации в таких параметрах HRD. В качестве конкретного примера, HRD 500 может определить один или более графиков 561 доставки CPB из параметров HRD. График доставки определяет время доставки видеоданных в и/или из ячейки памяти, такой как CPB и/или DPB. Следовательно, график 561 доставки CPB указывает время доставки AU, DU 553 и/или изображений в/из CPB 543. Например, график 561 доставки CPB может описывать скорости передачи битов и размеры буфера для CPB 543, где такие скорости передачи данных и размеры буфера соответствуют конкретному классу декодера и/или состоянию сети. Следовательно, график 561 доставки CPB может указывать то, как долго данные могут оставаться в CPB 543 до вытеснения. Неспособность поддерживать график 561 доставки CPB в HRD 500 во время теста на соответствие является признаком того, что декодер, который соответствует графику 561 доставки CPB, не сможет декодировать соответствующий битовый поток. Следует отметить, что HRD 500 может использовать графики доставки DPB для DPB 547, которые аналогичны графикам доставки CPB 561.
Видео может быть закодировано в различных слоях и/или OLS для использования декодерами с различными уровнями аппаратных возможностей, а также для различных сетевых условий. Графики 561 доставки CPB выбираются для отражения этих проблем. Соответственно, битовые подпотоки верхнего слоя назначаются для оптимальных аппаратных и сетевых условий, и, следовательно, верхние слои могут принимать один или более графиков 561 доставки CPB, которые используют большой объем памяти в CPB 543 и короткие задержки для передач DU 553 в DPB 547. Аналогичным образом, битовые подпотоки нижнего слоя предназначены для ограниченных аппаратных возможностей декодера и/или плохих сетевых условий. Следовательно, нижние слои могут принимать один или более графиков доставки CPB 561, которые используют небольшой объем памяти в CPB 543 и более длительные задержки для передач DU 553 в DPB 547. Затем OLS, слои, подслои или их комбинации могут быть протестированы в соответствии с соответствующим графиком 561 доставки, чтобы гарантировать, что результирующий битовый подпоток может быть правильно декодирован в условиях, которые ожидаются для битового подпотока. Каждый график 561 доставки CPB ассоциирован с индексом 563 графика (ScIdx). ScIdx 563 является индексом, который идентифицирует график доставки. Соответственно, параметры HRD в битовом потоке 551 могут указывать графики 561 доставки CPB с помощью ScIdx 563, а также включать в себя достаточно данных, которые позволяют HRD 500 определять графики 561 доставки CPB и сопоставлять графики 561 доставки CPB с соответствующими OLS, слоями и/или подслоями.
На фиг.6 показано схематичное представление, иллюстрирующее примерную многослойную видеопоследовательность 600, выполненную с возможностью межслойного предсказания 621 слоя. Многослойная видеопоследовательность 600 может быть закодирована кодером, таким как система 200 кодека и/или кодер 300, и декодирована с помощью декодера, такого как система 200 кодека и/или декодер 400, например, согласно способу 100. Кроме того, многослойная видеопоследовательность 600 может быть проверена на соответствие стандарту с помощью HRD, такого как HRD 500. Многослойная видеопоследовательность 600 включена для того, чтобы проиллюстрировать примерное приложение для слоев в кодированной видеопоследовательности. Многослойная видеопоследовательность 600 представляет собой любую видеопоследовательность, которая использует множество слоев, таких как слой N 631 и слой N+1 632.
В примере многослойная видеопоследовательность 600 может использовать межслойное предсказание 621. Межслойное предсказание 621 применяется между изображениями 611, 612, 613 и 614 и изображениями 615, 616, 617 и 618 в разных слоях. В показанном примере изображения 611, 612, 613 и 614 являются частью слоя N+1 632, и изображения 615, 616, 617 и 618 являются частью слоя N 631. Слой, такой как слой N 631 и/или слой N+1 632 представляет собой группу изображений, ассоциированных с одинаковым значением характеристики, такой как одинаковый размер, качество, разрешение, отношение сигнал/шум, возможности и т.д. Слой может быть формально определен как набор единиц NAL VCL и ассоциированных единиц NAL без VCL. Единица NAL VCL представляет собой единицу NAL, кодированную таким образом, чтобы она содержала видеоданные, такие как кодированный слайс изображения. Единица NAL без VCL представляет собой единицу NAL, которая содержит данные, не относящиеся к видео, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки на соответствие или другие операции.
В показанном примере слой 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 слоя может включать в себя идентификатор слоя заголовка единицы NAL (nuh_layer_id), который представляет собой синтаксический элемент, указывающий идентификатор слоя, который включает в себя единицу NAL (например, которая включает в себя слайсы и/или параметры изображений в слое). Слою, ассоциированному с более низким качеством/размером битового потока, такому как слой N 631, как правило, назначается ID нижнего слоя, и он упоминается как нижний слой. Кроме того, слою, ассоциированному с более высоким качеством/размером битового потока, такому как слой N+1 632, как правило, назначается ID верхнего слоя, и он упоминается как верхний слой.
Изображения 611-618 в разных слоях 631-632 выполнены с возможностью отображения в альтернативном варианте. Таким образом, изображения в разных слоях 631-632 могут совместно использовать временной ID 622 до тех пор, пока изображения включены в одну и ту же AU. Временной ID 622 представляет собой элемент данных, который указывает то, что данные соответствуют временному местоположению в видеопоследовательности. AU представляет собой набор единиц NAL, которые взаимодействуют друг с другом в соответствии с определенным правилом классификации и относятся к одному конкретному времени вывода. Например, AU может включать в себя одно или более изображений в разных слоях, таких как изображение 611 и изображение 615, когда такие изображения ассоциированы с одним и тем же временным ID 622. В качестве конкретного примера декодер может декодировать и отображать изображение 615 в текущее время отображения, если требуется изображение меньшего размера, или декодер может декодировать и отображать изображение 611 в текущее время отображения, если требуется изображение большего размера. Таким образом, изображения 611-614 в верхнем слое N+1 632 содержат по существу те же данные изображения, что и соответствующие изображения 615-618 в нижнем слое N 631 (несмотря на разницу в размере изображения). В частности, изображение 611 содержит по существу те же данные изображения, что и изображение 615, и изображение 612 содержит по существу те же данные изображения, что и изображение 616 и т.д.
Изображения 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 531 в качестве ссылки, где одно изображение используется для однонаправленного межкадрового предсказания, и/или два изображения ссылаются на двунаправленное межкадровое предсказание. Когда изображение используется в качестве опорного изображения для другого изображения в одном и том же слое при выполнении межкадрового предсказания 623, это изображение может упоминаться как опорное изображение. Например, изображение 612 может быть опорным изображением, используемым для кодирования изображения 613 в соответствии с межкадровым предсказанием 623. Межкадровое предсказание 623 также может упоминаться как внутрислойное предсказание в многослойном контексте. Таким образом, межкадровое предсказание 623 представляет собой механизм кодирования выборок текущего изображения путем ссылки на указанные выборки в опорном изображении, которое отличается от текущего изображения, где опорное изображение и текущее изображение находятся в одном слое.
Изображения 611-618 также могут быть закодированы путем ссылки на другие изображения 611-618 в других слоях. Этот процесс известен как межслойное предсказание 621 и показан пунктирными стрелками. Межслойное предсказание 621 представляет собой механизм кодирования выборок текущего изображения путем ссылки на указанные выборки в опорном изображении, где текущее изображение и опорное изображение находятся в разных слоях и, следовательно, имеют разные ID слоя. Например, изображение в нижнем слое N 631 может использоваться в качестве опорного изображения для кодирования соответствующего изображения в верхнем слое N+1 632. В качестве конкретного примера изображение 611 может быть закодировано путем ссылки на изображение 615 в соответствии с межслойным предсказанием 621. В таком случае изображение 615 используется как межслойное опорное изображение. Межслойное опорное изображение является опорным изображением, используемым для межслойного предсказания 621. В большинстве случаев межслойное предсказание 621 ограничено таким образом, чтобы текущее изображение, такое как изображение 611, могло использовать только межслойные опорные изображения, которые включены в одну и ту же AU и находятся в нижнем слое, таком как изображение 615. Когда доступно несколько слоев (например, более двух), межслойное предсказание 621 может кодировать/декодировать текущее изображение на основе нескольких межслойных опорных изображениях на белее низких уровнях, чем текущее изображение.
Видеокодер может использовать многослойную видеопоследовательность 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. Таким образом, низкая эффективность кодирования внутрикадрового предсказания может быть ограничена изображениями наименьшего/самого низкого качества и, следовательно, ограничена кодированием наименьшего количества видеоданных. Изображения, используемые в качестве опорных изображений и/или межслойных опорных изображений, могут быть указаны в записях списка(ов) опорных изображений, содержащегося(ихся) в структуре списка опорных изображений.
Для выполнения таких операций такие слои, как слой N 631 и слой N+1 632, могут быть включены в один или более OLS 625 и 626. В частности, изображения 611-618 кодируются как слои 631-632 в битовый поток 600, и затем каждый слой 631-632 изображений назначается одному или более OLS 625 и 626. Затем можно выбрать OLS 625 и/или 626, и соответствующие слои 631 и/или 632 можно передать в декодер, в зависимости от возможностей декодера и/или сетевых условий. OLS 625 представляет собой набор слоев, для которого один или более слоев указаны в качестве слоя вывода. Слой вывода представляет собой слой, предназначенный для вывода (например, на экран дисплея). Например, слой N 631 может быть включен исключительно для поддержки межслойного предсказания 621 и может никогда не выводиться. В таком случае слой N+1 632 декодируется на основе слоя N 631 и выводится. В таком случае OLS 625 включает в себя слой N+1 632 в качестве слоя вывода. Когда OLS содержит только слой вывода, OLS упоминается как 0-й OLS 626. 0-й OLS 626 представляет собой OLS, который содержит только нижний слой (слой с идентификатором нижнего слоя) и, следовательно, содержит только слой вывода. В других случаях OLS 625 может содержать множество слоев в различных комбинациях. Например, слой вывода в OLS 625 может быть закодирован в соответствии с межслойным предсказанием 621 на основе одного, двух или многих нижних слоев. Кроме того, OLS 625 может содержать более одного слоя вывода. Таким образом, OLS 625 может содержать один или более слоев вывода и любые вспомогательные слои, необходимые для восстановления слоев вывода. Хотя показаны только два OLS 625 и 626, многослойная видеопоследовательность 600 может быть закодирована с использованием множества различных OLS 625 и/или 626, каждая из которых использует различные комбинации слоев. Каждый из OLS 625 и 626 ассоциируется с индексом OLS 629, который является индексом, однозначно идентифицирующим соответствующие OLS 625 и 626.
Проверка многослойной видеопоследовательности 600 на соответствие стандартам в HRD 500 может усложниться в зависимости от количества слоев 631-632 и OLS 625 и 626. HRD 500 может разделить многослойную видеопоследовательность 600 на последовательность рабочих точек 627 для тестирования. OLS 625 и/или 626 идентифицируется с помощью индекса 629 OLS. Рабочая точка 627 является временным поднаборм OLS 625/626. Рабочая точка 627 может быть идентифицирована как по индексу 629 OLS соответствующей OLS 625/626, так и по наибольшему временному ID 622. В качестве конкретного примера первая рабочая точка 627 может включать в себя все изображения в первом OLS 625 от временного ID, равного нулю, до временного ID, равного двумстам, вторая рабочая точка 627 может включать в себя все изображения в первом OLS 625 от временного ID, равного двести одному, до временного ID, равного четыремстам, и т.д. В таком случае первая рабочая точка 627 описывается как индекс 629 OLS первого OLS 625 и временной ID, равный двумстам. Кроме того, вторая рабочая точка 627 описывается индексом 629 OLS первой OLS 625 и временным ID, равным четыремстам. Рабочая точка 627, выбранная для тестирования в указанный момент времени, упоминается как тестируемая OP (targetOp). Таким образом, targetOp представляет собой рабочую точку 627, которая выбирается для тестирования на соответствие в HRD 500.
На фиг.7 показано схематичное представление, иллюстрирующее примерную многослойную видеопоследовательность 700, выполненную с возможностью временного масштабирования. Многослойная видеопоследовательность 700 может кодироваться кодером, таким как система 200 кодека и/или кодер 300, и декодироваться декодером, таким как система 200 кодека и/или декодер 400, например, согласно способу 100. Кроме того, многослойная видеопоследовательность 700 может быть проверена на соответствие стандарту с помощью HRD, такого как HRD 500. Многослойная видеопоследовательность 700 включена с той целью, чтобы проиллюстрировать еще одно примерное приложение для слоев в кодированной видеопоследовательности. Например, многослойная видеопоследовательность 700 может использоваться как отдельный вариант осуществления или может сочетаться со способами, описанными в отношении многослойной видеопоследовательности 600.
Многослойная видеопоследовательность 700 включает в себя подслои 710, 720 и 730. Подслой представляет собой масштабируемый по времени слой масштабируемого по времени битового потока, который включает в себя единицы NAL VCL (например, изображения) с конкретным значением временного идентификатора, а также ассоциированные единицы NAL без VCL (например, вспомогательные параметры). Например, слой, такой как слой N 631 и/или слой N+1 632, может быть дополнительно разделен на подслои 710, 720 и 730 для поддержки временной масштабируемости. Подслой 710 может называться базовым слоем, и подслои 720 и 730 могут называться слоями улучшения. Как показано, подслой 710 включает в себя изображения 711 с первой частотой кадров, такой как тридцать кадров в секунду. Подслой 710 является базовым слоем, так как подслой 710 включает в себя базовую/самую низкую частоту кадров. Подслой 720 содержит изображения 721, которые смещены по времени относительно изображений 711 подслоя 710. В результате подслой 710 и подслой 720 могут быть объединены, что приводит к частоте кадров, которая в совокупности выше, чем частота кадров только подслоя 710. Например, подслой 710 и 720 может иметь общую частоту кадров, равную шестидесяти кадрам в секунду. Соответственно, подслой 720 повышает частоту кадров подслоя 710. Кроме того, подслой 730 содержит изображения 731, которые также смещены по времени относительно изображений 721 и 711 подслоев 720 и 710. Таким образом, подслой 730 может быть объединен с подслоями 720 и 710 для дальнейшего улучшения подслоя 710. Например, подслои 710, 720 и 730 могут иметь общую частоту кадров девяносто кадров в секунду.
Представление 740 подслоя может быть создано динамически способом путем объединения подслоев 710, 720 и/или 730. Представление 740 подслоя является поднаборм битового потока, содержащего единицы NAL конкретного подслоя и нижних подслоев. В показанном примере представление 740 подслоя содержит изображения 741, которые представляют собой объединенные изображения 711, 721 и 731 подслоев 710, 720 и 730. Соответственно, многослойная видеопоследовательность 700 может быть масштабирована во времени до требуемой частоты кадров путем выбора представления 740 подслоя, которое включает в себя желаемый набор подслоев 710, 720 и/или 730. Представление 740 подслоя может быть создано путем использования OLS, который включает в себя подслой 710, 720 и/или 730 в качестве слоев. В таком случае представление 740 подслоя выбирается в качестве слоя вывода. Таким образом, временная масштабируемость является одним из нескольких механизмов, которые могут быть реализованы с использованием многослойных механизмов.
На фиг.8 показано схематичное представление, иллюстрирующее пример битового потока 800. Например, битовый поток 800 может быть выработан системой 200 кодека и/или кодером 300 для декодирования системой 200 кодека и/или декодером 400 согласно способу 100. Кроме того, битовый поток 800 может включать в себя многослойную видеопоследовательность 600 и/или 700. В дополнение к этому, битовый поток 800 может включать в себя различные параметры для управления работой HRD, такого как HRD 500. На основе таких параметров HRD может проверять битовый поток 800 на соответствие стандартам перед передачей в декодер для декодирования.
Битовый поток 800 включает в себя VPS 811, один или более SPS 813, множество наборов параметров изображения (PPS) 815, множество заголовков 817 слайсов, данные 820 изображения и SEI-сообщения 819. VPS 811 содержит данные, относящиеся ко всему битовому потоку 800. Например, VPS 811 может содержать связанные с данными OLS, слои и/или подслои, используемые в битовом потоке 800. SPS 813 содержит данные последовательности, общие для всех изображений в кодированной видеопоследовательности, содержащейся в битовом потоке 800. Например, каждый слой может содержать одну или более кодированных видеопоследовательностей, и каждая кодированная видеопоследовательность может ссылаться на SPS 813 для соответствующих параметров. Параметры в SPS 813 могут включать в себя размер изображения, битовую глубину, параметры инструмента кодирования, ограничения скорости передачи и т.д. Следует отметить, что хотя каждая последовательность относится к SPS 813, в некоторых примерах один SPS 813 может содержать данные для нескольких последовательностей. PPS 815 содержит параметры, которые применяются ко всему изображению. Следовательно, каждое изображение в видеопоследовательности может относиться к PPS 815. Следует отметить, что хотя каждое изображение относится к PPS 815, в некоторых примерах одиночный PPS 815 может содержать данные для нескольких изображений. Например, несколько аналогичных изображений могут быть закодированы в соответствии с аналогичными параметрами. В таком случае один PPS 815 может содержать данные для таких аналогичных изображений. PPS 815 может указывать инструменты кодирования, доступные для слайсов в соответствующих изображениях, параметры квантования, смещения и т.д.
Заголовок 817 слайса содержит параметры, которые специфичны для каждого слайса в изображении. Следовательно, может быть один заголовок 817 слайса в расчете на слайс в видеопоследовательности. Заголовок 817 слайса может содержать информацию о типе слайса, POC, списки опорных изображений, весовые коэффициенты предсказания, точки ввода тайла, параметры деблокирования и т.д. Следует отметить, что в некоторых примерах битовый поток 800 может также включать в себя заголовок изображения, который представляет собой синтаксическую структуру, содержащую параметры, применимые ко всем слайсам в одном изображении. По этой причине заголовок изображения и заголовок 817 слайса могут использоваться взаимозаменяемо в некоторых контекстах. Например, некоторые параметры можно перемещать между заголовком 817 слайса и заголовком изображения в зависимости от того, являются ли такие параметры общими для всех слайсов в изображении.
Данные 820 изображения содержат видеоданные, кодированные в соответствии с межкадровым предсказанием и/или внутрикадровым предсказанием, а также соответствующие преобразованные и квантованные остаточные данные. Например, данные 820 изображения могут включать в себя AU 821, DU 822 и/или изображения 823. AU 821 представляет собой набор единиц NAL, которые взаимодействуют друг с другом в соответствии с заданным правилом классификации и относятся к одному конкретному времени вывода. DU 822 представляет собой AU или поднабор AU и ассоциированные единицы NAL без VCL. Изображение 823 представляет собой массив выборок яркости и/или массив выборок цветности, которые создают кадр или его поле. Проще говоря, AU 821 содержит различные видеоданные, которые могут отображаться в указанный момент времени в видеопоследовательности, а также вспомогательные синтаксические данные. Следовательно, AU 821 может содержать одно изображение 823 в однослойном битовом потоке или множество изображений из множества слоев, каждое из которых ассоциируется с одним и тем же моментом времени в многослойном битовом потоке. Между тем, изображение 823 представляет собой кодированное изображение, которое может быть выведено для отображения или использовано для поддержки кодирования другого изображения(й) 823 для вывода. DU 822 может содержать одно или более изображений 823 и любые поддерживающие синтаксические данные, необходимые для декодирования. Например, DU 822 и AU 821 могут использоваться взаимозаменяемо в простых битовых потоках (например, когда AU содержит одно изображение). Однако в более сложных многослойных битовых потоках DU 822 может содержать только часть видеоданных из AU 821. Например, AU 821 может содержать изображения 823 в нескольких слоях и/или подслоях, где некоторые из изображений 823 ассоциированы с разными OLS. В таком случае DU 822 может содержать изображение(я) 823 только из определенного OLS и/или определенного слоя/подслоя.
Изображение 823 содержит один или более слайсов 825. Слайс 825 может быть определен как целое число полных слайсов или целое число последовательных полных строк единицы дерева кодирования (CTU) (например, в пределах тайла) изображения 823, где тайлы или строки CTU содержатся исключительно в одной единице 829 NAL. Следовательно, слайс 825 также содержится в одних единицах 829 NAL. Слайсы 825 дополнительно делятся на CTU и/или блоки дерева кодирования (CTB). CTU – это группа выборок заданного размера, которые могут быть разделены с использованием дерева кодирования. CTB является поднабором CTU и содержит компоненты яркости или компоненты цветности CTU. CTU/CTB далее делятся на блоки кодирования на основе деревьев кодирования. Затем блоки кодирования можно кодировать/декодировать в соответствии с механизмами предсказания.
Битовый поток 800 представляет собой последовательность единиц 829 NAL. Единица 829 NAL представляет собой контейнер для видеоданных и/или поддерживающего синтаксиса. Единица 829 NAL может быть единицей NAL VCL или единицей NAL без VCL. Единица NAL VCL представляет собой единицу 829 NAL, кодированную для содержания видеоданных, таких как кодированный слайс 825 и ассоциированный с ним заголовок 817 слайса. Единица NAL без VCL представляет собой единицу 829 NAL, которая содержит данные, не относящиеся к видео, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки на соответствие или другие операции. Например, единица NAL без VCL может содержать VPS 811, SPS 813, PPS 815, сообщение 819 SEI или другой поддерживаемый синтаксис.
Сообщение 819 SEI представляет собой синтаксическую структуру с заданной семантикой, которая передает информацию, которая не требуется процессу декодирования для определения значений выборок в декодированных изображениях. Например, SEI-сообщения могут содержать данные для поддержки процессов HRD или другие вспомогательные данные, которые не имеют прямого отношения к декодированию битового потока 800 в декодере. Сообщение 819 SEI может включать в себя масштабируемые вкладывающие SEI-сообщения и/или немасштабируемые вложенные SEI-сообщения. Масштабируемое вложенное SEI-сообщение представляет собой сообщение, содержащее множество SEI-сообщений, которые соответствуют одному или более OLS или одному или более слоям. Немасштабируемое вложенное SEI-сообщение представляет собой сообщение, которое не является вложенным и, следовательно, содержит одно SEI-сообщение. SEI-сообщения 819 могут включать в себя SEI-сообщение BP, которое содержит параметры HRD для инициирования HRD с целью управления CPB. Сообщения 819 SEI могут также включать в себя SEI-сообщение PT, которое содержит параметры HRD для управления информацией доставки для AU 821 в CPB и/или DPB. Сообщения 819 SEI могут также включать в себя SEI-сообщение DUI, которое содержит параметры HRD для управления информацией доставки для DU 822 в CPB и/или DPB.
Битовый поток 800 включает в себя целое число (i) наборов параметров 833 HRD, которые представляют собой синтаксические элементы, которые инициируют и/или определяют условия работы HRD, такого как HRD 500. В некоторых примерах общие параметры HRD (синтаксическая структура general_hrd_parameters) может содержать параметры 833 HRD, которые применяются ко всем OLS, заданным VPS 811. В примере кодер может кодировать видеопоследовательность в слои. Затем кодер может кодировать параметры 833 HRD в битовый поток 800, чтобы должным образом сконфигурировать HRD для выполнения проверок на соответствие. Параметры 833 HRD также могут указывать декодеру то, что декодер способен декодировать битовый поток 800 в соответствии с графиком доставки. Параметры 833 HRD могут быть включены в VPS 811 и/или SPS 813. Дополнительные параметры, используемые для конфигурирования HRD, также могут быть включены в сообщения 819 SEI.
Как отмечено выше, видеопоток может включать в себя множество OLS и множество слоев, таких как OLS 625, слой N 631, слой N+1 632, подслой 710, подслой 720 и/или подслой 730. Кроме того, некоторые слои могут быть включены в многочисленные OLS. Таким образом, многослойная видеопоследовательность, такая как многослойная видеопоследовательность 600 и/или 700, может стать довольно сложной. Это может привести к сложному процессу проверки HRD в HRD. Некоторые системы кодирования видео используют HRD для тестирования всего битового потока 800, содержащего многослойную видеопоследовательность, на предмет соответствия. Затем HRD проверяет каждый слой/подслой битового потока на соответствие. Наконец, HRD проверяет потенциальные декодируемые выходные сигналы битового потока на соответствие, такие как представление 740 подслоя. Этот подход является сложным, избыточным и включает в себя использование значительного количества параметров 833 HRD.
Настоящее раскрытие включает в себя механизмы для упрощенного теста на соответствие HRD для использования при проверке многослойных битовых потоков. Этот подход уменьшает количество параметров 833 HRD в битовом потоке 800 и, следовательно, уменьшить размер битового потока 800. Кроме того, этот подход упрощает процесс HRD, который экономит ресурсы в кодере/HRD. В частности, HRD 500 может быть выполнен с возможностью применения тестов на соответствие битового потока только к каждому OLS битового потока 800 и исключения тестирования потенциальных выходных сигналов OLS и тестирования всего битового потока 800. Затем каждый слой может быть потенциально декодирован, и вывод может быть включен в OLS. Таким образом, тестирование всех OLS приводит к тестированию потенциальных выходных сигналов, таких как представление 740 подслоя, на соответствие в виде части процесса тестирования на соответствие OLS. Кроме того, все части битового потока 800, которые могут быть отправлены в декодер, включаются в OLS. Таким образом, тестирование каждого OLS на соответствие приводит к тестированию всего битового потока 800 на соответствие.
В конкретном примере VPS 811 может содержать некоторое количество OLS 831. Количество OLS 831 определяет количество OLS, используемых во всем битовом потоке 800 после кодирования и перед любыми процессами извлечения битового подпотока. Например, количество OLS 831 может быть закодировано как общее количество наборов слоев вывода минус один синтаксический элемент (num_output_layer_sets_minus1). num_output_layer_sets_minus1 плюс один определяет общее количество OLS, заданных VPS 811. minus1 указывает то, что HRD может добавить единицу к значению, содержащемуся в синтаксическом элементе, для получения истинного значения. HRD может считать количество OLS 831, чтобы определить OLS, заданный в VPS 811. Затем HRD может проверить каждую OP каждого OLS на основе количества OLS 831. В качестве конкретного примера HRD может использовать количество OLS 831 для последовательного выбора и тестирования каждого OLS в качестве целевого OLS. При тестировании OLS, HRD может последовательно выбирать и тестировать каждую OP текущей OLS в качестве тестируемой OP (targetOp). Это можно выполнить путем выбора целевого OLS на основе индекса OLS OP (opOlsIdx) и наибольшего значения временного идентификатора OP (opTid). Таким образом, битовый поток 800 содержит различные механизмы, которые поддерживают расширенные функциональные возможности постепенного обновления декодера (GDR), например, по отношению к HRD и/или по отношению к декодеру. Таким образом, механизмы, описанные по отношению к битовому потоку 800, позволяют увеличить функциональные возможности кодера и/или декодера. Кроме того, механизмы, описанные по отношению к битовому потоку 800, позволяют поддерживать повышенную эффективность кодирования и/или поддерживать сокращение ресурсов процессора, памяти и/или сетевых коммуникационных ресурсов в кодере и/или декодере.
Предыдущая информация будет теперь более подробно описана ниже. Многослойное кодирование видео также называют масштабируемым кодированием видео или кодированием видео с возможностью масштабирования. Масштабируемость при кодировании видео может поддерживаться с помощью способов многослойного кодирования. Многослойный битовый поток содержит базовый слой (BL) и один или более слоев расширения (EL). Примеры масштабируемости включают в себя пространственную масштабируемость, масштабируемость качества/отношения сигнал/шум (SNR), многовидовая масштабируемость, масштабируемость частоты кадров и т.д. Когда используется способ многослойного кодирования, изображение или его часть могут быть закодированы без использования опорного изображения (внутрикадрового предсказания) может быть закодировано путем ссылки на опорное изображение, которое находится в одном и том же слое (межкадровое предсказание), и/или может быть закодировано путем ссылки на опорное изображение, которое находится в другом(их) слое(ях) (межслойное предсказание). Опорное изображение, используемое для межслойного предсказания текущего изображения, называется межслойным опорным изображением (ILRP). На фиг.6 показан пример многослойного кодирования для пространственной масштабируемости, в котором изображения в разных слоях имеют разное разрешение.
Некоторые семейства кодирования видео обеспечивают поддержку масштабируемости в отдельном(ых) профиле(ях) из профиля(ей) для однослойного кодирования. Масштабируемое кодирование видео (SVC) – это масштабируемое расширение усовершенствованного кодирования видео (AVC), которое обеспечивает поддержку для пространственно-временной масштабируемости и масштабируемости качества. Для SVC в каждом макроблоке (MB) в изображениях EL сигнализируется флаг для указания того, прогнозируется ли MB EL с использованием совмещенного блока из нижнего слоя. Предсказание из совмещенного блока может включать в себя текстуру, векторы движения и/или режимы кодирования. Реализации SVC не могут напрямую повторно использовать немодифицированные реализации AVC в своей конструкции. Синтаксис макроблока EL SVC и процесс декодирования отличаются от синтаксиса AVC и процесса декодирования.
Масштабируемое HEVC (SHVC) представляет собой расширение HEVC, которое обеспечивает поддержку для пространственной масштабируемости и масштабируемости качества. Многовидовое HEVC (MV-HEVC) – это расширение HEVC, которое обеспечивает поддержку для многовидовой масштабируемости. 3D HEVC (3D-HEVC) – это расширение HEVC, которое обеспечивает поддержку кодирования 3D-видео, которое является более совершенным и эффективным, чем MV-HEVC. Временная масштабируемость может быть включена как неотъемлемая часть однослойного кодека HEVC. При многослойном расширении HEVC декодированные изображения, используемые для межслойного предсказания, поступают только из одной и той же AU и обрабатываются как долгосрочные опорные изображения (LTRP). Таким изображениям назначаются опорные индексы в списке(ах) опорных изображений вместе с другими временными опорными изображениями в текущем слое. Межслойное предсказание (ILP) достигается на уровне единицы предсказания (PU) путем установки значения опорного индекса для ссылки на межслойное(ые) опорное(ые) изображение(я) в списке(ах) опорных изображений. Пространственная масштабируемость изменяет опорное изображение или его часть, когда ILRP имеет пространственное разрешение, отличное от текущего кодируемого или декодируемого изображения. Передискретизация опорного изображения может быть реализована либо на уровне изображения, либо на уровне блока кодирования.
VVC также может поддерживать многослойное кодирование видео. Битовый поток VVC может включать в себя несколько слоев. Все слои могут быть независимыми друг от друга. Например, каждый слой может быть закодирован без использования межслойного предсказания. В этом случае слои также называются слоями одновременной передачи. В некоторых случаях некоторые слои кодируются с использованием ILP. Флаг в VPS может указывать то, являются ли слои слоями одновременной передачи, или используют ли некоторые слои ILP. Когда некоторые слои используют ILP, соотношение зависимости слоев между слоями также сигнализируется в VPS. В отличие от SHVC и MV-HEVC, VVC может не задавать OLS. OLS включает в себя заданный набор слоев, где один или более слоев в наборе слоев заданы как слои вывода. Слой вывода – это слой OLS, который осуществляет вывод. В некоторых реализациях VVC для декодирования и вывода может быть выбран только один слой, когда слои являются слоями одновременной передачи. В некоторых реализациях VVC весь битовый поток, включая все слои, указывается для декодирования тогда, когда любой слой использует ILP. Кроме того, определенные слои среди слоев задаются как слои вывода. Слои вывода могут быть указаны как только самый высокий слой, все слои или самый высокий слой плюс набор указанных нижних слоев.
Стандарты кодирования видео могут задавать HRD для верификации соответствия битовых потоков с помощью заданных тестов на соответствие HRD. В SHVC и MV-HEVC используются три набора тестов на соответствие битового потока для проверки на соответствие битового потока. Битовый поток упоминается как весь битовый поток и обозначается как entereBitstream. Первый набор тестов на соответствие битового потока предназначен для тестирования на соответствие всего битового потока и соответствующих временных подмножеств. Такие тесты используются независимо от того, существует ли набор слоев, указанный активным VPS, который содержит все значения nuh_layer_id единиц NAL VCL, присутствующих во всем битовом потоке. Соответственно, весь битовый поток всегда проверяется на соответствие, даже если один или более слоев не включены в выходной набор. Второй набор тестов на соответствие битового потока используется для тестирования на соответствие наборов слоев, заданных активным VPS, и ассоциированных временных подмножеств. Для всех этих тестов декодируются и выводятся только изображения базового слоя (например, изображения с nuh_layer_id, равным нулю). Другие изображения игнорируются декодером при запуске процесса декодирования. Третий набор тестов на соответствие битового потока используется для тестирования на соответствие OLS, заданных частью расширения VPS активным VPS и ассоциированными временными поднаборами на основе OLS и разделов битового потока. Раздел битового потока включает в себя один или более слоев OLS многослойного битового потока.
Предыдущие аспекты содержат некоторые проблемы. Например, первые два набора тестов на соответствие могут применяться к слоям, которые не декодируются и не выводятся. Например, слои, отличные от самого нижнего слоя, могут не декодироваться и не выводится. В реальных приложениях декодер может принимать только те данные, которые нужно декодировать. Таким образом, использование первых двух наборов тестов на соответствие усложняет конструкцию кодека и может привести к потере битов для переноса параметров как на уровне последовательности, так и на уровне изображения, используемых для поддержки тестов на соответствие. Третий набор тестов на соответствие включает в себя разделы битового потока. Такие разделы могут относиться к одному или более слоям OLS многослойного битового потока. HRD можно значительно упростить, если вместо этого всегда проводить тесты на соответствие отдельно для каждого слоя.
Сигнализация параметров HRD в слое последовательности может быть сложной. Например, параметры HRD в слое последовательности могут сигнализироваться в нескольких местах, например, как в SPS, так и в VPS. Кроме того, сигнализация параметров HRD в слое последовательности может включать в себя избыточность. Например, информация, которая, как правило, может быть одинаковой для всего битового потока, может повторяться в каждом слое каждого OLS. В дополнение к этому, пример схемы HRD позволяет выбирать разные графики доставки для каждого слоя. Такие графики доставки могут быть выбраны из списка графиков, переданных для каждого слоя для каждой рабочей точки, где рабочей точкой является OLS или временной поднабор OLS. Такая система является сложной. Кроме того, примерная схема HRD позволяет проассоциировать неполные AU с SEI-сообщениями периода буферизации. Неполная AU – это AU, которая не имеет изображений для всех слоев, присутствующих в CVS. Однако инициирование HRD в такой AU может быть проблематичным. Например, HRD может быть неправильно инициирован для слоев с единицами доступа слоя, которые отсутствуют в неполной AU. В дополнение к этому, процесс демультиплексирования для получения битового потока слоя может недостаточно эффективно удалять вложенные SEI-сообщения, которые не относятся к целевому слою. Битовый поток слоя возникает тогда, когда раздел битового потока содержит только один слой. Кроме того, для всего битового потока может быть заданы применяемый OLS немасштабируемого вложенного периода буферизации, таймирование изображения и SEI-сообщения информации единицы декодирования. Однако вместо этого к 0-му OLS должен применяться немасштабируемый вложенный период буферизации.
Кроме того, некоторые реализации VVC могут не выводить параметры HDR, когда флаг sub_layer_cpb_params_present_flag равен нулю. Такой вывод позволяет обеспечить надлежащие операции HRD. В дополнение к этому, может потребоваться, чтобы значения bp_max_sub_layers_minus1 и pt_max_sub_layers_minus1 были равны значению sps_max_sub_layers_minus1. Однако SEI-сообщения периода буферизации и таймирования изображения могут быть вложены друг в друга и могут быть применимы к множеству OLS и множеству слоев каждого из множества OLS. В таких контекстах задействованные слои могут относиться к нескольким SPS. Следовательно, у системы могут возникнуть трудности с отслеживанием того, какой SPS является SPS, соответствующим каждому слою. Следовательно, значения этих двух синтаксических элементов должны быть ограничены на основе значения vps_max_sub_layers_minus1. Кроме того, так как разные слои могут иметь разное количество подслоев, значения этих двух синтаксических элементов не всегда могут быть равны конкретному значению во всех SEI-сообщениях периода буферизации и таймирования изображения.
Кроме того, следующая проблема ассоциируется также с конструкцией HRD как в SHVC/MV-HEVC, так и в VVC. Процесс извлечения битового подпотока может не удалять единицы NAL SEI, содержащие вложенные SEI-сообщения, которые не нужны для целевого OLS.
В общем, в настоящем раскрытии описаны подходы для масштабируемых вкладывающих SEI-сообщений для наборов слоев вывода в многослойных битовых потоках видео. Описание технологий основано на VVC. Однако эти технологии также применимы к многослойному кодированию видео, основанному на других спецификациях видеокодека.
Одну или более из вышеупомянутых проблем можно решить следующим образом. В частности, настоящее раскрытие включает в себя способы проектирования HRD и связанные с этим аспекты, которые обеспечивают эффективную сигнализацию параметров HRD с гораздо более простыми операциями HRD по сравнению с SHVC и MV-HEVC. Каждое из описанных ниже решений соответствует проблемам, описанным выше. Например, вместо требования трех наборов тестов на соответствие настоящее раскрытие позволяет использовать только один набор тестов на соответствие для тестирования на соответствие OLS, заданных VPS. Кроме того, вместо схемы, основанной на разделах битового потока, раскрытые механизмы HRD всегда могут работать отдельно для каждого слоя OLS. Кроме того, параметры HRD на уровне последовательности, которые являются глобальными для всех слоев и подслоев всех OLS, могут сигнализироваться только один раз, например, в VPS. В дополнение к этому, единственное количество графиков доставки может сигнализироваться для всех слоев и подслоев всех OLS. Для всех слоев в OLS может также применяться один и тот же индекс графика доставки. В дополнение к этому, неполные AU могут не ассоциироваться с SEI-сообщением периода буферизации. Неполная AU – это AU, которая не включает в себя изображения для всех слоев, присутствующих в CVS. Это гарантирует то, что HRD всегда может быть правильно инициирован для всех слоев в OLS. Кроме того, раскрыт механизм для эффективного удаления вложенных SEI-сообщений, которые не применяются к целевому слою в OLS. Это поддерживает процесс демультиплексирования для получения битового потока слоя. В дополнение к этому, применимый OLS немасштабируемого вложенного периода буферизации, таймирования изображений и SEI-сообщений информации единицы декодирования может быть задан как 0-й OLS. Кроме того, параметры HDR могут быть выведены тогда, когда значение sub_layer_cpb_params_present_flag равно 0, что может позволяет разрешить правильные операции HRD. Может потребоваться, чтобы значения bp_max_sub_layers_minus1 и pt_max_sub_layers_minus1 находились в диапазоне от нуля до vps_max_sub_layers_minus1. Таким образом, не требуется, чтобы такие параметры имели конкретное значение для всех SEI-сообщений периода буферизации и таймирования изображения. Кроме того, процесс извлечения битового подпотока может удалить единицы NAL SEI, содержащие вложенные SEI-сообщения, которые не применяются к целевому OLS.
Пример реализации предыдущих механизмов выглядит следующим образом. Слой вывода – это слой набора слоев вывода, который выводится. OLS – это набор слоев, включающий в себя заданный набор слоев, где один или более слоев в наборе слоев заданы как слои вывода. Индекс слоя OLS – это индекс слоя в OLS в списке слоев в OLS. Процесс извлечения битового подпотока представляет собой заданный процесс, с помощью которого единицы NAL в битовом потоке, который не принадлежит целевому набору, определяемому целевым индексом OLS и целевым наибольшим TemporalId, удаляются из битового потока с выходным битовым подпотоком, включающим в себя единицы NAL в битовый поток, которые принадлежат целевому набору.
Примерный синтаксис набора параметров видео выглядит следующим образом.
Пример синтаксиса RBSP набора параметров последовательности выглядит следующим образом.
Ниже приведен пример синтаксиса параметров DPB.
i <= sps_max_sub_layers_minus1; i++ ) {
Ниже приведен пример синтаксиса общих параметров HRD.
Примерная семантика RBSP набора параметров видео выглядит следующим образом. each_layer_is_an_ols_flag устанавливается равным единице для задания того, чтобы каждый набор слоев вывода содержал только один слой, и каждый слой непосредственно в битовом потоке являлся набором слоев вывода с единственным включенным слоем, являющимся единственным слоем вывода. each_layer_is_an_ols_flag устанавливается равным нулю для задания того, чтобы набор слоев вывода мог содержать более одного слоя. Если vps_max_layers_minus1 равно нулю, предполагается, что значение each_layer_is_an_ols_flag равно единице. В противном случае, когда vps_all_independent_layers_flag равно нулю, предполагается, что значение each_layer_is_an_ols_flag равно нулю.
ols_mode_idc устанавливается равным нулю для задания того, чтобы общее количество OLS, заданное VPS, было равно vps_max_layers_minus1 + 1, i-ый OLS включал в себя слои с индексами слоев от 0 до i включительно, и для каждого OLS выводился только самый высокий слой в OLS. Значение ols_mode_idc устанавливается равным единице для задания того, чтобы общее количество OLS, заданное VPS, было равно vps_max_layers_minus1 + 1, i-й OLS включал в себя слои с индексами слоев от 0 до i включительно, и для каждого OLS выводились все слои в OLS. ols_mode_idc устанавливается равным двум для задания того, чтобы общее количество OLS, заданное VPS, передавалось в явном виде, и для каждого OLS выводился самый высокий слой и явно сигнализируемый набор нижних слоев в OLS. Значение ols_mode_idc должно находиться в диапазоне от нуля до двух включительно. Значение три параметра ols_mode_idc является резервным. Когда vps_all_independent_layers_flag равно единице, и ach_layer_is_an_ols_flag равно нулю, предполагается, что значение ols_mode_idc равно двум. num_output_layer_sets_minus1 плюс 1 задает общее количество OLS, заданное VPS, когда ols_mode_idc равно двум.
Переменная TotalNumOlss, указывающая общее количество OLS, заданных VPS, получается следующим образом.
if( vps_max_layers_minus1 = = 0 )
TotalNumOlss = 1
else if( each_layer_is_an_ols_flag | | ols_mode_idc = = 0 | | ols_mode_idc = = 1 )
TotalNumOlss = vps_max_layers_minus1 + 1
else if( ols_mode_idc = = 2 )
TotalNumOlss = num_output_layer_sets_minus1 + 1
layer_included_flag[ i ][ j ] указывает то, включен ли j-й слой (слой с nuh_layer_id, равным vps_layer_id[j]) в i-й OLS, когда ols_mode_idc равен двум. layer_included_flag[ i ][ j ] устанавливается равным единице для задания того, чтобы j-й слой был включен в i-й OLS. layer_included_flag[ i ][ j ] устанавливается равным нулю для задания того, чтобы j-й слой не был включен в i-й OLS.
Переменная NumLayersInOls[i], задающая количество слоев в i-м OLS, и переменная LayerIdInOls[i][j], задающая значение nuh_layer_id j-го слоя в i-м OLS, получается следующим образом.
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc = = 0 | | ols_mode_idc = = 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
} else if( ols_mode_idc = = 2 ) {
for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ )
if( layer_included_flag[ i ][ k ] )
LayerIdInOls[ i ][ j++ ] = vps_layer_id[ k ]
NumLayersInOls[ i ] = j
}
}
Переменная OlsLayeIdx[i][j], задающая индекс слоя OLS слоя с nuh_layer_id, равным LayerIdInOls[i][j], получается следующим образом.
for( i = 0, i < TotalNumOlss; i++ )
for j = 0; j < NumLayersInOls[ i ]; j++ )
OlsLayeIdx[ i ][ LayerIdInOls[ i ][ j ] ] = j
Нижний слой в каждом OLS должен быть независимым слоем. Другими словами, для каждого i в диапазоне от нуля до TotalNumOlss - 1 включительно значение vps_independent_layer_flag[ GeneralLayerIdx[ LayerIdInOls[ i ][ 0 ] ] ] должно быть равно единице. Каждый слой должен быть включен по меньшей мере в один OLS, заданный VPS. Другими словами, для каждого слоя с конкретным значением nuh_layer_id nuhLayerId, равным единице из vps_layer_id[ k ] для k в диапазоне от нуля до vps_max_layers_minus1 включительно, должна быть как минимум одна пара значений i и j, где i находится в диапазоне от нуля до TotalNumOlss - 1 включительно, и j находится в диапазоне NumLayersInOls[ i ] - 1 включительно, так что значение LayerIdInOls[ i ][ j ] равно nuhLayerId. Любой слой в OLS должен быть слоем вывода OLS или опорным слоем (прямым или косвенным) слоя вывода OLS.
vps_output_layer_flag[ i ][ j ] задает то, получается ли j-й слой в i-м OLS, когда значение ols_mode_idc равно двум. vps_output_layer_flag[ i ], равный единице, задает то, что получается j-й слой в i-м OLS. vps_output_layer_flag[ i ] устанавливается равным нулю для задания того, чтобы j-й слой не выводился в i-м OLS. Когда vps_all_independent_layers_flag равно единице, и ach_layer_is_an_ols_flag равно нулю, предполагается, что значение vps_output_layer_flag[ i ] равно единице. Переменная OutputLayerFlag[ i ][ j ], для которой значение единица задает то, что j-й слой выводится в i-м OLS, и значение ноль указывает то, что j-й слой в i-м OLS не выводится, выводится следующим образом.
for( i = 0, i < TotalNumOlss; i++ ) {
OutputLayerFlag[ i ][ NumLayersInOls[ i ] − 1 ] = 1
for( j = 0; j < NumLayersInOls[ i ] − 1; j++ )
if( ols_mode_idc[ i ] = = 0 )
OutputLayerFlag[ i ][ j ] = 0
else if( ols_mode_idc[ i ] = = 1 )
OutputLayerFlag[ i ][ j ] = 1
else if( ols_mode_idc[ i ] = = 2 )
OutputLayerFlag[ i ][ j ] = vps_output_layer_flag[ i ][ j ]
}
0-й OLS содержит только нижний слой (слой с nuh_layer_id, равным vps_layer_id[0]), и для 0-го OLS выводится только включенный слой.
Флаг vps_extension_flag устанавливается равным нулю для задания того, чтобы синтаксические элементы vps_extension_data_flag отсутствовали в синтаксической структуре RBSP VPS. Параметр vps_extension_flag устанавливается равным единице для задания того, чтобы в синтаксической структуре RBSP VPS присутствовали синтаксические элементы vps_extension_data_flag. vps_extension_data_flag может иметь любое значение. Наличие и значение vps_extension_data_flag не влияют на соответствие декодера указанным профилям. Декодеры должны игнорировать все синтаксические элементы vps_extension_data_flag.
Примерная семантика параметров DPB выглядит следующим образом. Синтаксическая структура dpb_parameters( ) предоставляет информацию о размере DPB и, В качестве варианта, информацию о максимальном количестве переупорядочения изображений и максимальной задержке (MRML). Каждый SPS включает в себя одну или dpb_parameters( ) синтаксических структур. Первая синтаксическая структура dpb_parameters( ) в SPS содержит как информацию о размере DPB, так и информацию MRML. При наличии вторая синтаксическая структура dpb_parameters( ) в SPS содержит только информацию о размере DPB. Информация MRML в первой синтаксической структуре dpb_parameters( ) в SPS применяется к слою, относящемуся к SPS, независимо от того, является ли слой слоем вывода в OLS. Информация о размере DPB в первой синтаксической структуре dpb_parameters( ) в SPS применяется к слою, относящемуся к SPS, когда этот слой является слоем вывода OLS. Информация о размере DPB, включенная во вторую синтаксическую структуру dpb_parameters( ) в случае, если она присутствует в SPS, применяется к слою, относящемуся к SPS, тогда, когда этот слой не является слоем вывода OLS. Когда SPS включает в себя только одну синтаксическую структуру dpb_parameters( ), предполагается, что информация о размере DPB для слоя как слоя без вывода является той же самой, что и для слоя как слоя вывода.
Примерная общая семантика параметров HRD выглядит следующим образом. Синтаксическая структура general_hrd_parameters( ) предоставляет параметры HRD, используемые в операциях HRD. sub_layer_cpb_params_present_flag устанавливается равным единице для задания того, чтобы i-ая синтаксическая структура layer_level_hrd_parameters( ) содержала параметры HRD для представлений подслоев с TemporalId в диапазоне от нуля до hrd_max_temporal_id[ i ] включительно. sub_layer_cpb_params_present_flag устанавливается равным нулю для задания того, чтобы i-ая синтаксическая структура layer_level_hrd_parameters( ) содержала только параметры HRD для представлений подслоев с TemporalId, равным hrd_max_temporal_id[ i ]. Когда vps_max_sub_layers_minus1 равно нулю, предполагается, что значение sub_layer_cpb_params_present_flag равно нулю. Когда sub_layer_cpb_params_present_flag равно нулю, предполагается, что параметры HRD для представлений подслоев с TemporalId в диапазоне от нуля до hrd_max_temporal_id[ i ] - 1 включительно должны быть такими же, как и для представлений подслоев с TemporalId, равным в hrd_max_temporal_id[ i ]. Эти переменные включают в себя параметры HRD, начиная с синтаксического элемента fixed_pic_rate_general_flag[ i ] до синтаксической структуры sub_layer_hrd_parameters( i ) непосредственно при условии if( general_vcl_hrd_params_present_flag ) в синтаксической структуре layer_level_hrd_parameters. num_layer_hrd_params_minus1 плюс один задает количество синтаксических структур layer_level_hrd_parameters( ), присутствующих в синтаксической структуре general_hrd_parameters( ). Значение num_layer_hrd_params_minus1 должно находиться в диапазоне от нуля до шестидесяти трех включительно. Параметр hrd_cpb_cnt_minus1 плюс один определяет количество альтернативных спецификаций CPB в битовом потоке CVS. Значение hrd_cpb_cnt_minus1 должно находиться в диапазоне от нуля до тридцати одного включительно. hrd_max_temporal_id[ i ] задает TemporalId представления самого высокого подслоя, для которого параметры HRD содержатся в i-й синтаксической структуре layer_level_hrd_parameters( ). Значение hrd_max_temporal_id[ i ] должно находиться в диапазоне от нуля до vps_max_sub_layers_minus1 включительно. Когда vps_max_sub_layers_minus1 равно нулю, предполагается, что значение hrd_max_temporal_id[ i ] равно нулю. layer_level_hrd_idx[ i ][ j ] задает индекс синтаксической структуры layer_level_hrd_parameters( ), которая применяется к j-му слою в i-м OLS. Значение layer_level_hrd_idx[[ i ][ j ] должно находиться в диапазоне от нуля до num_layer_hrd_params_minus1 включительно. Если этот параметр отсутствует, значение layer_level_hrd_idx[[ 0 ][ 0 ] считается равным нулю.
Примерный процесс извлечения битового подпотока выглядит следующим образом. Входными данными этого процесса являются битовый поток inBitstream, целевой индекс OLS targetOlsIdx и целевое наибольшее значение TemporalId tIdTarget. Выходными данными этого процесса являются битовый подпоток outBitstream. Требование соответствия битового потока для входного битового потока состоит в том, что любой выходной битовый подпоток, являющийся результатом процесса, заданного в этом пункте, с битовым потоком targetOlsIdx, равным индексу списка OLS, заданного VPS, и tIdTarget, равным любому значению в диапазоне от нуля до шести включительно в качестве входных данных, и который удовлетворяет следующим условиям, должен быть соответствующим битовым потоком. Выходной битовый подпоток должен содержать по меньшей мере одну единицу NAL VCL с nuh_layer_id, равным каждому из значений nuh_layer_id в LayerIdInOls[ targetOlsIdx ]. Выходной битовый подпоток должен содержать по меньшей мере одну единицу NAL VCL с TemporalId, равным tIdTarget. Соответствующий битовый поток содержит одну или более единиц NAL кодированного слайса с TemporalId, равным нулю, но не обязательно должен содержать единицы NAL кодированного слайса с nuh_layer_id, равным нулю.
Выходной битовый подпоток OutBitstream получается следующим образом. Битовый поток outBitstream устанавливается идентичным битовому потоку inBitstream. Удалить из outBitstream все единицы NAL с TemporalId больше, чем tIdTarget. Удалить из outBitstream все единицы NAL с nuh_layer_id, не включенными в список LayerIdInOls[ targetOlsIdx ]. Удалить из outBitstream все единицы NAL SEI, которые содержат масштабируемое вкладывающее SEI-сообщение, значение nesting_ols_flag которого равно единице, и значение i не находится в диапазоне от нуля до nesting_num_olss_minus1 включительно, так что NestingOlsIdx[ i ] равно targetOlsIdx. Когда targetOlsIdx больше нуля, удалить из outBitstream все единицы NAL SEI, которые содержат немасштабируемое вложенное SEI-сообщение с payloadType, равным нулю (период буферизации), единице (таймирование изображения) или ста тридцати (информация о единице декодирования).
Общие аспектов примерного HRD выглядит следующим образом. Этот раздел определяет HRD и его использование для проверки на соответствие битового потока и декодера. Набор тестов на соответствие битового потока используется для проверки на соответствие битового потока, который упоминается как полный битовый поток, обозначаемый как fullBitstream. Набор тестов на соответствие битового потока предназначен для тестирования на соответствие каждого OLS, заданного VPS, и временных поднаборов каждого OLS. Для каждого теста применяются следующие упорядоченные этапы в указанном порядке.
Тестируемая рабочая точка, обозначенная как targetOp, выбирается путем выбора целевого OLS с индексом OLS opOlsIdx и наибольшим значением OpTid TemporalId. Значение opOlsIdx находится в диапазоне от нуля до TotalNumOlss – единица включительно. Значение opTid находится в диапазоне от нуля до vps_max_sub_layers_minus1 включительно. Значения opOlsIdx и opTid являются такими, что битовый подпоток BitstreamToDecode, который является результатом вызова процесса извлечения битового подпотока с entireBitstream, opOlsIdx и opTid в качестве входных данных, удовлетворяет следующим условиям. Имеется по меньшей мере одна единица NAL VCL с nuh_layer_id, равным каждому из значений nuh_layer_id в LayerIdInOls[opOlsIdx] в BitstreamToDecode. Имеется по меньшей мере одна единица NAL VCL с TemporalId, равным opTid в BitstreamToDecode.
Значения TargetOlsIdx и Htid устанавливаются равными opOlsIdx и opTid, соответственно, для targetOp. Выбирается значение ScIdx. Выбранное значение ScIdx должно находиться в диапазоне от нуля до hrd_cpb_cnt_minus1 включительно. Единица доступа в BitstreamToDecode, ассоциированная с SEI-сообщениями периода буферизации (присутствующими в TargetLayerBitstream или доступными через внешний механизм, не указанный в данном описании), применяемыми к TargetOlsIdx, выбирается в качестве точки инициирования HRD и упоминается как нулевая единица доступа для каждого слоя в целевом OLS.
Последующие этапы применяются к каждому слою с индексом слоя OLS TargetOlsLayerIdx в целевом OLS. Если в целевом OLS имеется только один слой, тестируемый битовый поток слоя TargetLayerBitstream устанавливается идентичным BitstreamToDecode. В противном случае TargetLayerBitstream получается путем вызова процесса демультиплексирования для получения битового потока слоя с BitstreamToDecode, TargetOlsIdx и TargetOlsLayerIdx в качестве входных данных, и выходные данные назначаются TargetLayerBitstream.
Синтаксическая структура layer_level_hrd_parameters( ) и синтаксическая структура sub_layer_hrd_parameters(), применимые к TargetLayerBitstream, выбираются следующим образом. Выбирается синтаксическая структура layer_level_hrd_idx[TargetOlsIdx][TargetOlsLayerIdx] layer_level_hrd_parameters( ) в VPS (или предоставляется через внешний механизм, такой как пользовательский ввод). В выбранной синтаксической структуре layer_level_hrd_parameters( ), если BitstreamToDecode является битовым потоком типа I, выбирается синтаксическая структура sub_layer_hrd_parameters(Htid ), которая следует сразу за условием if(general_vcl_hrd_params_present_flag ), и переменная NalHrdModeFlag устанавливается равной нулю. В противном случае (BitstreamToDecode является битовым потоком типа II), синтаксическая структура sub_layer_hrd_parameters(Htid ), которая сразу следует либо за условием if(general_vcl_hrd_params_present_flag ) (в этом случае переменная NalHrdModeFlag устанавливается равной нулю), либо за условием if(general_nal_hrd_params_present_flag) (в этом если переменная NalHrdModeFlag устанавливается равной единице). Когда BitstreamToDecode является битовым потоком типа II, и NalHrdModeFlag равно нулю, все единицы NAL без VCL, за исключением единиц NAL данных-заполнителей, и все синтаксические элементы leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes и trailing_zero_8bits, которые образуют байтовый поток из потока единиц NAL, если он присутствуют, отбрасываются из TargetLayerBitstream, и оставшийся битовый поток назначается TargetLayerBitstream.
Когда decoding_unit_hrd_params_present_flag равно единице, планируется что CPB будет функционировать либо на уровне единицы доступа (в этом случае переменная DecodingUnitHrdFlag устанавливается равной нулю), либо на уровне единицы декодирования (в этом случае переменная DecodingUnitHrdFlag устанавливается равной единице). В противном случае DecodingUnitHrdFlag устанавливается равным нулю, и CPB планируется работать на уровне модуля доступа. Для каждой единицы доступа в TargetLayerBitstream, начиная с нулевой единицы доступа, выбирается SEI-сообщение периода буферизации (присутствующее в TargetLayerBitstream или доступное через внешний механизм), которое ассоциируется с единицей доступа и применяется к TargetOlsIdx и TargetOlsLayerIdx, выбирается SEI-сообщение таймирования изображения (присутствующее в TargetLayerBitstream или доступное через внешний механизм), которое ассоциируется с блоком доступа и применяется к TargetOlsIdx и выбирается TargetOlsLayerIdx, и когда DecodingUnitHrdFlag равно единице, и decoding_unit_cpb_params_in_pic_timing_sei_flag равно нулю, SEI-сообщения информации единицы декодирования (присутствующие в TargetLayerBitstream или доступные через внешний механизм), которые ассоциируются с единицами декодирования в единице доступа и применяются к TargetOlsIdx и TargetOlsLayerIdx.
Каждый тест на соответствие включает в себя комбинацию одного варианта на каждом из вышеперечисленных этапов. Когда для этапа существует более одного варианта, для любого конкретного теста на соответствие выбирается только один вариант. Все возможные комбинации всех этапов образуют полный набор тестов на соответствие. Для каждой тестируемой рабочей точки количество выполняемых тестов на соответствие битового потока равно n0 * n1 * n2 * n3, где значения n0, n1, n2 и n3 задаются следующим образом. n1 равно hrd_cpb_cnt_minus1 + 1. n1 – количество единиц доступа в BitstreamToDecode, которые ассоциируются с SEI-сообщениями периода буферизации. n2 получается следующим образом. Если BitstreamToDecode является битовым потоком типа I, n0 равно единице. В противном случае (BitstreamToDecode является битовым потоком типа II) n0 равно двум. n3 получается следующим образом. Если decoding_unit_hrd_params_present_flag равно нулю, n3 равно единице. В противном случае n3 равно двум.
HRD содержит демультиплексор битового потока (В качестве варианта, присутствует), буфер кодированного изображения (CPB) для каждого слоя, процесс мгновенного декодирования для каждого слоя, буфер декодированного изображения (DPB), который содержит под-DPB для каждого слоя, и выходное кадрирование.
В примере HRD работает следующим образом. HRD инициируется при единице декодирования, равной нулю, причем каждый CPB и каждый под-DPB DPB устанавливаются пустыми. Заполнение под-DPB для каждого под-DPB устанавливается равным нулю. После инициирования HRD не инициируется снова последующими SEI-сообщениями периода буферизации. Данные, ассоциированные с единицами декодирования, которые поступают в каждый CPB в соответствии с заданным графиком поступления, доставляются HSS. Данные, ассоциированные с каждым блоком декодирования, удаляются и декодируются мгновенно посредством процесса мгновенного декодирования во время удаления CPB единицы декодирования. Каждое декодированное изображение помещается в DPB. Декодированное изображение удаляется из DPB тогда, когда оно становится не нужным для межкадрового предсказания и ссылки для вывода.
В примере процесс демультиплексирования для получения битового потока слоя выглядит следующим образом. Входными данными для этого процесса являются битовый поток inBitstream, целевой индекс OLS targetOlsIdx и индекс целевого слоя OLS targetOlsLayerIdx. Выходными данными для этого процесса являются битовый поток слоя outBitstream. Битовый поток слоя вывода outBitstream получается следующим образом. Битовый поток outBitstream устанавливается равным битовому потоку inBitstream. Удалить из outBitstream все единицы NAL с nuh_layer_id, не равным LayerIdInOls[ targetOlsIdx ][ targetOlsLayerIdx ]. Удалить из outBitstream все единицы NAL SEI, которые содержат масштабируемое вкладывающее SEI-сообщение, которое имеет nesting_ols_flag, равный единице и у которого отсутствуют значения i и j в диапазоне от нуля до nesting_num_olss_minus1 включительно и от нуля до nesting_num_ols_layers_minus1[ i ] включительно соответственно, так что NestingOlsLayerIdx[ i ][ j ] равно targetOlsLayerIdx. Удалить из outBitstream все единицы NAL SEI, которые содержат масштабируемое вкладывающее SEI-сообщение, у которого nesting_ols_flag равно единице, и значения i и j находятся в диапазоне от нуля до nesting_num_olss_minus1 включительно и от нуля до nesting_num_ols_layers_minus1[ i ] включительно соответственно, чтобы NestingOlsLayerIdx[ i ][ j ] было меньше targetOlsLayerIdx. Удалить из outBitstream все единицы NAL SEI, которые содержат масштабируемое вкладывающее SEI-сообщение, у которого nesting_ols_flag равно нулю, и отсутствуют значения i в диапазоне от нуля до NestingNumLayers - 1 включительно, чтобы NestingLayerId[ i ] было равно LayerIdInOls[ targetOlsIdx][ targetOlsLayerIdx]. Удалить из outBitstream все единицы NAL SEI, которые содержат масштабируемое вкладывающее SEI-сообщение, у которого nesting_ols_flag равна нулю, и существует по меньшей мере одно значение i в диапазоне от нуля до NestingNumLayers - 1 включительно, чтобы NestingLayerId[ i ] было меньше LayerIdInOls[ targetOlsIdx][ targetOlsLayerIdx].
Пример синтаксиса SEI-сообщения периода буферизации выглядит следующим образом.
Пример синтаксиса масштабируемого вкладывающего SEI-сообщения выглядит следующим образом.
Примерная общая семантики полезной нагрузки SEI выглядит следующим образом. Следующее применимо к применяемым слоям (в контексте OLS или в общем случае) немасштабируемых вложенных SEI-сообщений. Для немасштабируемого вложенного SEI-сообщения, когда payloadType равно нулю (период буферизации), единице (таймирование изображения) или ста тридцати (информация единицы декодирования), немасштабируемое вложенное SEI-сообщение применяется только к нижнему слою в контексте 0-го OLS. Для немасштабируемого вложенного SEI-сообщения, когда payloadType равно любому значению из VclAssociatedSeiList, немасштабируемое вложенное SEI-сообщение применяется только к слою, для которого единицы NAL VCL имеют nuh_layer_id, равный nuh_layer_id единицы NAL SEI, содержащей SEI-сообщение.
Примерная семантика SEI-сообщения периода буферизации выглядит следующим образом. SEI-сообщение периода буферизации обеспечивает начальную задержку удаления CPB и информацию смещения начальной задержки удаления CPB для инициирования HRD в позиции ассоциированной единицы доступа в порядке декодирования. Когда SEI-сообщение периода буферизации присутствует, говорят, что изображение является изображением notDiscardablePic, когда изображение имеет TemporalId, равное нулю, и не является изображением RASL или декодируемым ведущим изображением с произвольным доступом (RADL). Когда текущее изображение не является первым изображением в битовом потоке в порядке декодирования, пусть prevNonDiscardablePic будет предыдущим изображением в порядке декодирования с TemporalId, равным нулю, который не является изображением RASL или RADL.
Наличие SEI-сообщений периода буферизации задается следующим образом. Если NalHrdBpPresentFlag равно единице или VclHrdBpPresentFlag равно единице, для каждой единицы доступа в CVS применяется следующее. Если единица доступа является единицей доступа IRAP или GDR, SEI-сообщение периода буферизации, применимое к рабочей точке, должно ассоциироваться с единицей доступа. В противном случае, если единица доступа содержит notDiscardablePic, SEI-сообщение периода буферизации, применяемое к рабочей точке, может ассоциироваться или не ассоциироваться с единицей доступа. В противном случае единица доступа не должна ассоциироваться с SEI-сообщением периода буферизации, применимым к рабочей точке. В противном случае (как NalHrdBpPresentFlag, так и VclHrdBpPresentFlag равны нулю) никакая единица доступа в CVS не должна ассоциироваться с SEI-сообщением периода буферизации. Для некоторых приложений может быть желательным частое присутствие SEI-сообщений периода буферизации (например, для произвольного доступа в изображении IRAP или изображении без IRAP, или для объединения битового потока). Когда изображение в единице доступа ассоциируется с SEI-сообщением периода буферизации, единица доступа должна иметь изображение в каждом из слоев, представленных в CVS, и каждое изображение в единице доступа должно быть с SEI-сообщением периода буферизации.
Параметр bp_max_sub_layers_minus1 плюс 1 задает максимальное количество временных подслоев, для которых задержка удаления CPB и смещение удаления CBP указаны в SEI-сообщении периода буферизации. Значение bp_max_sub_layers_minus1 должно находиться в диапазоне от нуля до vps_max_sub_layers_minus1 включительно. Параметр bp_cpb_cnt_minus1 плюс 1 задает количество пар синтаксических элементов nal_initial_cpb_removal_delay[ i ][ j ] и nal_initial_cpb_removal_offset[ i ][ j ] i-го временного подслоя, когда bp_nal_hrd_params_present_flag равно единице, и количество пар синтаксических элементов vcl_initial_cpb_removal_delay [ i ][ j ] и vcl_initial_cpb_removal_offset[ i ][ j ] i-го временного подслоя, когда bp_vcl_hrd_params_present_flag равно единице. Значение bp_cpb_cnt_minus1 должно находиться в диапазоне от нуля до тридцати одного включительно. Значение bp_cpb_cnt_minus1 должно быть равно значению hrd_cpb_cnt_minus1.
Примерная семантика сообщения таймирования изображения SEI выглядит следующим образом. SEI-сообщение таймирования изображения предоставляет информацию о задержке удаления CPB и задержке вывода DPB для единицы доступа, ассоциированной с SEI-сообщением. Если bp_nal_hrd_params_present_flag или bp_vcl_hrd_params_present_flag SEI-сообщения периода буферизации, применимого к текущей единице доступа, равны единице, переменная CpbDpbDelaysPresentFlag устанавливается равной единице. В противном случае CpbDpbDelaysPresentFlag устанавливается равным нулю. Наличие SEI-сообщений таймирования изображения определяется следующим образом. Если CpbDpbDelaysPresentFlag равно единице, SEI-сообщение таймирования изображения должно ассоциироваться с текущей единицей доступа. В противном случае (CpbDpbDelaysPresentFlag равно нулю) не должно быть SEI-сообщения таймирования изображения, ассоциированного с текущей единицей доступа. TemporalId в синтаксисе SEI-сообщения таймирования изображения представляет собой TemporalId единицы NAL SEI, содержащей SEI-сообщение таймирования изображения. pt_max_sub_layers_minus1 плюс 1 задает TemporalId представления самого высокого подслоя, для которого информация задержки удаления CPB содержится в сообщении SEI таймирования изображения. Значение pt_max_sub_layers_minus1 должно находиться в диапазоне от нуля до vps_max_sub_layers_minus1 включительно.
Примерная семантика масштабируемого вкладывающего SEI-сообщения выглядит следующим образом.
Масштабируемое вкладывающее SEI-сообщение обеспечивает механизм для ассоциирования SEI-сообщений со специфическими слоями в контексте специфических OLS или со специфическими слоями вне контекста OLS. Масштабируемое вкладывающее SEI-сообщение содержит одно или более SEI-сообщений. SEI-сообщения, содержащиеся в масштабируемом вкладывающем SEI-сообщении, также называются масштабируемыми вложенными SEI-сообщениями. Требование соответствия битового потока состоит в том, что следующие ограничения применяются к содержанию SEI-сообщений в масштабируемом вкладывающем SEI-сообщении. SEI-сообщение, которое имеет значение payloadType, равное ста тридцати двум (хэш декодированного изображения) или ста тридцати трем (масштабируемая вложенность), не должно содержаться в масштабируемом вкладывающем SEI-сообщении. Когда масштабируемое вкладывающее SEI-сообщение содержит период буферизации, таймирование изображения или SEI-сообщение информации единицы декодирования, масштабируемое вкладывающее SEI-сообщение не должно содержать никакого другого SEI-сообщения с payloadType, не равным нулю (период буферизации), единице (таймирование изображения) или ста тридцати (информация единицы декодирования).
Требование соответствия битового потока состоит в том, что следующие ограничения применяются к значению nal_unit_type единицы NAL SEI, содержащего масштабируемое вкладывающее SEI-сообщение. Когда масштабируемое вкладывающее SEI-сообщение содержит SEI-сообщение, которое имеет значение payloadType, равное нулю (период буферизации), единице (хронометраж изображения), ста тридцати (информация единицы декодирования), ста сорока пяти (зависимая индикация RAP) или ста шестидесяти восьми (информация поля кадра), единица NAL SEI, содержащая масштабируемое вкладывающее SEI-сообщение, должна иметь nal_unit_type, равный PREFIX_SEI_NUT. Когда масштабируемое вкладывающее SEI-сообщение содержит SEI-сообщение, которое имеет значение payloadType, равное ста тридцати двум (хэш декодированного изображения), единица NAL SEI, содержащая масштабируемое вкладывающее SEI-сообщение, должна иметь nal_unit_type, равный SUFFIX_SEI_NUT.
nesting_ols_flag устанавливается на единицу, чтобы задать то, что масштабируемые вкладываемые SEI-сообщения применяются к конкретным слоям в контексте конкретных OLS. nesting_ols_flag устанавливается равным нулю, чтобы задать то, что масштабируемые вложенные SEI-сообщения, как правило, применяются (не в контексте OLS) к определенным слоям. Требование соответствия битового потока состоит в том, что следующие ограничения применяются к значению nesting_ols_flag. Когда масштабируемое вкладывающее SEI-сообщение содержит SEI-сообщение, которое имеет значение payloadType, равное нулю (период буферизации), единице (таймирование изображения) или ста тридцати (информация единицы декодирования), значение nesting_ols_flag должно быть равно единице. Когда масштабируемое вкладывающее SEI-сообщение содержит SEI-сообщение, которое имеет payloadType, равный значению в VclAssociatedSeiList, значение nesting_ols_flag должно быть равно нулю. nesting_num_olss_minus1 плюс 1 определяет количество 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 минус два включительно. Переменная NestingOlsIdx[ i ] получается следующим образом:
if( i = = 0 )
NestingOlsIdx[ i ] = nesting_ols_idx_delta_minus1[ i ] (D-2)
else
NestingOlsIdx[ i ] = NestingOlsIdx[ i − 1 ] + nesting_ols_idx_delta_minus1[ i ] + 1
Nesting_num_ols_layers_minus1[i] плюс 1 задает количество слоев, к которым применяются масштабируемые вкладывающие SEI-сообщения в контексте NestingOlsIdx[i]-го OLS. Значение nesting_num_ols_layers_minus1[i] должно находиться в диапазоне от нуля до NumLayersInOls[NestingOlsIdx[i]] − 1 включительно. 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]] минус два включительно. Переменная NestingOlsLayerIdx[ i ][ j ] получается следующим образом:
if( j = = 0 )
NestingOlsLayerIdx[ i ][ j ] = nesting_ols_layer_idx_delta_minus1[ i ][ j ] (D-2)
else
NestingOlsLayerIdx[ i ][ j ] = NestingOlsLayerIdx[ i ][ j − 1 ] +
nesting_ols_layer_idx_delta_minus1[ i ][ j ] + 1
Наименьшее значение среди всех значений LayerIdInOls[ NestingOlsIdx[ i ] ] [ NestingOlsLayerIdx[ i ][ 0 ] ] для i в диапазоне от нуля до nesting_num_olss_minus1 включительно должно быть равно nuh_layer_id текущей единицы NAL SEI (единицы NAL SEI, содержащей масштабируемое вкладывающее SEI-сообщение). nesting_all_layers_flag устанавливается равным единице для задания того, чтобы масштабируемые вкладывающие SEI-сообщения применялись, как правило, ко всем слоям, у которых nuh_layer_id больше или равно nuh_layer_id текущей единицы SEI NAL. nesting_all_layers_flag устанавливается равным нулю для задания того, чтобы масштабируемые вкладывающие SEI-сообщения могли или не могли в целом применяться ко всем слоям, у которых nuh_layer_id больше или равно nuh_layer_id текущей единицы SEI NAL. nesting_num_layers_minus1 плюс 1 задает количество слоев, к которым, как правило, применяются масштабируемые вкладывающие 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. Когда 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 ]
} else { (D-2)
NestingNumLayers = nesting_num_layers_minus1 + 1
for( i = 0; i < NestingNumLayers; i ++)
NestingLayerId[ i ] = ( i = = 0 ) ? nuh_layer_id : nesting_layer_id[ i ]
}
Параметр nesting_num_seis_minus1 плюс один задает количество масштабируемых вложенных SEI-сообщений. Значение nesting_num_seis_minus1 должно находиться в диапазоне от нуля до шестидесяти трех включительно. Значение nesting_zero_bit должно равняться нулю.
На фиг.9 показано схематичное представление примерного устройства 900 для кодирования видео. Устройство 900 для кодирования видео подходит для реализации раскрытых примеров/вариантов осуществления, описанных в данном документе. Устройство 900 для кодирования видео содержит нисходящие порты 920, восходящие порты 950 и/или блоки 910 приемопередатчика (Tx/Rx), включающие в себя передатчики и/или приемники для передачи данных по восходящей линии связи и/или нисходящей линии связи через сеть. Устройство 900 для кодирования видео также включает в себя процессор 930, включающий в себя логический блок и/или центральный процессор (CPU) для обработки данных и память 932 для хранения данных. Устройство 900 для кодирования видео может также содержать электрические, оптико-электрические (OE) компоненты, электрооптические (EO) компоненты и/или компоненты беспроводной связи, подключенные к портам 920 восходящей линии связи и/или портам 920 нисходящей линии связи для передачи данных через электрические, оптические или беспроводные сети связи. Устройство 900 для кодирования видео может также включать в себя устройства 960 ввода и/или вывода (I/O) для передачи данных пользователю и от пользователя. Устройства 960 ввода/вывода могут включать в себя устройства вывода, такие как дисплей для отображения видеоданных, динамики для вывода аудиоданных и т.д. Устройства 1080 ввода/вывода также могут включать в себя устройства ввода, такие как клавиатура, мышь, шаровой манипулятор и т.д. и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.
Процессор 930 реализован с помощью программно-аппаратных средств. Процессор 930 может быть реализован в виде одной или более микросхем CPU, ядер (например, в виде многоядерного процессора), программируемых пользователем вентильных матриц (FPGA), специализированных интегральных схем (ASIC) и процессоров цифровых сигналов (DSP). Процессор 930 взаимодействует с портами 920 восходящей линии связи, Tx/Rx 910, портами 950 восходящей линии связи и памятью 932. Процессор 930 содержит модуль 914 кодирования. Модуль 914 кодирования реализует раскрытые варианты осуществления, описанные в настоящем документе, такие как способы 100, 1000 и 1100, которые могут использовать многослойную видеопоследовательность 600, многослойную видеопоследовательность 700 и/или битовый поток 800. Модуль 914 кодирования также может реализовывать любой другой способ/механизм, описанный в данном документе. Кроме того, модуль 914 кодирования может реализовать систему 200 кодека, кодер 300, декодер 400 и/или HRD 500. Например, модуль 914 кодирования можно использовать для реализации HRD. Кроме того, модуль 914 кодирования может использоваться для кодирования параметров в битовый поток для поддержки процессов проверки на соответствие HRD. Соответственно, модуль 914 кодирования может быть выполнен с возможностью выполнения механизмов для решения одной или более проблем, рассмотренных выше. Следовательно, модуль 914 кодирования заставляет устройство 900 для кодирования видео обеспечивать дополнительные функциональные возможности и/или эффективность кодирования при кодировании видеоданных. Таким образом, модуль 914 кодирования улучшает функциональные возможности устройства 900 для кодирования видео, а также решает проблемы, характерные для техники кодирования видео. Кроме того, модуль 914 кодирования осуществляет перевод устройства 900 для кодирования видео в другое состояние. Альтернативно модуль 914 кодирования может быть реализован в виде инструкций, хранящихся в памяти 932 и исполняемых процессором 930 (например, в виде компьютерного программного продукта, хранящегося на невременном носителе информации).
Память 932 содержит память одного или более типов, такую как диски, ленточные накопители, твердотельные накопители, постоянная память (RAM), оперативная память (ROM), флэш-память, троичная память с адресацией по содержимому (TCAM), статическая оперативная память (SRAM) и т.д. Память 932 может использоваться в качестве устройства хранения данных при переполнении для хранения программ, когда такие программы выбираются для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы.
На фиг.10 показана блок-схема последовательности операций примерного способа 1000 кодирования видеопоследовательности для поддержки выполнения тестов на соответствие битового потока для OLS. Способ 1000 может использоваться кодером, таким как система кодирования 200, кодер 300 и/или устройство 900 для кодирования видео, при выполнении способа 100. Кроме того, способ 1000 может действовать в HRD 500 и, следовательно, может выполнять тесты на соответствие в многослойной видеопоследовательности 600, многослойной видеопоследовательности 700 и/или битовом потоке 800.
Способ 1000 может начинаться тогда, когда кодер принимает видеопоследовательность и определяет необходимость кодирования этой видеопоследовательности в многослойном битовом потоке, например, на основе пользовательского ввода. На этапе 1001 кодер кодирует битовый поток. Битовый поток содержит один или более OLS. Каждый OLS представляет собой набор слоев, для которого один или более слоев заданы как слои вывода.
На этапе 1003 кодер кодирует VPS в битовый поток. VPS кодируется, включая данные, задающие OLS. В частности, VPS может включать в себя данные, описывающие OLS, выработанные в виде части кодирования битового потока на этапе 1001. Например, VPS может включать в себя общее количество наборов слоев вывода минус один (num_output_layer_sets_minus1) плюс один набор слоев вывода, который задает общее количество OLS, заданных VPS. Затем кодер может перенаправить битовый поток в HRD. Например, кодер может работать в первом процессоре, и HRD может работать в втором процессоре, например, в одном и том же корпусе компьютера или в одной и той же сети. В качестве альтернативы, кодер и HRD могут работать в одном и том же процессоре или наборе процессоров, например, с использованием многопоточного механизма. Это позволяет HRD, работающему в процессоре(ах), выполнять набор тестов на соответствие битового потока. Чтобы поддерживать такие тесты HRD, кодер может кодировать набор параметров HRD в VPS на этапе 1003. Например, VPS может быть закодирован для включения синтаксической структуры общих параметров HRD (general_hrd_parameters), которая обеспечивает/содержит параметры HRD, которые применяются ко всем OLS, заданным VPS. Параметры HRD можно использовать для конфигурирования HRD с целью выполнения тестов на производительность над каждым OLS. Например, параметры HRD могут указывать различные графики доставки, которые должны использоваться HRD при выполнении тестов на соответствие. Таким образом, наличие параметров HRD в битовом потоке указывает то, что декодер способен декодировать битовый поток в соответствии с графиком доставки.
На этапе 1005 HRD последовательно выбирает каждую рабочую точку (OP) каждого OLS в качестве targetOp. Это можно сделать, выбрав целевой OLS с opOlsIdx и наибольшим opTid, например, где opTid указывает временную частоту кадров, ассоциированную с слоем/подслоем.
На этапе 1007 HRD выполняет набор тестов на соответствие битового потока в каждой OP каждого OLS, который задан VPS (например, который выбран на этапе 1005). Это позволяет HRD протестировать каждую OP на соответствие. Соответственно, HRD тестирует каждый OLS на соответствие стандартам. Однако HRD может пропустить глобальные тесты на соответствие для кодированного битового потока или тесты на соответствие представлениям, которые могут быть выведены из OLS. Битовый поток и выходные данные тестируются на соответствие в рамках процесса тестирования на соответствие OLS. Следовательно, можно избежать избыточного тестирования на соответствие. Кроме того, меньшее количество тестов на соответствие может поддерживаться меньшим количеством параметров HRD. Следовательно, применение тестов на соответствие только к OLS уменьшает количество параметров HRD в VPS и, таким образом, уменьшает размер битового потока, кодированного на этапах 1001 и 1003. Следует отметить, что HRD может работать в том же процессоре, что и кодер. В другом примере HRD может работать в процессоре в том же корпусе, что и кодер. В другом примере HRD может работать в процессоре в той же сети, что и кодер.
На этапе 1009 кодер сохраняет битовый поток в памяти для передачи в декодер.
На фиг.11 показана блок-схема последовательности операций примерного способа 1100 декодирования видеопоследовательности, которая была подвергнута тестам на соответствие битового потока для OLS, например, с помощью HRD, работающего с кодером, такого как HRD 500. Способ 1100 может использоваться декодером, таким как система 200 кодека, декодер 400 и/или устройство 900 для кодирования видео, при выполнении способа 100. Кроме того, способ 1100 может работать с битовым потоком, таким как битовый поток 800, который включает в себя многослойную видеопоследовательность 600 и/или многослойная видеопоследовательность 700.
Способ 1100 может начинаться тогда, когда декодер начинает прием битового потока кодированных данных, представляющих многослойную видеопоследовательность, например, в результате способа 1000. На этапе 1101 декодер принимает битовый поток, содержащий один или более OLS. Каждый OLS представляет собой набор слоев, для которого один или более слоев заданы как слои вывода. Битовый поток может также содержать VPS, задающий OLS. VPS в битовом потоке может включать в себя параметр num_output_layer_sets_minus1 плюс один набор слоев вывода, который задает общее количество OLS, заданных VPS. Кроме того, VPS может также включать в себя синтаксическую структуру general_hrd_parameters, которая обеспечивает/содержит параметры HRD, которые применяются ко всем OLS, заданным VPS. Наличие параметров HRD в битовом потоке указывает то, что декодер способен декодировать битовый поток в соответствии с графиком доставки (например, как задано в параметрах HRD). Битовый поток в том виде, в котором он был принят был проверен с помощью набора тестов на соответствие битового потока для тестирования на соответствие каждой OP каждого OLS, заданного VPS. В частности, набор тестов на соответствие битового потока выполняется HRD, работающим с кодером. Например, каждая OP выбирается в качестве targetOp на основе целевого OLS с opOlsIdx и наибольшим opTid.
На этапе 1103 декодер может декодировать изображение из OLS, например, как часть представления подслоя. Затем декодер может направить изображение для отображения в виде части декодированной видеопоследовательности на этапе 1105.
На фиг.12 показано схематичное представление примерной системы 1200 кодирования видеопоследовательности для поддержки выполнения тестов на соответствие битового потока для OLS. Система 1200 может быть реализована посредством кодера и декодера, таких как система 200 кодека, кодер 300, декодер 400 и/или устройство 900 для кодирования видео. Кроме того, система 1200 может использовать HRD 500 для выполнения тестов на соответствие над многослойной видеопоследовательностью 600, многослойной видеопоследовательностью 700 и/или битовым потоком 800. Кроме того, система 1200 может использоваться при реализации способа 100, 1000 и/или 1100.
Система 1200 включает в себя видеокодер 1202. Видеокодер 1202 содержит модуль 1203 кодирования для кодирования битового потока, содержащего один или более OLS. Модуль 1203 кодирования дополнительно предназначен для кодирования в битовый поток VPS, задающий OLS. Видеокодер 1202 дополнительно содержит модуль 1205 HRD для выполнения набора тестов на соответствие битового потока в каждой OP каждого OLS, который задан VPS, для тестирования каждой OP на соответствие. Видеокодер 1202 дополнительно содержит модуль 1206 хранения, предназначенный для хранения битового потока для передачи в декодер. Видеокодер 1202 дополнительно содержит модуль 1207 передачи, предназначенный для передачи битового потока в видеодекодер 1210. Видеокодер 1202 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 1000.
Система 1200 также включает в себя видеодекодер 1210. Видеодекодер 1210 содержит модуль 1211 приема, предназначенный для приема битового потока, содержащего один или более OLS, и VPS, задающий OLS, причем битовый поток был проверен с помощью наборов тестов на соответствие битового потока, которые тестируют на соответствие каждую рабочую точку (OP) каждого OLS, заданного VPS. Видеодекодер 1210 дополнительно содержит модуль 1213 декодирования, предназначенное для декодирования изображения из OLS. Видеодекодер 1210 дополнительно содержит модуль 1215 пересылки, предназначенное для пересылки изображения для отображения в виде части декодированной видеопоследовательности. Видеодекодер 1210 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 1100.
Первый компонент напрямую связан со вторым компонентом, когда между первым компонентом и вторым компонентом нет промежуточных компонентов, за исключением линии, дорожки или другой среды. Первый компонент косвенно связан со вторым компонентом, когда между первым компонентом и вторым компонентом имеются промежуточные компоненты, отличные от линии, дорожки или другой среды. Термин «связанный» и его варианты включают в себя как напрямую связанный, так и косвенно связанный. Использование термина «приблизительно» означает диапазон, включающий в себя ±10% от последующего числа, если не указано иное.
Кроме того, следует также понимать, что этапы примерных способов, изложенных в данном документе, не обязательно должны выполняться в описанном порядке, и порядок этапов таких способов следует рассматривать только как примерный. Аналогичным образом, в такие способы могут быть включены дополнительные этапы, а некоторые этапы могут быть исключены или объединены в способах, соответствующих различным вариантам осуществления настоящего раскрытия.
Несмотря на то, что в настоящем раскрытии было представлено несколько вариантов осуществления, должно быть понятно, что раскрытые системы и способы могут быть воплощены в многих других конкретных формах без отклонения от сущности или объема настоящего раскрытия. Настоящие примеры следует рассматривать как иллюстративные, а не ограничительные, и примеры не имеют намерения ограничивать изобретение деталями, приведенными в данном документе. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему, или некоторые функции могут быть опущены или не реализованы.
В дополнение к этому, технологии, системы, подсистемы и способы, описанные и проиллюстрированные в различных вариантах осуществления как дискретные или отдельные, могут быть объединены или интегрированы с другими системами, компонентами, технологиями или способами, что не выходит за рамки объема настоящего раскрытия. Другие примеры изменений, замен и модификаций могут быть установлены специалистом в данной области техники и могут быть осуществлены без отклонения от сущности и объема, раскрытых в данном документе.
название | год | авторы | номер документа |
---|---|---|---|
ПАРАМЕТРЫ HRD НА УРОВНЕ ПОСЛЕДОВАТЕЛЬНОСТИ | 2020 |
|
RU2825440C1 |
УПРАВЛЕНИЕ МАСШТАБИРУЕМЫМ ВКЛАДЫВАЕМЫМ SEI-СООБЩЕНИЕМ | 2020 |
|
RU2824781C1 |
ПАРАМЕТРЫ HRD ДЛЯ ТЕСТИРОВАНИЯ НА СООТВЕТСТВИЕ НА ОСНОВЕ СЛОЯ | 2020 |
|
RU2821048C1 |
ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНОЙ СИГНАЛИЗАЦИИ В МНОГОСЛОЙНЫХ БИТОВЫХ ВИДЕОПОТОКАХ | 2020 |
|
RU2821429C1 |
ОГРАНИЧЕНИЯ ВРЕМЕННОГО ИДЕНТИФИКАТОРА ДЛЯ СООБЩЕНИЙ SEI | 2020 |
|
RU2823614C1 |
ОГРАНИЧЕНИЯ НАБОРА ПАРАМЕТРОВ ЕДИНИЦ NAL НА ОСНОВЕ УРОВНЯ | 2020 |
|
RU2822533C1 |
ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНОЙ СИГНАЛИЗАЦИИ В МНОГОСЛОЙНЫХ БИТОВЫХ ПОТОКАХ ВИДЕО | 2020 |
|
RU2822511C1 |
ИНФОРМАЦИЯ О СИНХРОНИЗАЦИИ ИЗОБРАЖЕНИЙ И ЕДИНИЦАХ ДЕКОДИРОВАНИЯ ДЛЯ ВРЕМЕННОЙ МАСШТАБИРУЕМОСТИ | 2020 |
|
RU2819201C1 |
СИНТАКСИЧЕСКАЯ СТРУКТУРА ПАРАМЕТРОВ ГИПОТЕТИЧЕСКОГО ЭТАЛОННОГО ДЕКОДЕРА | 2013 |
|
RU2643463C2 |
СПОСОБ ДЛЯ ДЕКОДИРОВАНИЯ БИТОВОГО ПОТОКА ВИДЕО | 2014 |
|
RU2746310C2 |
Изобретение относится к средствам кодирования и декодирования битого потока. Технический результат - улучшения коэффициента сжатия практически без ущерба для качества изображения. Принимают битовый поток, содержащий один или более наборов слоев вывода (OLS) и набор параметров видео (VPS), задающих OLS, причем битовый поток получен из наборов тестов на соответствие битового потока, которые тестируют на соответствие каждую рабочую точку (OP) каждого OLS, заданного VPS, причем VPS содержит параметры гипотетического опорного декодера (HRD), при этом параметры HRD содержат счетчик буфера HRD-кодированного изображения (hrd_cpb_cnt_minus1), где hrd_cpb_cnt_minus1 плюс один определяет количество альтернативных графиков доставки буфера кодированных изображений (CPB), а значение hrd_cpb_cnt_minus1 ограничено диапазоном от нуля до тридцати одного включительно. Декодируют изображения из OLS. 10 н. и 14 з.п. ф-лы, 12 ил.
1. Способ обработки видеокодирования, реализуемый декодером, содержащий этапы, на которых:
принимают битовый поток, содержащий один или более наборов слоев вывода (OLS) и набор параметров видео (VPS), задающих OLS, причем битовый поток получен из наборов тестов на соответствие битового потока, которые тестируют на соответствие каждую рабочую точку (OP) каждого OLS, заданного VPS, причем VPS содержит параметры гипотетического опорного декодера (HRD), при этом параметры HRD содержат счетчик буфера HRD-кодированного изображения (hrd_cpb_cnt_minus1), где hrd_cpb_cnt_minus1 плюс один определяет количество альтернативных графиков доставки буфера кодированных изображений (CPB), а значение hrd_cpb_cnt_minus1 ограничено диапазоном от нуля до тридцати одного включительно; и
декодируют изображения из OLS.
2. Способ обработки видеокодирования по п.1, в котором HRD используется для выполнения проверки битового потока посредством набора тестов на соответствие битового потока.
3. Способ обработки видеокодирования по п.1 или 2, в котором VPS содержит общее количество наборов синтаксических элементов слоев вывода, задающее общее количество OLS, заданных посредством VPS.
4. Способ обработки видеокодирования по любому из пп.1-3, в котором каждая OP выбирается в качестве тестируемой OP (targetOp) посредством выбора целевого OLS с индексом OLS OP (opOlsIdx) и наибольшим значением временного идентификатора OP (opTid).
5. Способ обработки видеокодирования по любому из пп.1-4, в котором каждый OLS представляет собой набор слоев, для которого один или более слоев задаются в качестве слоев вывода.
6. Способ обработки видеокодирования по любому из пп.1-5, в котором VPS содержит синтаксическую структуру общих параметров HRD, предоставляющую параметры HRD, применяемые ко всем OLS, заданным VPS.
7. Способ обработки видеокодирования по любому из пп.1-6, в котором наличие параметров HRD указывает то, что декодер выполнен с возможностью декодирования битового потока в соответствии с графиком доставки.
8. Способ обработки видеокодирования, реализуемый кодером, содержащий этапы, на которых:
кодируют битовый поток, содержащий один или более наборов слоев вывода (OLS);
кодируют в битовый поток набор параметров видео (VPS), задающий OLS, причем VPS содержит параметры гипотетического опорного декодера (HRD), при этом параметры HRD содержат счетчик буфера HRD-кодированного изображения (hrd_cpb_cnt_minus1), где hrd_cpb_cnt_minus1 плюс один определяет количество альтернативных графиков доставки буфера кодированных изображений (CPB), а значение hrd_cpb_cnt_minus1 ограничено диапазоном от нуля до тридцати одного включительно; и
выполняют набор тестов на соответствие битового потока в каждой рабочей точке (OP) каждого OLS, заданного VPS, для тестирования каждой OP на соответствие.
9. Способ обработки видеокодирования по п.8, в котором HRD используется для выполнения проверки битового потока посредством набора тестов на соответствие битового потока.
10. Способ обработки видеокодирования по п. 8 или 9, в котором VPS включает в себя общее количество наборов синтаксических элементов слоев вывода, задающее общее количество OLS, заданных VPS.
11. Способ обработки видеокодирования по любому из пп.8-10, дополнительно содержащий этап, на котором выбирают каждую OP в качестве тестируемой OP (targetOp) посредством выбора целевого OLS с индексом OLS OP (opOlsIdx) и наивысшим значением временного идентификатора OP (opTid).
12. Способ обработки видеокодирования по любому из пп.8-11, в котором каждый OLS представляет собой набор слоев, для которого один или более слоев задаются в качестве слоев вывода.
13. Способ обработки видеокодирования по любому из пп.8-12, в котором VPS содержит синтаксическую структуру общих параметров HRD, обеспечивающую параметры HRD, применяемые ко всем OLS, заданным VPS.
14. Способ обработки видеокодирования по любому из пп.8-13, в котором наличие параметров HRD указывает то, что декодер выполнен с возможностью декодирования битового потока в соответствии с графиком доставки.
15. Устройство кодирования видео, содержащее:
процессор, приемник, соединенный с процессором, память, соединенную с процессором, и передатчик, соединенный с процессором, причем процессор, приемник, память и передатчик выполнены с возможностью реализации способа обработки видеокодирования по любому из пп.1-7.
16. Устройство кодирования видео, содержащее:
процессор, приемник, соединенный с процессором, память, соединенную с процессором, и передатчик, соединенный с процессором, причем процессор, приемник, память и передатчик выполнены с возможностью реализации способа обработки видеокодирования по любому из пп.8-14.
17. Энергонезависимый машиночитаемый носитель информации, хранящий компьютерный программный продукт для использования устройством кодирования видео, причем компьютерный программный продукт содержит исполняемые компьютером инструкции, хранящиеся на энергонезависимом машиночитаемом носителе информации, вызывающие, при исполнении процессором, выполнение устройством кодирования видео способа обработки видеокодирования по любому из пп.1-7.
18. Энергонезависимый машиночитаемый носитель информации, хранящий компьютерный программный продукт для использования устройством кодирования видео, причем компьютерный программный продукт содержит исполняемые компьютером инструкции, хранящиеся на энергонезависимом машиночитаемом носителе информации, вызывающие, при исполнении процессором, выполнение устройством кодирования видео способа обработки видеокодирования по любому из пп.8-14.
19. Декодер, содержащий:
средство приема для приема битового потока, содержащего один или более наборов слоев вывода (OLS) и набор параметров видео (VPS), задающий OLS, причем битовый поток получен из наборов тестов на соответствие битового потока, которые тестируют на соответствие каждой рабочей точки (OP) каждого OLS, заданного VPS, причем VPS содержит параметры гипотетического опорного декодера (HRD), при этом параметры HRD содержат счетчик буфера HRD-кодированного изображения (hrd_cpb_cnt_minus1), где hrd_cpb_cnt_minus1 плюс один определяет количество альтернативных графиков доставки буфера кодированных изображений (CPB), а значение hrd_cpb_cnt_minus1 ограничено диапазоном от нуля до тридцати одного включительно;
средство декодирования для декодирования изображения из OLS; и
средство пересылки для пересылки изображения для отображения в виде части декодированной видеопоследовательности.
20. Декодер по п.19, характеризующийся тем, что дополнительно выполнен с возможностью реализации способа обработки видеокодирования по любому из пп.1-7.
21. Кодер, содержащий:
средство кодирования для:
кодирования битового потока, содержащего один или более наборов слоев вывода (OLS); и
кодирования в битовый поток набора параметров видео (VPS), задающего OLS, причем VPS содержит параметры гипотетического опорного декодера (HRD), при этом параметры HRD содержат счетчик буфера HRD-кодированного изображения (hrd_cpb_cnt_minus1), где hrd_cpb_cnt_minus1 плюс один определяет количество альтернативных графиков доставки буфера кодированных изображений (CPB), а значение hrd_cpb_cnt_minus1 ограничено диапазоном от нуля до тридцати одного включительно;
средство гипотетического опорного декодера (HRD) для выполнения набора тестов на соответствие битового потока в каждой рабочей точке (OP) каждого OLS, заданного VPS, для тестирования каждой OP на соответствие; и
средство хранения для хранения битового потока для передачи на декодер.
22. Кодер по п.21, характеризующийся тем, что кодер дополнительно выполнен с возможностью выполнения способа обработки видеокодирования по любому из пп.8-14.
23. Машиночитаемый носитель, содержащий машиночитаемые инструкции, вызывающие, при исполнении декодером, выполнение декодирования декодером битового потока посредством способа обработки видеокодирования по любому из пп.1-7.
24. Машиночитаемый носитель, содержащий машиночитаемые инструкции, вызывающие, при исполнении кодером, выполнение кодирования кодером битового потока посредством способа обработки видеокодирования по любому из пп.8-14.
US 20150373346 A1, 24.12.2015 | |||
US 20140301469 A1, 09.10.2014 | |||
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕОДАННЫХ | 2015 |
|
RU2653299C2 |
US 20190174144 A1, 06.06.2019. |
Авторы
Даты
2024-05-28—Публикация
2020-09-08—Подача