КОДИРОВАНИЕ И ДЕКОДИРОВАНИЕ МНОГОУРОВНЕВОГО ВИДЕОПОТОКА
ENCODING AND DECODING OF MULTILEVEL VIDEO STREAM

ОБЛАСТЬ ТЕХНИКИ
Варианты осуществления, в общем, относятся к обработке многоуровневого видеопотока и, в частности, к декодированию и кодированию такого многоуровневого видеопотока.
УРОВЕНЬ ТЕХНИКИ
HEVC (Высокоэффективное Видеокодирование) представляет собой стандарт видеокодирования следующего поколения, который разрабатывается в настоящее время на стадии стандартизации. HEVC существенно улучшит эффективность кодирования по сравнению с H.264/Усовершенствованным Видеокодированием (AVC) известного уровня техники. Изначально, основное внимание при разработке HEVC уделялось моновидео, т.е. виду с одной камеры, с фиксированным качеством и битрейтом, т.е. немасштабируемому. В настоящий момент ведется подготовка многоуровневых расширений к стандарту HEVC, например, масштабируемого расширения, многоракурсного расширения и 3D расширения. Этим расширениям требуется поддержка множества уровней. Битовый поток HEVC без расширений может быть рассмотрен как одноуровневый битовый поток, т.е. он представляет видео в одном представлении, т.е. одном видео виде, одном разрешении и одном качестве. В многоуровневых расширениях одноуровневый битовый поток HEVC обычно включается как "базовый уровень". В многоракурсных или 3D расширениях дополнительные уровни могут представлять дополнительные ракурсы видео, захватываемые с разных позиций камеры или, например, информацию глубины. В расширениях масштабируемости дополнительные уровни могут представлять видео в дополнительных, обычно более высоких разрешениях видеоизображения, или более высоком качестве воспроизведения пикселей, или других цветовых пространствах, или подобном, обеспечивая улучшенное качество видео по сравнению с базовым уровнем.
Специфические декодеры используются для декодирования битовых потоков HEVC с многочисленными уровнями, т.е. масштабируемые или многоракурсные/3D декодеры HEVC. Для того, чтобы декодировать многоуровневые битовые потоку необходима информация о зависимостях декодирования между уровнями. Эту информацию необходимо сигнализировать в битовом потоке. Упомянутая информация также может быть использована элементами сети для идентификации уровней, которые могут быть исключены из передачи, если необходима адаптация битрейта, например, в случае перегрузки сети, или адаптация формата, например, в случае, если целевое устройство может декодировать или отображать только некоторое максимальное разрешение, или 2D/3D-адаптация, например, в случае, если целевое устройство может декодировать или отображать только некоторое число ракурсов.
Информация зависимости в HEVC обычно получается в так называемых наборах параметров, таких как набор параметров изображения (PPS), набор параметров последовательности (SPS), или набор параметров видео (VPS), вместе с другой информацией. Обычно каждый набор параметров инкапсулируется в единицу уровня сетевой абстракции (NAL), т.е. пакет в битовом потоке видео. Поскольку наборы параметров содержат информацию, которая существенна для декодирования, они могут быть отправлены в битовом потоке многократно, или могут переносится "внеполосной" передачей, т.е. передаваться отдельно от остального битового потока, например, по надежному соединению. Такая внеполосная передача может происходить, например, во время установления сеанса, например, с использованием протокола описания сеанса (SDP).
Если наборы параметров отправляются во время запуска сеанса, объем данных в наборе параметров оказывает влияние на продолжительность передачи и, таким образом, время запуска сеанса. Если наборы параметров отправляются "внутри полосы", т.е. в битовом потоке, размер наборов параметров оказывает влияние на итоговый битрейт, и влияние является более высоким, когда наборы параметров повторяются в битовом потоке для обеспечения устойчивости к ошибкам. По этим причинам, важным является то, чтобы информация, переносимая в этих наборах параметров, формулировалась компактно.
ой
Документ Объединенной команды по видеокодированию (JCT-VC) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11 во время 11 встречи: Шанхай, CN, 10-19 Октября 2012 именованный JCTVC-K1007, относящийся к заголовку единицы NAL и воплощениям наборов параметров для расширений HEVC, включает в себя спецификации воплощений наборов параметров для расширений масштабируемого и многоракурсного/3D кодирования HEVC. Согласно этому документу, зависимости уровня сигнализируются как часть синтаксической структуры vps_extension, как указано ниже по тексту:
vps_extension( ){
Дескриптор
…
for(i=1; i ≤ vps_max_layers_minus1; i++) {
//зависимость уровня
num_direct_ref_layers[i]
u(6)
for(j=0; j<num_direct_ref_layers[i]; j++)
ref_layer_id[i][j]
u(6)
}
}
num_direct_ref_layers[i] задает число уровней, от которого непосредственно зависит i-ый уровень.
ref_layer_id[i][j] идентифицирует j-ый уровень, от которого непосредственно зависит i-ый уровень.
Вышеупомянутому решению требуется много битов для сигнализации зависимостей уровня в VPS. В частности, для каждого используемого уровня над базовым уровнем, используются шесть битов для кодирования числа опорных уровней, а другие шесть битов используются для идентификации каждого опорного уровня. Это обеспечивает возможность сигнализации зависимостей для соответствующих случаев, однако, это может быть неэффективным с точки зрения использования битов.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Основной задачей является обеспечение эффективной обработки многоуровневого видеопотока.
Частной задачей является сигнализирование зависимостей уровня эффективным образом для многоуровневого видеопотока.
Эти и другие задачи решаются вариантами осуществления, раскрытыми в данном документе.
Аспект вариантов осуществления относится к способу определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока, определяющего многочисленные уровни изображений. Способ содержит извлечение на основе кодируемого многоуровневого видеопотока по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня из многочисленных уровней и уровнем с индексом j уровня из многочисленных уровней, i≠j. Способ также содержит определение информации, задающей какую-либо взаимосвязь декодирования между многочисленными уровнями, на основе по меньшей мере одного флага непосредственного декодирования.
В варианте осуществления этого аспекта этап извлечения содержит извлечение для уровня с индексом i уровня соответствующего флага непосредственной зависимости для каждого индекса j уровня на основе упомянутого кодируемого многоуровневого видеопотока. В этом варианте осуществления, j<i и флаг непосредственной зависимости указывает, является ли уровень с индексом j уровня непосредственным опорным уровнем для уровня с индексом i уровня. В этом варианте осуществления этап определения содержит определение информации, задающей какой-либо уровень с индексом j<i уровня, от которого зависит уровень с индексом i уровня, на основе упомянутых флагов непосредственной зависимости.
В варианте осуществления этого аспекта этап извлечения содержит извлечение из набора параметров видео или расширения набора параметров видео, ассоциированного с кодируемым многоуровневым видеопотоком, по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня и уровнем с индексом j уровня.
Связанный аспект вариантов осуществления характеризует устройство для определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока, определяющего многочисленные уровни изображений. Устройство содержит средство извлечения флага, сконфигурированное с возможностью извлечения на основе кодируемого многоуровневого видеопотока по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня из многочисленных уровней и уровнем с индексом j уровня из многочисленных уровней, i≠j. Устройство также содержит определитель информации, сконфигурированный с возможностью определения информации, задающей какую-либо взаимосвязь декодирования между многочисленными уровнями, на основе по меньшей мере одного флага непосредственного декодирования.
В варианте осуществления этого связанного аспекта средство извлечения флага сконфигурировано с возможностью извлечения для уровня с индексом i уровня соответствующего флага непосредственной зависимости для каждого индекса j уровня на основе упомянутого кодируемого многоуровневого видеопотока. В этом варианте осуществления, j<i и флаг непосредственной зависимости указывает, является ли уровень с индексом j уровня непосредственным опорным уровнем для уровня с индексом i уровня. В этом варианте осуществления определитель информации сконфигурирован с возможностью определения информации, задающей какой-либо уровень с индексом j<i уровня, от которого зависит уровень с индексом i уровня, на основе упомянутых флагов непосредственной зависимости.
В варианте осуществления этого связанного аспекта средство извлечения флага сконфигурировано с возможностью извлечения из набора параметров видео или расширения набора параметров видео, ассоциированного с кодируемым многоуровневым видеопотоком, по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня и уровнем с индексом j уровня.
Модификация этого связанного аспекта вариантов осуществления характеризует устройство для определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока, определяющего многочисленные уровни изображений. Устройство содержит процессор, сконфигурированный с возможностью обрабатывать средство кода компьютерной программы, хранимой на считываемом компьютером носителе. Средство кода побуждает, при выполнении на процессоре, процессор извлекать на основе кодируемого многоуровневого видеопотока по меньшей мере один флаг непосредственного декодирования, указывающий непосредственную взаимосвязь кодирования между уровнем с индексом i уровня из многочисленных уровней и уровнем с индексом j уровня из многочисленных уровней, i≠j. Средство кода также побуждает процессор определять информацию, задающую какую-либо взаимосвязь декодирования между многочисленными уровнями, на основе по меньшей мере одного флага непосредственного декодирования.
Другой аспект вариантов осуществления относится к способу декодирования кодируемого многоуровневого видеопотока, определяющего многочисленные уровни изображений, каждый уровень из упомянутых многочисленных уровней имеет соответствующий идентификатор уровня. Способ содержит извлечение для уровня с индексом уровня из многочисленных уровней информации взаимосвязи декодирования на основе кодируемого многоуровневого видеопотока. Информация взаимосвязи декодирования задает соответствующий индекс уровня какого-либо опорного уровня из многочисленных уровней, от которого непосредственно зависит упомянутый уровень. Способ также содержит отображение для каждого опорного уровня и для упомянутого уровня его индекса уровня на идентификатор уровня на основе информации отображения иерархической взаимосвязи отображения между идентификаторами уровня и индексами уровня. Информация отображения извлекается на основе кодируемого многоуровневого видеопотока. Способ дополнительно содержит декодирование изображения упомянутого уровня на основе по меньшей мере одного ранее декодированного изображения в уровне из многочисленных уровней, идентифицированных на основе упомянутых идентификаторов уровня, отображенных от индексов уровня.
В варианте осуществления этого другого аспекта этап извлечения содержит извлечение на основе кодируемого многоуровневого видеопотока по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня из многочисленных уровней и уровнем с индексом j уровня из многочисленных уровней, i≠j. Этап извлечения также содержит в этом варианте осуществления определение информации взаимосвязи декодирования на основе по меньшей мере одного флага непосредственного декодирования.
В варианте осуществления этого другого аспекта этап отображения содержит извлечение флага vps_nuh_layer_id_present_flag на основе кодируемого многоуровневого видеопотока. Этап отображения также содержит установку для каждого опорного уровня и для упомянутого уровня, и если vps_nuh_layer_id_present_flag=0, его идентификатора уровня равным его индексу уровня. Этап отображения дополнительно содержит извлечение для каждого опорного уровня и для упомянутого уровня, и если vps_nuh_layer_id_present_flag=1, его идентификатора уровня из вектора layer_id_in_nuh[i], i∈[1, vps_max_layers_minus1], при этом vps_max_layers_minus1+1 указывает максимальное число уровней и layer_id_in_nuh[i] указывает идентификатор уровня для уровня с индексом i уровня.
Другой связанный аспект вариантов осуществления характеризует декодер, сконфигурированный с возможностью декодирования кодируемого многоуровневого видеопотока, определяющего многочисленные уровни изображений, каждый уровень из упомянутых многочисленных уровней имеет соответствующий идентификатор уровня. Декодер содержит средство извлечения информации взаимосвязи декодирования, сконфигурированное с возможностью извлечения для уровня с индексом уровня из многочисленных уровней информации взаимосвязи декодирования на основе кодируемого многоуровневого видеопотока. Информация взаимосвязи декодирования задает соответствующий индекс уровня какого-либо опорного уровня из многочисленных уровней, от которого непосредственно зависит упомянутый уровень. Блок отображения индекса на идентификатор сконфигурирован с возможностью отображения для каждого опорного уровня и для упомянутого уровня его индекса уровня на идентификатор уровня на основе информации отображения иерархической взаимосвязи отображения между идентификаторами уровня и индексами уровня. Информация отображения извлекается на основе кодируемого многоуровневого видеопотока. Декодер дополнительно содержит блок декодирования, сконфигурированный с возможностью декодирования изображения упомянутого уровня на основе по меньшей мере одного ранее декодированного изображения в уровне из многочисленных уровней, идентифицированных на основе упомянутых идентификаторов уровня, отображенных от индексов уровня.
В варианте осуществления этого другого связанного аспекта средство извлечения информации взаимосвязи декодирования содержит средство извлечения флага сконфигурированное с возможностью извлечения на основе кодируемого многоуровневого видеопотока по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня из многочисленных уровней и уровнем с индексом j уровня из многочисленных уровней, i≠j. Средство извлечения информации взаимосвязи декодирования также содержит в этом варианте осуществления определитель информации, сконфигурированный с возможностью определения информации взаимосвязи декодирования на основе по меньшей мере одного флага непосредственного декодирования.
В варианте осуществления этого другого связанного аспекта блок отображения индекса на идентификатор сконфигурирован с возможностью извлечения флага vps_nuh_layer_id_present_flag на основе кодируемого многоуровневого видеопотока. Блок отображения индекса на идентификатор также сконфигурирован с возможностью установки для каждого опорного уровня и для упомянутого уровня, и если vps_nuh_layer_id_present_flag=0, его идентификатора уровня равным его индексу уровня. Блок отображения индекса на идентификатор дополнительно сконфигурирован с возможностью извлечения для каждого опорного уровня и для упомянутого уровня, и если vps_nuh_layer_id_present_flag=1, его идентификатора уровня из вектора layer_id_in_nuh[i], i∈[1, vps_max_layers_minus1], при этом vps_max_layers_minus1+1 указывает максимальное число уровней и layer_id_in_nuh[i] указывает идентификатор уровня для уровня с индексом i уровня.
Модификация этого другого связанного аспекта вариантов осуществления характеризует декодер, сконфигурированный с возможностью декодирования кодируемого многоуровневого видеопотока, определяющего многочисленные уровни изображений, каждый уровень из многочисленных уровней имеет соответствующий идентификатор уровня. Декодер содержит процессор, сконфигурированный с возможностью обрабатывать средство кода компьютерной программы, хранимой на считываемом компьютером носителе. Средство кода побуждает, при выполнении на процессоре, упомянутый процессор извлекать для уровня с индексом уровня из многочисленных уровней информацию взаимосвязи декодирования на основе кодируемого многоуровневого видеопотока. Информация взаимосвязи декодирования задает соответствующий индекс уровня какого-либо опорного уровня из многочисленных уровней, от которого непосредственно зависит упомянутый уровень. Средство кода также побуждает процессор отображать для каждого опорного уровня и для упомянутого уровня его индекс уровня на идентификатор уровня на основе информации отображения иерархической взаимосвязи отображения между идентификаторами уровня и индексами уровня. Информация отображения извлекается на основе кодируемого многоуровневого видеопотока. Средство кода дополнительно побуждает процессор декодировать изображение упомянутого уровня на основе по меньшей мере одного ранее декодированного изображения в уровне из многочисленных уровней, идентифицированных на основе упомянутых идентификаторов уровня, отображенных от индексов уровня.
Дополнительный аспект вариантов осуществления относится к способу определения взаимосвязи кодирования для многоуровневого видеопотока, определяющего многочисленные уровни изображений. Способ содержит определение какой-либо взаимосвязи кодирования между многочисленными уровнями. Способ также содержит определение для уровня с индексом i уровня из многочисленных уровней и на основе взаимосвязи кодирования по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня и уровнем с индексом j уровня из многочисленных уровней, i≠j. Способ дополнительно содержит ассоциирование по меньшей мере одного флага непосредственного декодирования с кодируемым представлением многоуровневого видеопотока.
Дополнительный связанный аспект вариантов осуществления характеризует устройство для определения взаимосвязи кодирования для многоуровневого видеопотока, определяющего многочисленные уровни изображений. Устройство содержит определитель взаимосвязи, сконфигурированный с возможностью определения какой-либо взаимосвязи кодирования между упомянутыми многочисленными уровнями. Устройство также содержит определитель флага, сконфигурированный с возможностью определения для уровня с индексом i уровня из многочисленных уровней и на основе взаимосвязи кодирования по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня и уровнем с индексом j уровня из многочисленных уровней, i≠j. Устройство дополнительно содержит блок ассоциирования, сконфигурированный с возможностью ассоциирования по меньшей мере одного флага непосредственного декодирования с кодируемым представлением многоуровневого видеопотока.
Модификация этого дополнительного связанного аспекта вариантов осуществления характеризует устройство для определения взаимосвязи кодирования для многоуровневого видеопотока, определяющего многочисленные уровни изображений. Устройство содержит процессор, сконфигурированный с возможностью обрабатывать средство кода компьютерной программы, хранимой на считываемом компьютером носителе. Средство кода побуждает, при выполнении на процессоре, упомянутый процессор определять какую-либо взаимосвязь кодирования между многочисленными уровнями. Средство кода также побуждает процессор определять для уровня с индексом i уровня из многочисленных уровней и на основе взаимосвязи кодирования по меньшей мере один флаг непосредственного декодирования, указывающий непосредственную взаимосвязь кодирования между уровнем с индексом i уровня и уровнем с индексом j уровня из многочисленных уровней, i≠j. Средство кода дополнительно побуждает процессор ассоциировать по меньшей мере один флаг непосредственного декодирования с кодируемым представлением многоуровневого видеопотока.
Еще один другой аспект вариантов осуществления относится к способу кодирования многоуровневого видеопотока, определяющего многочисленные уровни изображений, каждый уровень из многочисленных уровней имеет соответствующий идентификатор уровня. Способ содержит иерархическое отображение для каждого уровня из многочисленных уровней идентификатор уровня упомянутого уровня на индекс уровня на основе зависимостей кодирования между многочисленными уровнями. Способ также содержит определение информации взаимосвязи кодирования, задающей соответствующий индекс уровня какого-либо опорного уровня из многочисленных уровней, от которого непосредственно зависит упомянутый уровень из многочисленных уровней. Способ дополнительно содержит генерирование кодированного многоуровневого видеопотока посредством кодирования изображений из многочисленных уровней на основе зависимостей кодирования и ассоциирование информации взаимосвязи кодирования с кодированным многоуровневым видеопотоком.
В варианте осуществления этого дополнительного аспекта этап определения содержит определение какой-либо взаимосвязи кодирования между многочисленными уровнями и определение для уровня с индексом i уровня из многочисленных уровней и на основе взаимосвязи кодирования по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня и уровнем с индексом j уровня из многочисленных уровней, i≠j. Этап ассоциирования содержит в этом варианте осуществления ассоциирование по меньшей мере одного флага непосредственного декодирования с кодируемым многоуровневым видеопотоком.
Еще один другой связанный аспект вариантов осуществления характеризует кодер, сконфигурированный с возможностью кодирования многоуровневого видеопотока, определяющего многочисленные уровни изображений, каждый уровень из многочисленных уровней имеет соответствующий идентификатор уровня. Кодер содержит блок отображения, сконфигурированный с возможностью иерархического отображения, для каждого уровня из многочисленных уровней, идентификатора уровня упомянутого уровня на индекс уровня на основе зависимостей кодирования между многочисленными уровнями. Кодер также содержит определитель информации, сконфигурированный с возможностью определения информации взаимосвязи кодирования, задающей соответствующий индекс уровня какого-либо опорного уровня из многочисленных уровней, от которого непосредственно зависит упомянутый уровень из многочисленных уровней. Кодер дополнительно содержит блок кодирования, сконфигурированный с возможностью генерирования кодированного многоуровневого видеопотока посредством кодирования изображений из многочисленных уровней на основе зависимостей кодирования и блок ассоциирования, сконфигурированный с возможностью ассоциирования информации взаимосвязи кодирования с кодированным многоуровневым видеопотоком.
В варианте осуществления этого еще одного другого связанного аспекта определитель информации содержит определитель взаимосвязи, сконфигурированный с возможностью определения какой-либо взаимосвязи кодирования между многочисленными уровнями и определитель флага, сконфигурированный с возможностью определения для уровня с индексом i уровня из многочисленных уровней и на основе взаимосвязи кодирования по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня и уровнем с индексом j уровня из многочисленных уровней, i≠j. Блок ассоциирования в этом варианте осуществления сконфигурирован с возможностью ассоциирования по меньшей мере одного флага непосредственного декодирования с кодируемым многоуровневым видеопотоком.
Модификация этого еще одного другого связанного аспекта вариантов осуществления характеризует кодер, сконфигурированный с возможностью кодирования многоуровневого видеопотока, определяющего многочисленные уровни изображений, каждый уровень из многочисленных уровней имеет соответствующий идентификатор уровня. Кодер содержит процессор, сконфигурированный с возможностью обрабатывать средство кода компьютерной программы, хранимой на считываемом компьютером носителе. Средство кода побуждает, при выполнении на процессоре, упомянутый процессор иерархически отображать, для каждого уровня из многочисленных уровней, идентификатор уровня упомянутого уровня на индекс уровня на основе зависимостей кодирования между многочисленными уровнями. Средство кода также побуждает процессор определять информацию взаимосвязи кодирования, задающую соответствующий индекс уровня какого-либо опорного уровня из многочисленных уровней, от которого непосредственно зависит уровень из многочисленных уровней. Средство кода дополнительно побуждает процессор генерировать кодируемый многоуровневый видеопоток посредством кодирования изображений многочисленных уровней на основе зависимостей кодирования. Средство кода дополнительно побуждает процессор ассоциировать информацию взаимосвязи кодирования с кодируемым многоуровневым видеопотоком.
Дополнительные аспекты вариантов осуществления характеризуют пользовательское устройство и сетевой узел, содержащие устройство для определения взаимосвязи декодирования согласно вышеупомянутому и/или декодер согласно вышеупомянутому и пользовательское устройство, содержащие устройство для определения взаимосвязи кодирования согласно вышеупомянутому и/или кодер согласно вышеупомянутому.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Варианты осуществления вместе с их дополнительными задачами и преимуществами лучше всего понимаются посредством ссылки на нижеследующее описание, рассматриваемое вместе с нижеследующими чертежами, на которых:
Фиг. 1 схематически иллюстрирует пример многоуровневого видеопотока;
Фиг. 2 схематически иллюстрирует другой пример многоуровневого видеопотока;
Фиг. 3 иллюстрирует пример закодированной части изображения в многоуровневом видеопотоке;
Фиг. 4 иллюстрирует пример пакета данных многоуровневого видеопотока;
Фиг. 5 представляет собой блок-схему, иллюстрирующую способ декодирования кодированного многоуровневого видеопотока согласно варианту осуществления;
Фиг. 6 представляет собой блок-схему, иллюстрирующую способ определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока согласно варианту осуществления;
Фиг. 7 представляет собой блок-схему, иллюстрирующую способ определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока согласно другому варианту осуществления;
Фиг. 8 представляет собой блок-схему, иллюстрирующую дополнительный, необязательный этап способа с фиг. 7;
Фиг. 9 представляет собой блок-схему, иллюстрирующую способ кодирования многоуровневого видеопотока согласно варианту осуществления;
Фиг. 10 представляет собой блок-схему, иллюстрирующую способ определения информации взаимосвязи кодирования для многоуровневого видеопотока согласно варианту осуществления;
Фиг. 11 представляет собой блок-схему, иллюстрирующую способ определения информации взаимосвязи кодирования для многоуровневого видеопотока согласно другому варианту осуществления;
Фиг. 12 представляет собой структурную схему декодера согласно варианту осуществления;
Фиг. 13 представляет собой структурную схему устройства для определения взаимосвязи декодирования согласно варианту осуществления;
Фиг. 14 представляет собой структурную схему устройства для определения взаимосвязи декодирования согласно другому варианту осуществления;
Фиг. 15 представляет собой структурную схему кодера согласно варианту осуществления;
Фиг. 16 представляет собой структурную схему устройства для определения взаимосвязи кодирования согласно варианту осуществления;
Фиг. 17 представляет собой структурную схему устройства для определения взаимосвязи кодирования согласно другому варианту осуществления;
Фиг. 18 представляет собой структурную схему, иллюстрирующую конкретную реализацию примера устройств согласно упомянутым вариантам осуществления;
Фиг. 19 представляет собой схематическое общее представление кодирования многоуровневого видеопотока, передачи кодированного многоуровневого видеопотока, необязательного извлечения многоуровневого видеоподпотока и декодирования и отображения многоуровневого видеопотока;
Фиг. 20 представляет собой схему, иллюстрирующую число битов, требуемых для сигнализации зависимостей уровня, когда каждый уровень с индексом i≥1 уровня имеет один опорный уровень;
Фиг. 21 представляет собой схему, иллюстрирующую число битов, требуемых для сигнализации зависимостей уровня, когда каждый уровень с индексом i≥2 уровня имеет два опорных уровня и уровень с индексом i=1 уровня имеет один опорный уровень;
Фиг. 22 представляет собой схему, иллюстрирующую число битов, требуемых для сигнализации зависимостей уровня, когда каждый уровень с индексом i≥1 уровня имеет максимальное число опорных уровней, которые возможны; и
Фиг. 23 схематически иллюстрирует другой пример многоуровневого видеопотока.
ПОДРОБНОЕ ОПИСАНИЕ
На всех чертежах идентичные ссылочные позиции используются для аналогичных или соответствующих элементов.
Настоящие варианты осуществления в общем относятся к многоуровневым видеопотокам и, в частности, к кодированию и декодированию таких многоуровневых видеопотоков. Варианты осуществления обеспечивают эффективный способ сигнализирования зависимости уровня для многоуровневого видеопотока, посредством чего обеспечивается сокращение числа битов, требуемых для сигнализации таких зависимостей уровня по сравнению с подходами предшествующего уровня техники.
Многоуровневое видео в общем относится к многоракурсному видео, 3D видео и/или масштабируемому видео. В многоракурсном видео сцена захватывается с разных ракурсов камеры, как показано на фиг. 1, иллюстрирующей три таких ракурсов камеры. Многоуровневый видеопоток 1 далее содержит, в этом примере, изображения 20, 22, 24 из трех разных уровней 10, 12, 14 или ракурсов. Изображения 20, 22, 24 в многоуровневом видеопотоке 1 могут быть закодированы и декодированы с использованием опорных изображений, принадлежащих одному и тому же уровню 10, 12, 14 или ракурсу или принадлежащих другому уровню 10, 12, 14 или ракурсу. Фиг. 1 схематически иллюстрирует стрелками взаимосвязи кодирования и декодирования между изображениями. Например, изображение 24 кодируется и декодируется относительно предыдущего, согласно порядку кодирования и декодирования, изображения 22, принадлежащего одному и тому же уровню 12 или ракурсу. Таким образом, это изображение 22 кодируется и декодируется с использованием предыдущего изображения одного и тоже же уровня 12 или ракурса и другого изображения 20, принадлежащего другому уровню 10 или ракурсу. На фиг. 1, уровень 10 или ракурс представляет собой базовый уровень или ракурс, тогда как другие уровни 12, 14 или ракурсы представляют собой дополнительные уровни или ракурсы, также известные как уровни улучшения или зависимые ракурсы.
В 3D видео дополнительный уровень(уровни) может нести информацию глубины или другие данные, которые могут быть использованы вместе с данными пикселей базового уровня для того, чтобы генерировать 3D видео.
В масштабируемом видео дополнительный уровень(уровни) может представлять видео в более высоких разрешениях видеоизображения, более высоком качестве воспроизведения пикселей, и/или других цветовых пространствах для того, чтобы обеспечить улучшенное качество видео относительно базового уровня масштабируемого видео.
Фиг. 23 схематически иллюстрирует пример многоуровневого видеопотока 1 для масштабируемого видео. Эта фигура иллюстрирует организацию изображений 20, 22, 24 в различных масштабируемых уровнях 10, 12, 14, где уровень 10 является базовым уровнем.
Фиг. 2 схематически иллюстрирует временное масштабирование, в котором каждый уровень 12, 14 улучшения вносит улучшение в частоту кадров.
Изображение многоуровневого видеопотока может быть составлено из одного или более слайсов. Слайс представляет собой независимо декодируемую часть изображения. Другими словами, если один слайс потерян, другие слайсы этого изображения все еще могут быть декодированы.
Кодирование слайса генерирует закодированное представление 30 слайса, содержащее заголовок 32 слайса и данные 34 слайса, как показано на фиг. 3. Закодированное представление 30 выводится из процесса кодирования как так называемая единица 44 уровня сетевой абстракции (NAL), как показано на фиг. 4. Единица 44 NAL может быть дополнена заголовками 42 для формирования пакета 40 данных, который может быть передан как часть кодируемого многоуровневого видеопотока из кодера в декодер. В качестве примера, заголовки 42 транспортного протокола реального времени (RTP), протокола пользовательских дейтаграмм (UDP) и протокола межсетевого обмена данными (IP) могут быть добавлены в единицу 44 NAL. Эта форма пакетизации единиц 44 NAL является лишь примером, связанным с транспортировкой видео. Являются возможными другие подходы обработки единиц 44 NAL, такие как формат файлов, транспортные потоки MPEG-2, программные потоки MPEG-2 и т.д. Фиг. 19 схематически иллюстрирует генерирование кодируемого многоуровневого видеопотока 2 из входного многоуровневого видеопотока 1, содержащего многочисленные уровни 10, 12, 14 изображений 20, 22, 24.
Аспект вариантов осуществления относится к способу декодирования кодированного многоуровневого видеопотока 2, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24. Каждый уровень 10, 12, 14 из многочисленных уровней 10, 12, 14 имеет соответствующий идентификатор уровня. Способ содержит извлечение для уровня 12 с индексом уровня из многочисленных уровней 10, 12, 14 информации взаимосвязи декодирования на основе кодируемого многоуровневого видеопотока 2. Информация взаимосвязи декодирования задает соответствующий индекс уровня какого-либо опорного уровня 10 из упомянутых многочисленных уровней 10, 12, 14, от которого непосредственно зависит упомянутый уровень 12. Способ также содержит отображение для каждого опорного уровня 10 и для упомянутого уровня 12 его индекса уровня на идентификатор уровня на основе информации отображения иерархической взаимосвязи отображения между идентификаторами уровня и индексами уровня. Информация отображения извлекается на основе кодируемого многоуровневого видеопотока 2. Способ дополнительно содержит декодирование изображения 22 упомянутого уровня 12 на основе по меньшей мере одного ранее декодированного изображения 20 в уровне 10 из многочисленных уровней 10, 12, 14, идентифицированных на основе идентификаторов уровня, отображенных от индексов уровня.
Далее, вариант осуществления этого аспекта будет дополнительно описан со ссылкой на блок-схему с фиг. 5. Следовательно, фиг. 5 раскрывает способ декодирования кодированного многоуровневого видеопотока, такого как многоракурсный видеопоток, 3D видеопоток или масштабируемый видеопоток. Многоуровневый видеопоток определяет или содержит многочисленные уровни изображений. Каждый такой уровень многоуровневого видеопотока имеет соответствующий идентификатор уровня.
Способ обычно начинается на этапе S1, на котором информация взаимосвязи декодирования извлекается для (текущего) уровня из многочисленных уровней в многоракурсном видеопотоке. Текущий уровень, для которого извлекается информация взаимосвязи декодирования, имеет индекс уровня. Таким образом, текущий уровень имеет, в дополнение к вышеупомянутому идентификатору уровня, который является общим или "глобальным" идентификатором для упомянутого текущего уровня, индекс уровня, который является индексом, используемым для сигнализации зависимостей уровня. Следовательно, индекс уровня предпочтительно выполнен таким образом, чтобы использоваться вместо идентификатора уровня для сигнализации зависимостей уровня.
Информация взаимосвязи декодирования, извлекаемая на этапе S1, задает соответствующий индекс уровня какого-либо опорного уровня из многочисленных уровней в многоракурсном видеопотоке, от которого непосредственно зависит текущий уровень. Таким образом, информация взаимосвязи декодирования задает соответствующий индекс уровня каждого опорного уровня, от которого непосредственно зависит текущий уровень.
Как используется в данном документе, уровень X непосредственно зависит (или является непосредственно зависимым) от уровня Y, если, например, предсказание пикселя из уровня Y в уровень X необходимо использовать для декодирования уровня X. Таким образом, изображение, принадлежащее уровню X, кодируется и посредством этого декодируется на основе опорного изображения, принадлежащего уровню Y.
Соответственно, если уровень X непосредственно зависит (или является непосредственно зависимым) от уровня Y, но не зависит непосредственно (или не является непосредственно зависимым) от уровня Z, а уровень Y непосредственно (или опосредованно) зависит (является непосредственно или опосредованно зависимым) от уровня Z, то уровень X опосредованно зависит (является опосредованно зависимым) от уровня Z. Уровень X зависит (является зависимым) от уровня Z, если он либо непосредственно зависит (является непосредственно зависимым) от уровня Z или опосредованно зависит (является опосредованно зависимым) от уровня Z.
Если уровень X непосредственно зависит от уровня Y, этот уровень Y является непосредственным опорным уровнем для уровня X.
Со ссылкой на фиг. 2 или 23, уровень со ссылочной позицией 12 непосредственно зависит от базового уровня 10. Уровень со ссылочной позицией 14 непосредственно зависит от уровня со ссылочной позицией 12 и опосредованно зависит от базового уровня 10.
Информация взаимосвязи декодирования, которая извлечена на этапе S1, предпочтительно включает соответствующие индексы уровня опорных уровней, от которых зависит текущий уровень. Следовательно, опорные уровни также имеют соответствующий индекс уровня в дополнение к их соответствующему идентификатору уровня.
В варианте осуществления, информация взаимосвязи декодирования представлена в наборе параметров, содержащемся как часть многоуровневого видеопотока, например, в единице NAL, или обеспечена вне полосы относительно многоуровневого видеопотока. Набор параметров предпочтительно имеет назначенный идентификатор набора параметров, обеспечивающий возможность идентификации релевантного набора параметров. Затем, такой идентификатор набора параметров предпочтительно включается в многоуровневый видеопоток, такой как имеющийся в заголовке слайса закодированного представления слайса. В качестве альтернативы, идентификатор (первого) набора параметров включается во второй набор параметров с идентификатором второго набора параметров, который включен в многоуровневый видеопоток, например, в заголовок слайса. В дополнительном альтернативном варианте, идентификатор (первого) набора параметров включается во второй набор параметров с идентификатором второго набора параметров, который включен в третий набор параметров, который имеет идентификатор третьего набора параметров, который включен в многоуровневый видеопоток, например, в заголовок слайса.
В первом примере, информация взаимосвязи декодирования может быть включена в VPS, идентифицированный посредством идентификатора VPS, включенного в SPS, который идентифицирован посредством идентификатора SPS, включенного в PPS, имеющий ассоциированный идентификатор PPS, включенный в заголовок слайса.
Во втором примере, информация взаимосвязи декодирования может быть включена в SPS, который идентифицирован посредством идентификатора SPS, включенного в PPS, имеющий ассоциированный идентификатор PPS, включенный в заголовок слайса.
В третьем примере, информация взаимосвязи декодирования может быть включена в PPS, имеющий ассоциированный идентификатор PPS, включенный в заголовок слайса.
Информация взаимосвязи декодирования может, в качестве альтернативы или в дополнение, быть включена во вспомогательное сообщение, например, в сообщение вспомогательной информации улучшения (SEI), например, в сообщение SEI об активных наборах параметров.
В другом примере информация взаимосвязи декодирования имеется в данных многоуровневого расширения, включенных как часть многоуровневого видеопотока или обеспеченных вне полосы. Такие данные многоуровневого расширения могут быть в форме, например, данных многоракурсного расширения, данных 3D расширения или данных масштабируемого расширения. Альтернативой является обладание данными расширения, относящимися к набору параметров, такому как данные расширения VPS, данные расширения PPS или данные расширения SPS. Данные расширения набора параметров, такие как данные расширения VPS, данные расширения SPS, данные расширения PPS могли бы присутствовать как опциональное расширение структур данных VPS, SPS или PPS, например, в зависимости от флага. Другими словами, VPS/SPS/PPS могли бы иметь флаг расширения, который указывает, присутствуют ли дополнительные данные, расширяющие VPS/SPS/PPS.
В дополнительном варианте осуществления, информация взаимосвязи декодирования присутствует в закодированных представлениях кодируемого многоуровневого видеопотока. В качестве примера, информация взаимосвязи декодирования могла бы присутствовать в соответствующем заголовке слайса одного или более закодированных представлений. В таком случае, отсутствует необходимость в идентификаторах для других структур данных многоуровневого видеопотока или связанных с ним. Однако этот подход увеличивает общий размер в единицах числа битов кодируемых представлений, которое переносит информацию отображения.
Следующий этап S2 c фиг. 5 содержит отображение индекса уровня на идентификатор уровня для каждого опорного уровня, определенного информацией взаимосвязи декодирования, извлеченной на этапе S1, и для текущего уровня. Это отображение индексов на идентификаторы на этапе S2 выполняется на основе информации отображения иерархической взаимосвязи отображения между идентификаторами уровня и индексами уровня. Эта информация отображения предпочтительно извлекается на основе кодируемого многоуровневого видеопотока. Информация отображения может быть извлечена из набора параметров, расширения набора параметров, из другой структуры данных, связанной с кодируемым многоуровневым видеопотоком, или принадлежащей ему, из закодированного представления слайса в кодируемом многоуровневом видеопотоке и т.д. Информация отображения предпочтительно обеспечивается в структуре данных, аналогичной информации взаимосвязи декодирования, но в качестве альтернативы может быть представлена в другой структуре данных.
Информация отображения задает и взаимосвязь иерархического отображения между идентификаторами уровня и индексами уровня. Иерархическое отображение указывает, как используется в этом документе, что индексы уровня назначаются различным уровням в соответствии с зависимостями уровня. В конкретном варианте осуществления, уровни индексируются иерархически так, что уровень с заданным индексом i уровня может иметь лишь опорные уровни с более низкими индексами j, т.е. j<i. Таким образом, соответствующий индекс j уровня, назначенный уровню(ям) из многочисленных уровней в многоуровневом видеопотоке, от которого зависит текущий уровень с индексом i уровня, предпочтительно является более низким, чем индекс i уровня. Это дополнительно предполагает, что уровень с индексом i уровня может иметь самое большое i опорных уровней, j=0, …, i-1.
Использование индексов уровня вместо идентификаторов уровня делает возможным более эффективный с точки зрения битов способ сигнализации зависимостей уровня. В общем, для HEVC каждый из идентификаторов уровня, как указано в разделе уровень техники, состоит из шести битов. Идентификаторы уровня могут, однако, могут быть назначены разреженно, т.е. некоторые значения 6-битных идентификаторов уровня никогда не используются. Иерархическое отображение между идентификаторами уровня и индексами уровня согласно варианту осуществления делает возможным использование индексов уровня, которые назначаются способом без разряжения, т.е. используются все значения индексов уровня.
Способ, показанный на фиг. 5, дополнительно содержит этап S3, который содержит декодирование изображения текущего уровня на основе по меньшей мере одного ранее декодированного изображения в уровне из многочисленных уровней в многоуровневом видеопотоке, где этот уровень идентифицируется на основе идентификаторов уровня, отображенных от индексов уровня. Следовательно, информация взаимосвязи декодирования, извлекаемая на этапе S1, используется для обеспечения индексов уровня любых опорных уровней. Информация отображения затем используется на этапе S2 для отображения соответствующего индекса уровня, заданного информацией взаимосвязи декодирования, на соответствующий идентификатор уровня, а также отображения индекса уровня текущего уровня на идентификатор уровня. Изображение, или более корректно по меньшей мере одно изображение, в текущем уровне затем декодируется на основе по меньшей мере одного ранее декодированного изображения, т.е. опорного изображения, в уровне, идентифицированном на основе по меньшей мере одного из идентификаторов уровня, полученных при отображении, выполненном на этапе S2. Опорное изображение, используемое на этапе S3 декодирования, может быть опорным изображением, принадлежащим к текущему уровню или другому уровню многоуровневого видеопотока. Если более одного опорного изображения должно использоваться в качестве основы декодирования для изображения, которое должно быть декодировано на этапе S3, эти опорные изображения могут принадлежать одному или разным уровням многоуровневого видеопотока.
Индексы уровня, используемые вариантами осуществления для сигнализации зависимостей уровня, могут отличаться от идентификаторов уровня. Число уровней обычно меньше числа разных возможных идентификаторов уровня, например, 64 возможных идентификаторов уровня для представления 6-битного идентификатора уровня. Таким образом, число битов, используемых для сигнализации индекса уровня обычно ниже числа битов, используемых для сигнализации идентификатора уровня. Кроме того, поскольку идентификатор уровня представляется синтаксическим элементом постоянного числа битов, например, u(6) кодом, требуя шесть битов для представления идентификатора уровня, индекс уровня предпочтительно представляется синтаксическим элементом переменной длины, например u(v) кодом. В этом отношении, число v битов, используемых для указания индекса уровня, может быть определено на основе максимального числа используемых уровней, например, как v=ceil(log2(max_layers)), где max_layers указывает максимальное число используемых уровней, т.е. max_layers = vps_max_layers_minus1+1, log2(x) указывает логарифм x по основанию 2, а ceil(y) указывает наименьшее целое число большее или равное у.
В примере реализации, следующие синтаксические элементы могут быть использованы для указания информации взаимосвязи декодирования и информации отображения.
vps_extension( ){
Дескриптор
…
for(i=1; i≤ vps_max_layers_minus1; i++) {
layer_id_in_nuh[i]
u(6)
}
…
for (i=1; i≤vps_max_layers_minus1; i++) {
num_direct_ref_layers[i]
u(v)
for(j=0; j<num_direct_ref_layers[i]; j++)
ref_layer_index[i][j]
u(v)
}
}
В первом цикле i представляет индекс уровня и layer_id_in_nuh[i] указывает идентификатор уровня для индекса i уровня. Следовательно, эти синтаксические элементы составляют информацию отображения. Во втором цикле num_direct_ref_layers[i] задает число уровней, от которых непосредственно зависит уровень с индексом i уровня. ref_layer_index[i][j] идентифицирует индекс уровня j-ого уровня, от которого непосредственно зависит уровень с индексом i уровня. В этой примерной реализации иерархическая взаимосвязь уровня используется так, что уровень с индексом i может иметь лишь опорные уровни, которые имеют индексы j<i уровня.
Информация отображения, используемая на этапе S2, и информация взаимосвязи декодирования, извлеченная на этапе S1, вместе обеспечивают возможность эффективной сигнализации зависимостей уровня посредством использования иерархической взаимосвязи уровня и плотного назначения индексов уровня. В результате число битов, требуемых для сигнализации зависимостей уровня, может быть сокращено по сравнению с использованием идентификаторов уровня.
Таким образом, использование индексов уровня для сигнализации зависимостей уровня вместо идентификаторов уровня и использование индексирующих иерархический уровень синтаксических элементов или кодовых слов минимальной длины может быть использовано для определения информации взаимосвязи декодирования.
В некоторых вариантах осуществления индексы уровня могут быть такими же, как идентификаторы уровня, т.е. layer_index=layer_id. Однако, в таком случае, идентификаторы уровня предпочтительно организуются иерархически относительно зависимостей уровня, как описано в данном документе. В таком случае, данные расширения VPS, раскрытые выше по тексту, могут быть представлены, как показано ниже по тексту:
vps_extension( ){
Дескриптор
…
vps_nuh_layer_id_present_flag
u(1)
for(i=1; i≤vps_max_layers_minus1; i++) {
if (vps_nuh_layer_id_present_flag)
layer_id_in_nuh[i]
u(6)
}
…
}
Если vps_nuh_layer_id_present_flag равен нулю, то отсутствует явное отображение между идентификаторами уровня и индексами уровня. В таком случае, может быть выведено неявно, что layer_id_in_nuh[i]=i.
Следовательно, в варианте осуществления этап S2 отображения на фиг. 5 содержит извлечение флага vps_nuh_layer_id_present_flag на основе кодируемого многоуровневого видеопотока, например, из расширения VPS, как указано выше по тексту. Этап S2 отображения дополнительно содержит установку для каждого опорного уровня и для упомянутого уровня, и если vps_nuh_layer_id_present_flag=0, его идентификатора уровня равным его индексу уровня. Этап S2 отображения также содержит извлечение для каждого опорного уровня и для упомянутого уровня, и если vps_nuh_layer_id_present_flag=1, его идентификатора уровня из вектора layer_id_in_nuh[i], i∈[1, vps_max_layers_minus1], при этом vps_max_layers_minus1+1 указывает максимальное число уровней и layer_id_in_nuh[i] указывает идентификатор уровня для уровня с индексом i уровня.
Другой аспект вариантов осуществления относится к способу кодирования многоуровневого видеопотока 1, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24. Каждый уровень 10, 12, 14 из многочисленных уровней 10, 12, 14 имеет соответствующий идентификатор уровня. Способ содержит иерархическое отображение для каждого уровня 10, 12, 14 из упомянутых многочисленных уровней 10, 12, 14 идентификатора уровня упомянутого уровня 10, 12, 14 на индекс уровня на основе зависимостей кодирования между упомянутыми многочисленными уровнями 10, 12, 14. Способ также содержит определение информации взаимосвязи кодирования, определяющей соответствующий индекс уровня какого-либо опорного уровня 10 из упомянутых многочисленных уровней 10, 12, 14, от которого непосредственно зависит уровень 12 из упомянутых многочисленных уровней 10, 12, 14. Способ дополнительно содержит генерирование кодированного многоуровневого видеопотока 2 посредством кодирования изображений 20, 22, 24 из многочисленных уровней 10, 12, 14 на основе зависимостей кодирования и ассоциирование информации взаимосвязи кодирования с кодированным многоуровневым видеопотоком 2.
Фиг. 9 представляет собой блок-схему, иллюстрирующую вариант осуществления способа кодирования многоуровневого видеопотока. Способ начинается на этапе S40, который содержит иерархическое отображение соответствующего идентификатора уровня каждого уровня в многоуровневом видеопотоке на соответствующий индекс уровня. Это отображение между идентификаторами уровня и индексами уровня выполняется на основе зависимостей кодирования между многочисленными уровнями многоуровневого видеопотока. Таким образом, назначение индексов уровня уровням проводится на основе того, как различные уровни зависят друг от друга. В частности, назначение индексов уровня во время отображения на этапе S40 выполняется так, что уровень с назначенным индексом i уровня может иметь лишь опорные уровни, т.е. зависеть от уровней, которые имеют индексы j уровня, где j меньше i. Таким образом, принимая во внимание информацию о том, как уровни многоуровневого видеопотока зависят друг от друга, идентификаторы уровня упомянутого уровня отображаются на индексы уровня для формирования иерархической взаимосвязи декодирования.
Этап S41 упомянутого способа содержит определение информации взаимосвязи кодирования, задающей соответствующий индекс уровня какого-либо опорного уровня, от которого непосредственно зависит текущий уровень многоуровневого видеопотока. Таким образом, информация взаимосвязи кодирования задает индекс уровня или индексы всех опорных уровней для текущего уровня.
Кодируемый многоуровневый видеопоток генерируется на этапе S42 посредством кодирования изображений многочисленных уровней на основе и согласно зависимостям кодирования между многочисленными уровнями. Таким образом, P или B слайсы в различных уровнях кодируются с использованием одного или более опорных изображений, принадлежащих одному и тому же уровню, что и P или B слайс, или принадлежащих одному из опорных уровней для уровня P или B слайса. Изображение может, в качестве альтернативы, быть I-изображением. В таком случае, опорные изображения не обрабатываются таким же образом, как обычные "временные" опорные изображения. I-изображение, например, в масштабируемом расширении HEVC, все еще может иметь опорное изображение для "межуровневого предсказания".
Кодируемый многоуровневый видеопоток предпочтительно содержит соответствующие закодированные представления 30 слайсов, как показано на фиг. 3, для каждого слайса многоуровневого видеопотока. Закодированные представления 30 преимущественно упаковываются в единицы 44 NAL, как показано на фиг. 4. Кодируемый многоуровневый видеопоток также может содержать единицы 44 NAL, содержащие отличные от закодированных представлений 30 данные, такие как наборы параметров.
Информация взаимосвязи кодирования, определенная на этапе S41, ассоциируется на этапе S43 с кодируемым многоуровневым видеопотоком, генерируемым на этапе S42. Этот этап S43 может быть выполнен до этапа S42 или по меньшей мере частично параллельно с этапом S42. Ассоциирование информации взаимосвязи кодирования с кодируемым многоуровневым видеопотоком может быть выполнено согласно различным вариантам осуществления, как раскрыто выше по тексту данного документа. Например, информация взаимосвязи кодирования может быть представлена в наборе параметров, в этом случае идентификатор набора параметров включается в заголовок слайса по меньшей мере одного закодированного представления слайса в кодируемом многоуровневом видеопотоке, или в другом наборе параметров, который может быть идентифицирован на основе данных, включенных в заголовок слайса. В качестве альтернативы, информация взаимосвязи кодирования может быть представлена в расширении набора параметров или, конечно, в закодированных представлениях слайсов.
В конкретном варианте осуществления, информация отображения, используемая на этапе S40, для иерархического отображения соответствующего идентификатора уровня на соответствующий индекс уровня, предпочтительно генерируется и ассоциируется с кодируемым многоуровневым видеопотоком. В таком случае, эта информация отображения предпочтительно обеспечивается в такой же структуре данных, что и информация взаимосвязи кодирования, что описано выше по тексту данного документа.
Аспекты вариантов осуществления также относятся к способам определения взаимосвязей декодирования для кодируемого многоуровневого видеопотока и определения взаимосвязей кодирования для многоуровневого видеопотока. Эти варианты осуществления могут быть благоприятно применены к способу декодирования, показанному на фиг. 5, или способу кодирования, показанному на фиг. 9. В качестве альтернативы, эти способы определения взаимосвязей кодирования/декодирования могут быть использованы отдельно от способа с фиг. 5 и способа с фиг. 9.
Если эти способы определения взаимосвязей кодирования/декодирования используются отдельно от способа с фиг. 5 и способа с фиг. 9, способы могут использовать либо индексы уровня для многочисленных уровней в многоуровневом видеопотоке, либо идентификаторы уровня в многоуровневом видеопотоке. Таким образом, в последнем случае нет необходимости в явном отображении идентификаторов уровня на индексы уровня. Для таких примеров, индекс уровня/индексы уровня, используемые в данном документе со ссылкой на способы определения взаимосвязей кодирования/декодирования, могут быть заменены идентификатором уровня/идентификаторами уровня. Затем, особенно предпочтительно, чтобы идентификаторы уровня были организованы иерархически.
Аспект вариантов осуществления относится к способу определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока 2, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24. Способ содержит извлечение на основе упомянутого кодируемого многоуровневого видеопотока 2 по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем 12 с индексом i уровня из упомянутых многочисленных уровней 10, 12, 14 и уровнем 10 с индексом j уровня из упомянутых многочисленных уровней 10, 12, 14, i≠j. Способ также содержит определение информации, задающей какую-либо взаимосвязь декодирования между многочисленными уровнями 10, 12, 14, на основе по меньшей мере одного флага непосредственного декодирования.
Фиг. 6 представляет собой блок-схему, иллюстрирующую вариант осуществления этого способа определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока, определяющего многочисленные уровни изображений. Способ начинается на этапе S10, который содержит извлечение по меньшей мере одного флага непосредственного декодирования на основе кодируемого многоуровневого видеопотока. Упомянутый по меньшей мере один флаг непосредственного декодирования может быть представлен в наборе параметров, таком как PPS, SPS или VPS, расширении набора параметров, таком как расширение PPS, расширение SPS или расширение VPS, быть представлен в закодированном представлении слайса, например, в заголовке слайса, кодируемого многоуровневого видеопотока, или в другом месте обеспеченным в структуре данных или связанным с кодируемым многоуровневым видеопотоком. Таким образом, кодируемый многоуровневый видеопоток либо содержит упомянутый по меньшей мере один флаг непосредственного декодирования, либо содержит информацию, такую как идентификатор, обеспечивающую возможность идентификации структуры данных, содержащей упомянутый по меньшей мере один флаг непосредственного декодирования. Таким образом, извлечение на этапе S10 может быть выполнено посредством анализа и декодирования набора параметров или расширения набора параметров для получения флага непосредственного декодирования. В качестве альтернативы и если набор параметров или расширение набора параметров уже проанализировано и декодировано и данные набора параметров или расширения набора параметров сохранены в декодированном виде в памяти, этап S10 может содержать запись или извлечение по меньшей мере одного флага непосредственного декодирования из такой памяти. Если по меньшей мере один флаг непосредственного декодирования представлен в закодированном представлении слайса, этап S10 предпочтительно извлекает упомянутый по меньшей мере один флаг непосредственного декодирования в связи с анализом и декодированием заголовка слайса в закодированном представлении.
Упомянутый по меньшей мере один флаг непосредственного декодирования, извлеченный на этапе S10, указывает непосредственную взаимосвязь кодирования между уровнем с индексом i уровня (текущим уровнем) из многочисленных уровней и уровнем с индексом j уровня из многочисленных уровней, где i≠j. Таким образом, упомянутый по меньшей мере один флаг непосредственного декодирования указывает, имеется ли какая-либо непосредственная взаимосвязь кодирования и, как следствие, декодирования между уровнями с индексами i и j уровня. В конкретном варианте осуществления, флаг непосредственного декодирования указывает, является ли уровень с индексом j уровня непосредственным опорным уровнем для уровня с индексом i уровня.
бин
бин
бин
бин
Упомянутый по меньшей мере один флаг непосредственного декодирования предпочтительно является 1-битовым флагом, т.е. предполагается либо значение 0, либо значение 1. В таком случае, флаг непосредственного декодирования установленный равным 1 может указывать, что уровень с индексом j уровня является непосредственным опорным уровнем для уровня с индексом i уровня, тогда как флаг непосредственного декодирования, установленный равным 0 вместо этого указывает, что уровень с индексом j уровня не является непосредственным опорным уровнем для уровня с индексом i уровня.
Способ также содержит определение на этапе S11 информации, определяющей какую-либо взаимосвязь декодирования между многочисленными уровнями в многоуровневом видеопотоке на основе по меньшей мере одного флага непосредственного декодирования, извлеченного на этапе S10. Таким образом, упомянутый по меньшей мере один флаг непосредственного декодирования, извлеченный на этапе S10, используется для определения информации, задающей взаимосвязь декодирования между различными уровнями в многоуровневом видеопотоке.
Затем, способ завершается в варианте осуществления.
В альтернативном варианте осуществления информация, определенная на этапе S11, используется в качестве информации взаимосвязи декодирования в способе декодирования кодируемого многоуровневого видеопотока, описанном со ссылкой на фиг. 5. В таком случае способ переходит с этапа S11 с фиг. 6 на этап S2 с фиг. 5.
Это означает, что в этом альтернативном варианте осуществления индексы уровня иерархически назначаются различным уровням так, что уровень с индексом i уровня имеет любые опорные уровни, которые имеют индексы j<i уровня. В таком случае флаги непосредственного декодирования обеспечивают возможность очень компактного и эффективного способа сигнализации зависимостей уровня для многоуровневого видеопотока.
Определение информации на этапе S11 может, что дополнительно описано ниже по тексту, включать в себя генерирование или вычисление информации с использованием упомянутого по меньшей мере одного флага непосредственного декодирования, извлеченного на этапе S10. В альтернативном варианте осуществления, определение информации, задающей какую-либо взаимосвязь декодирования между многочисленными уровнями, может быть просто определением значения(ий) упомянутого по меньшей мере одного флага непосредственного декодирования. Таким образом, в этом случае соответствующее декодированное значение упомянутого по меньшей мере одного флага непосредственного декодирования может составлять информацию, определяемую или обеспечиваемую на этапе S11.
В варианте осуществления этапа S10 соответствующий флаг непосредственной зависимости извлекается для уровня с индексом i уровня для каждого индекса j уровня на основе кодируемого многоуровневого видеопотока. В этом варианте осуществления, j<i и флаг непосредственной зависимости указывает, является ли уровень с индексом j уровня непосредственным опорным уровнем для уровня с индексом i уровня.
Этап S11 предпочтительно содержит, в этом варианте осуществления, определение информации, задающей какой-либо уровень с индексом j<i уровня, от которого зависит уровень с индексом i уровня, на основе флага(ов) непосредственной зависимости, извлеченного на этапе S10. Таким образом, флаг(и) непосредственной зависимости, полученный на этапе S10, используется(используются) для того, чтобы определить информацию, задающую уровень(уровни) с соответствующим индексом уровня более низким, чем индекс уровня текущего уровня (индекс i уровня), от которого непосредственно или опосредованно зависит текущий уровень.
В варианте осуществления этап S10 содержит извлечение из набора параметров видео или расширения набора параметров видео, ассоциированного с кодируемым многоуровневым видеопотоком, упомянутого по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня и уровнем с индексом j уровня.
j=0…i-1
В конкретном варианте осуществления этап S10 предпочтительно содержит извлечение для уровня с индексом i уровня соответствующего флага direct_dependency_flag[i][j] непосредственной зависимости для каждого индекса j уровня на основе кодируемого многоуровневого видеопотока. В этом конкретном варианте осуществления этап S11 предпочтительно содержит определение набора флагов зависимости или массива dependency_flag[i] для уровня с индексом i уровня. Набор флагов зависимости предпочтительно определяется как dependency_flag[i]=direct_dependency_flag[i]+sum(direct_dependency_flag[i][j]×dependency_flag[j]).
- direct_dependency_flag[ i ] представляет вектор, т.е. конкатенацию элементов в direct_dependency_flag[i][j];
- “+” представляет побитовую логическую операцию ИЛИ;
j=0…i-1
- sum(x(j)) представляет побитовую логическую операцию ИЛИ на всех x(j) с j=0…i-1; и
- “×” представляет побитовую операцию И между каждым элементом в dependency_flag[j] и direct_dependency_flag[i][j]
В таком случае синтаксические элементы для сигнализации флагов непосредственной зависимости могут быть такими, как определены ниже по тексту.
for (i=1; i≤ vps_max_layers_minus1; i++) {
Дескриптор
//зависимость уровня
for(j=0; j<i; j++)
direct_dependency_flag[i][j]
u(1)
}
direct_dependency_flag[i][j] равный нулю предпочтительно указывает, что уровень с индексом j уровня не является непосредственным опорным уровнем для уровня с индексом i уровня. direct_dependency_flag[i][j] равный единице предпочтительно указывает, что уровень с индексом j уровня является непосредственным опорным уровнем для уровня с индексом i уровня. Если не присутствует, direct_dependency_flag[i][j] предпочтительно выводится равным нулю.
vps_max_layers_minus1+1 указывает максимальное возможное число уровней в кодируемом многоуровневом видеопотоке.
Если этот вариант осуществления используется в связи со способом декодирования, показанным на фиг. 5, флаги непосредственной зависимости и информация отображения могут сигнализироваться вместе, например, в расширении VPS, как показано ниже по тексту.
vps_extension( ){
Дескриптор
…
for(i=1; i≤ vps_max_layers_minus1; i++) {
layer_id_in_nuh[i]
u(6)
}
…
for (i=1; i≤vps_max_layers_minus1; i++) {
for (j=0; j<i; j++)
direct_dependency_flag[i][j]
u(1)
}
}
В другом варианте осуществления этап S10 с фиг. 6 содержит извлечение для уровня с индексом i уровня соответствующего непосредственного опорного флага для каждого индекса j уровня на основе кодируемого многоуровневого видеопотока. В этом варианте осуществления, j>i и непосредственный опорный флаг указывает, является ли уровень с индексом i уровня непосредственным опорным уровнем для уровня с индексом j уровня. Этап S11 предпочтительно содержит определение информации, задающей какой-либо уровень с индексом j>i уровня, для которого уровень с индексом i уровня является (непосредственным или опосредованным) опорным уровнем, на основе непосредственного опорного флага(ов), извлеченного на этапе S10.
j=i+1…imax
В конкретном варианте осуществления этап S10 предпочтительно содержит извлечение для уровня с индексом i уровня соответствующего непосредственного опорного флага direct_reference_flag[i][j] для каждого индекса j уровня на основе кодируемого многоуровневого видеопотока. Этап S11 предпочтительно содержит определение набора опорных флагов или массива reference_flag[i] для уровня с индексом i уровня. Набор опорных флагов предпочтительно определяется как reference_flag[i]=direct_reference_flag[i]+ sum(direct_reference_flag[i][j]×reference_flag[j]).
- reference_flag[i] представляет вектор, т.е. конкатенацию элементов в reference_flag[i][j];
- direct_reference_flag[i] представляет вектор, т.е. конкатенацию элементов в direct_reference_flag[i][j];
- “+” представляет побитовую логическую операцию ИЛИ;
j=i+1…imax
- sum(x(j)) представляет побитовую логическую операцию ИЛИ над всеми x(j) с j=i+1…imax, где imax представляет максимальный индекс уровня; и
- “×” представляет побитовую операцию И между каждым элементом в reference_flag[j] и direct_reference_flag[i][j]
В таком случае синтаксические элементы для сигнализации флагов непосредственной зависимости могут быть такими, как определены ниже по тексту.
for (i=1; i≤vps_max_layers_minus1; i++) {
Дескриптор
// зависимость уровня
for (j=i+1; j≤vps_max_layers_minus1; j++)
direct_reference_flag[i][j]
u(1)
}
direct_reference_flag[i][j] равный нулю предпочтительно указывает,что уровень с индексом i уровня не является непосредственным опорным уровнем для уровня с индексом j уровня. direct_reference_flag[i][j] равный единице предпочтительно указывает, что уровень с индексом i уровня является непосредственным опорным уровнем для уровня с индексом j уровня. Если не присутствует, direct_reference_flag[i][j] предпочтительно выводится равным нулю.
Если этот вариант осуществления используется в связи со способом декодирования, показанным на фиг. 5, непосредственные опорные флаги и информация отображения могут сигнализироваться вместе, например, в расширении VPS, как показано ниже по тексту. Этот вариант осуществления затем предпочтительно имеет иерархическую взаимосвязь декодирования, поскольку уровень с индексом i уровня предпочтительно может быть лишь опорным уровнем для уровней с индексом j>i уровня.
vps_extension( ){
Дескриптор
…
for (i=1; i≤ vps_max_layers_minus1; i++) {
layer_id_in_nuh[i]
u(6)
}
…
for(i=1; i≤vps_max_layers_minus1; i++) {
for (j=i+1; j≤vps_max_layers_minus1; j++)
direct_reference_flag[i][j]
u(1)
}
}
В дополнительном варианте осуществления этап S10 с фиг. 6 содержит извлечение для уровня с индексом i уровня соответствующего флага direct_dependency_flag[i][j] непосредственной зависимости для каждого индекса j уровня на основе упомянутого кодируемого многоуровневого видеопотока.
В конкретном варианте осуществления direct_dependency_flag[i][j] равный 0 указывает, что уровень с индексом j уровня не является непосредственным опорным уровнем для уровня с индексом i уровня. Соответственно, direct_dependency_flag[i][j] равный 1 указывает, что уровень с индексом j уровня может быть непосредственным опорным уровнем для уровня с индексом i уровня.
Этап S11 c фиг. 6 содержит в этом варианте осуществления определение переменных NumDirectRefLayers[i] и RefLayerId[i][j], соответственно на основе флагов непосредственной зависимости direct_dependency_flag[i][j]. NumDirectRefLayers[i] является переменной, представляющей число непосредственных опорных уровней для уровня с индексом i уровня, а переменная RefLayerId[i][j] представляет идентификатор уровня j-го непосредственного опорного уровня для уровня с индексом i уровня.
В конкретном варианте осуществления переменные NumDirectRefLayers[i] и RefLayerId[i][j] получаются на этапе S11 согласно следующему:
for (i=1; i≤ vps_max_layers_minus1; i++)
for (j=0; NumDirectRefLayers[i]=0; j<i; j++)
if (direct_dependency_flag[i][j]==1)
RefLayerId[i][NumDirectRefLayers[i]++]=layer_id_in_nuh[j]
Если этот вариант осуществления используется в связи со способом декодирования, показанным на фиг. 5, непосредственные опорные флаги и информация отображения могут сигнализироваться вместе, например в расширении VPS, как показано ниже по тексту. Этот вариант осуществления затем предпочтительно имеет иерархическую взаимосвязь декодирования, поскольку уровень с индексом i уровня предпочтительно может быть лишь опорным уровнем для уровней с индексом j>i уровня.
vps_extension( ){
Дескриптор
…
for (i=1; i≤vps_max_layers_minus1; i++) {
layer_id_in_nuh[i]
u(6)
}
…
for (i=1; i≤vps_max_layers_minus1; i++) {
for (j=i+1; j≤vps_max_layers_minus1; j++)
direct_reference_flag[i][j]
u(1)
}
}
Аспект вариантов осуществления относится к способу определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока 2, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24. Способ необязательно содержит вычисление длины числового синтаксического элемента. Способ также содержит извлечение, на основе кодируемого многоуровневого видеопотока 2, числового синтаксического элемента, задающего число опорных уровней из многочисленных уровней 10, 12, 14 для уровня 12 с индексом i уровня из многочисленных уровней 10, 12, 14 необязательно на основе длины числового синтаксического элемента. Способ дополнительно содержит извлечение на основе кодируемого многоуровневого видеопотока 2 и для каждого из числа опорных уровней соответствующего опорного синтаксического элемента, определяющего индекс j уровня для уровня 10 из многочисленных уровней 10, 12, 14, от которого непосредственно зависит уровень 12 с индексом i уровня, j<i.
Фиг. 7 представляет собой блок-схему, иллюстрирующую вариант осуществления этого способа определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока, определяющего многочисленные уровни изображений. Способ начинается с необязательного этапа S20, который содержит вычисление длины числового синтаксического элемента. Этот числовой синтаксический элемент предпочтительно задает число опорных уровней для текущего уровня с индексом i уровня.
В конкретном варианте осуществления длина этого числового синтаксического элемента в пересчете на число битов является переменной и зависит от по меньшей мере одного входного параметра или синтаксического элемента, что дополнительно описано ниже по тексту. В таком случае, длина числового синтаксического элемента может быть вычислена на этапе S20 для определения, сколько битов охватывает числовой синтаксический элемент. Возможно, что числовой синтаксический элемент имеет длину общую для многочисленных уровней, например всех уровней, в многоуровневом видеопотоке. В таком случае, длина числового синтаксического элемента может быть вычислена один раз на этапе S20 для первого уровня. Значение этой вычисленной длины затем может быть сохранено и использовано повторно для других уровней в многоуровневом видеопотоке, тем самым уменьшая необходимость в выполнении этапа S20 для каждого уровня в многоуровневом видеопотоке.
Этап S21 с фиг. 7 содержит извлечение числового синтаксического элемента на основе кодируемого многоуровневого видеопотока. Числовой синтаксический элемент может быть извлечен из набора параметров, расширения набора параметров, любой другой структуры данных, связанной с кодируемым многоуровневым видеопотоком, или принадлежащей ему, или из закодированного представления слайса в кодируемом многоуровневом видеопотоке.
В варианте осуществления этап S21 содержит извлечение числового синтаксического элемента на основе длины числового синтаксического элемента, вычисленной на необязательном этапе S20. Таким образом, информация о длине числового синтаксического элемента используется на этапе S21 для того, чтобы идентифицировать часть, т.е. число битов, в релевантной структуре, которая соответствует числовому синтаксическому элементу.
В альтернативном подходе, извлечение числового синтаксического элемента выполняется на этапе S21 без использования какой-либо вычисленной длины числового синтаксического элемента. Например, числовой синтаксический элемент может быть идентифицирован на основе анализа и декодирования структуры данных, например, начиная с начала структуры данных.
Способ затем переходит к этапу S22, где соответствующий опорный синтаксический элемент извлекается на основе кодируемого многоуровневого видеопотока и для каждого из числа опорных уровней, заданного числовым синтаксическим элементом, извлеченным на этапе S21. Опорный синтаксический элемент(ы), извлекаемый на этапе S22, может быть извлечен из набора параметров, расширения набора параметров, любой другой структуры данных, связанной с кодируемым многоуровневым видеопотоком, или принадлежащей ему, или из закодированного представления слайса в кодируемом многоуровневом видеопотоке. В конкретном варианте осуществления опорный синтаксический элемент(ы) предпочтительно присутствует(ют) в той же структуре данных, что и числовой синтаксический элемент.
Опорный синтаксический элемент задает индекс j уровня для уровня в многоуровневом видеопотоке, от которого непосредственно зависит текущий уровень с индексом i уровня. В дополнение, в предпочтительном варианте осуществления иерархическая взаимосвязь декодирования порождается так, что j<i.
Числовой синтаксический элемент, таким образом, сигнализирует, от скольких опорных уровней непосредственно зависит текущий уровень с индексом i уровня. Следовательно, этот числовой синтаксический элемент используется на этапе S22 для того, чтобы знать, сколько необходимо извлечь опорных синтаксических элементов для уровня с индексом i уровня. Каждый такой опорный синтаксический элемент, извлекаемый на этапе S22, задает соответствующий индекс j уровня для уровня, от которого непосредственно зависит текущий уровень c индексом i уровня.
Затем, способ завершается в варианте осуществления.
В альтернативном варианте осуществления опорные синтаксические элементы, извлекаемые на этапе S22, используются в качестве информации взаимосвязи декодирования в способе декодирования кодируемого многоуровневого видеопотока, описанном со ссылкой на фиг. 5. В таком случае способ переходит с этапа S22 с фиг. 7 на этап S2 с фиг. 5.
В первом конкретном варианте осуществления необязательный этап S20 содержит вычисление длины числового синтаксического элемента на основе индекса i уровня. Таким образом, в этом варианте осуществления длина числового синтаксического элемента вычисляется на основе конкретного значения индекса i уровня.
В первой примерной реализации этап S20 содержит вычисление длины числового синтаксического элемента как ceil(log2(i+1)), при этом i представляет индекс уровня, ceil(x) представляет наименьшее целое число, большее или равное x, а log2(x) представляет логарифм от x по основанию 2.
Следовательно, в этой примерной реализации число битов, используемых для представления числа опорных уровней, т.е. числового синтаксического элемента, представляется посредством u(v) кода с v=ceil(log2(i+1)).
Во втором конкретном варианте осуществления необязательный этап S20 содержит вычисление длины числового синтаксического элемента на основе информации о максимально возможном числе уровней в кодируемом многоуровневом видеопотоке.
Во второй примерной реализации этап S20 содержит вычисление длины числового синтаксического элемента как ceil(log2(vps_max_layers_minus1+1)), при этом vps_max_layers_minus1+1 указывает, как раскрыто выше по тексту данного документа, максимальное число уровней в кодируемом многоуровневом видеопотоке.
Эта вторая примерная реализация является незначительно менее эффективной с точки зрения битов, чем упомянутая первая примерная реализация. Однако преимуществом является то, что длина кода числового синтаксического элемента является независимой от конкретного уровня (индекса уровня), что может привести к менее сложному декодированию синтаксической структуры.
В третьем конкретном варианте осуществления необязательный этап S20 содержит вычисление длины числового синтаксического элемента на основе информации о максимальном значении идентификатора уровня в кодируемом многоуровневом видеопотоке.
В третьей примерной реализации этап S20 содержит вычисление длины числового синтаксического элемента как ceil(log2(vps_max_layer_id-1)), при этом vps_max_layer_id указывает максимально возможное значение для идентификаторов уровня (layer_id) в кодируемом многоуровневом видеопотоке.
В необязательном варианте осуществления способ, показанный на фиг. 7, содержит дополнительный этап S30, см. фиг. 8. В таком случае, способ продолжается с этапа S21 с фиг. 7. Этап S30 содержит вычисление соответствующей длины соответствующих опорных синтаксических элементов, которые должны быть извлечены на этапе S22 с фиг. 7.
В варианте осуществления, этап S30 содержит вычисление соответствующей длины соответствующего опорного синтаксического элемента на основе индекса i уровня, например на основе конкретного значения этого индекса i уровня.
В первом примере реализации число битов, используемых для представления опорного синтаксического элемента(ов) равно ceil(log2( i )).
В таком случае, синтаксические элементы для сигнализации числового синтаксического элемента и опорные синтаксические элементы могут быть заданы указанным ниже по тексту образом.
for(i=1; i≤vps_max_layers_minus1; i++) {
Дескриптор
num_direct_ref_layers[i]
u(v)
for(j=0; j<num_direct_ref_layers[i]; j++)
ref_layer_index[i][j]
u(v)
}
num_direct_ref_layers[i] задает число опорного уровня, от которого непосредственно зависит уровень c индексом i уровня. Число битов используемых для представления num_direct_ref_layers[i] может быть v=ceil(log2(i+1)) или v=ceil(log2(vps_max_layers_minus1+1)) или v=ceil(log2(vps_max_layer_id-1)). ref_layer_index[i][j] идентифицирует индекс уровня j-ого уровня, от которого непосредственно зависит уровень с индексом i уровня. Число битов, используемых для представления ref_layer_index[i][j] предпочтительно равно v=ceil(log2(i)).
Если этот вариант осуществления используется в связи со способом декодирования, показанным на фиг. 5, числовые синтаксические элементы, опорные синтаксические элементы и информация отображения могут сигнализироваться вместе, например, в расширении VPS, как показано ниже по тексту. Этот вариант осуществления затем предпочтительно имеет иерархическую взаимосвязь декодирования, поскольку уровень с индексом i уровня предпочтительно может быть лишь опорным уровнем для уровней с индексом j>i уровня.
vps_extension( ) {
Дескриптор
…
for(i=1; i≤ vps_max_layers_minus1; i++) {
layer_id_in_nuh[i]
u(6)
}
…
for(i=1; i≤vps_max_layers_minus1; i++) {
num_direct_ref_layers[i]
u(v)
for(j=0; j<num_direct_ref_layers[i]; j++)
ref_layer_index[i][j]
u(v)
}
}
Во втором примере реализации делается предположение, что опорные индексы, т.е. опорные синтаксические элементы, указаны в иерархическом порядке индексов уровней для опорных уровней. Например, можно предположить, что ref_layer_index[i][j]>ref_layer_index[i][j-1] для j>0, при этом ref_layer_index[i][j] представляет индекс уровня собственно j-ого уровня, от которого непосредственно зависит уровень с индексом i уровня. Затем индекс j-го опорного уровня для уровня с индексом i уровня может быть представлен как дельта-индекс уровня delta_ref_layer_index[i][j], например ref_layer_index[i][j]=ref_layer_index[i][j-1]+1+ delta_ref_layer_index[i][j]. В таком случае, ref_layer_index[i][-1]=-1 и delta_ref_layer_index[i][j]≥0. С иерархической взаимосвязью уровня ref_layer_index[i][j]<i и, таким образом, 0≤delta_ref_layer_index[i][j]<i-ref_layer_index[i][j-1]-1. Это в свою очередь значит, что delta_ref_layer_index[i][j] может быть представлен u(v) кодом с v=ceil(log2(i-ref_layer_index[i][j-1]-1)).
В таком случае, синтаксические элементы для сигнализации числового синтаксического элемента и опорные синтаксические элементы могут быть заданы указанным ниже по тексту образом.
for(i=1; i≤vps_max_layers_minus1; i++) {
Дескриптор
num_direct_ref_layers[i]
u(v)
for(j=0; j<num_direct_ref_layers[i]; j++)
delta_ref_layer_index[i][j]
u(v)
}
Аспект вариантов осуществления относится к способу определения взаимосвязи кодирования для многоуровневого видеопотока 1, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24. Способ содержит определение какой-либо взаимосвязи кодирования между многочисленными уровнями 10, 12, 14. Способ также содержит определение для уровня 12 с индексом i уровня из многочисленных уровней 10, 12, 14 и на основе взаимосвязи кодирования по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем 12 с индексом i уровня и уровнем 10 с индексом j уровня из многочисленных уровней 10, 12, 14, i≠j. Способ дополнительно содержит ассоциирование упомянутого по меньшей мере одного флага непосредственного декодирования с кодируемым представлением 2 многоуровневого видеопотока 1.
Фиг. 10 представляет собой блок-схему, иллюстрирующую вариант осуществления этого способа определения взаимосвязи кодирования для многоуровневого видеопотока, определяющего многочисленные уровни изображений. Способ обычно начинается на этапе S50, который содержит определение какой-либо взаимосвязи кодирования между многочисленными уровнями в многоуровневом видеопотоке. Взаимосвязь кодирования предпочтительно определяется на основе информации о том, каким уровням принадлежат опорные изображения, используемые для кодирования изображений в текущем уровне. Таким образом, посредством определения, в каком уровне или уровнях находятся опорные изображения, используемые в качестве основы кодирования для изображений в текущем уровне, какая-либо взаимосвязь кодирования между различными уровнями в многоуровневом видеопотоке может быть определена на этапе S50.
Взаимосвязь кодирования, определенная для многоуровневого видеопотока на этапе S50 затем используется на этапе S51 для определения, для уровня с индексом i уровня, по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем с индексом i уровня и уровнем c индексом j уровня, при этом i отличается от j. Это означает, что взаимосвязь кодирования используется для идентификации какой-либо непосредственной взаимосвязи кодирования, т.е. непосредственной зависимости, между текущим уровнем с индексом i уровня и какими-либо другими уровнями в многоуровневом видеопотоке. Такая непосредственная зависимость между уровнями затем указывается флагом(ами) непосредственного декодирования, определенным на этапе S51.
Способ также содержит ассоциирование, на этапе S52, по меньшей мере одного флага непосредственного декодирования с кодируемым представлением многоуровневого видеопотока. Это ассоциирование на этапе S52 предпочтительно, как раскрыто выше по тексту данного документа, влечет за собой включение флага(ов) непосредственного декодирования в набор параметров, расширение набора параметров, другую структуру данных, связанную с кодируемым многоуровневым видеопотоком, или принадлежащую ему, или в по меньшей мере одно закодированное представление слайса в кодируемом многоуровневом видеопотоке.
Затем способ завершается.
Способ, раскрытый на фиг. 10, может быть реализован как независимый способ определения взаимосвязи кодирования для многоуровневого видеопотока. В альтернативном подходе, способ с фиг. 10 используется вместе со способом кодирования многоуровневого видеопотока, показанным на фиг. 9. В таком случае, этапы S50 и S51 с фиг. 10 выполняются как конкретный вариант осуществления определения информации взаимосвязи кодирования на фиг. 9. В таком случае, способ предпочтительно начинается на этапе S40 с фиг. 9 и переходит к этапам S50 и S51 с фиг. 10, а затем возвращается к этапу S42 с фиг. 9. Затем, этап S43 с фиг. 9 предпочтительно выполняется, как показано на этапе S52 с фиг. 10.
Аспект вариантов осуществления относится к способу определения взаимосвязи кодирования для многоуровневого видеопотока 1, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24. Способ содержит определение числового синтаксического элемента, определяющего число опорных уровней многочисленных уровней 10, 12, 14 для уровня 12 с индексом i уровня из многочисленных уровней 10, 12, 14. Способ также содержит определение для каждого из числа опорных уровней соответствующего опорного синтаксического элемента, определяющего индекс j уровня для уровня 10 из многочисленных уровней 10, 12, 14, от которого непосредственно зависит уровень 12 с индексом i уровня, j<i. Способ дополнительно содержит ассоциирование числового синтаксического элемента и соответствующих опорных синтаксических элементов с кодируемым представлением 2 многоуровневого видеопотока 1.
Фиг. 11 представляет собой блок-схему, иллюстрирующую вариант осуществления этого способа определения взаимосвязи кодирования для многоуровневого видеопотока. Способ начинается на этапе S60, где числовой синтаксический элемент определяется для уровня с индексом i уровня в многоуровневом видеопотоке. Этот числовой синтаксический элемент представляет число опорных уровней для уровня с индексом i уровня.
Числовой синтаксический элемент предпочтительно определяется на основе информации о том, каким уровням принадлежат опорные изображения, используемые для кодирования изображений в текущем уровне с индексом i уровня. Таким образом, посредством определения, в каком уровне или уровнях находятся опорные изображения, используемые в качестве основы кодирования для изображений в текущем уровне, число таких опорных уровней может быть задано и использовано для определения числового синтаксического элемента на этапе S60.
Способ с фиг. 11 также содержит определение на этапе S61 соответствующего опорного синтаксического элемента для каждого из числа опорных уровней. Таким образом, если числовой синтаксический элемент задает X опорных уровней, то X соответствующих опорных синтаксических элементов предпочтительно определяются на этапе S61. Опорный синтаксический элемент, определенный на этапе S61, задает индекс j уровня для уровня в многоуровневом видеопотоке, от которого непосредственно зависит уровень с индексом i уровня. В конкретном варианте осуществления, используется иерархическая зависимость уровня так, что j<i.
Числовой синтаксический элемент, определенный на этапе S60, и опорные синтаксические элементы, определенные на этапе S61 затем ассоциируются с кодируемым представлением многоуровневого видеопотока на этапе S62. Это ассоциирование на этапе S62 предпочтительно, как раскрыто выше по тексту данного документа, влечет за собой включение числа и опорных синтаксических элементов в набор параметров, расширение набора параметров, другую структуру данных, связанную с кодируемым многоуровневым видеопотоком, или принадлежащую ему, или в по меньшей мере одно закодированное представление слайса в кодируемом многоуровневом видеопотоке.
Затем способ завершается.
Способ, раскрытый на фиг. 11, может быть реализован как независимый способ определения взаимосвязи кодирования для многоуровневого видеопотока. В альтернативном подходе, способ с фиг. 11 используется вместе со способом кодирования многоуровневого видеопотока, показанным на фиг. 9. В таком случае, этапы S60 и S61 с фиг. 11 выполняются как конкретный вариант осуществления определения информации взаимосвязи кодирования на фиг. 9. В таком случае, способ предпочтительно начинается на этапе S40 с фиг. 9 и переходит к этапам S60 и 651 с фиг. 11, а затем возвращается к этапу S42 с фиг. 9. Затем, этап S43 с фиг. 9 предпочтительно выполняется, как показано на этапе S62 с фиг. 11.
Были проведены моделирующие эксперименты для того, чтобы определить число битов, требуемых для сигнализации зависимостей уровня. Сравнивались три разных способа сигнализации таких зависимостей уровня: сигнализация зависимостей уровня предшествующего уровня техники, раскрытая в ранее упомянутом документе JCTVC-K1007 (именуемая K1007 на фиг. 20-22), сигнализация зависимостей уровня, раскрытая в данном документе, в которой num_direct_ref_layers[i] и ref_layer_id[i][j] находятся в u(v) коде вместо u(6) кода (именуемая u(v) на фиг. 20-22), а также сигнализация зависимостей уровня, использующая direct_reference_flag[i][j], раскрытая в данном документе (именуемая dependency_flag на фиг. 20-22).
Фиг. 20 иллюстрирует результаты моделирования, когда каждый уровень с индексом i≥1 уровня имеет один опорный уровень. Фиг. 21 иллюстрирует результаты моделирования, когда каждый уровень с индексом i≥2 уровня имеет два опорных уровня, а уровень с индексом i=1 уровня имеет один опорный уровень, т.е. максимальное число опорных уровней, которые возможны для этого уровня с индексом i=1 уровня. Фиг. 22 иллюстрирует результаты моделирования, когда каждый уровень с индексом i≥1 имеет максимальное число опорных уровней, которые возможны, т.е. уровень с индексом i=N уровня имеет N опорных уровней. Результаты на фиг. 20-22 представлены для 1…64 уровней, причем 64 соответствует максимально допустимому числу уровней.
Результаты на фиг. 20-22 показывают, что u(v) способ всегда ниже способа K1007. Вплоть до некоторого порога для числа уровней (8 на фиг. 20, 21 на фиг. 21 и 64 на фиг. 22) способ dependency_flag имеет наименьшее число битов. Число битов для способа dependency_flag является независимым от конфигурации зависимости уровня.
Аспект вариантов осуществления определяет декодер, сконфигурированный с возможностью декодирования кодируемого многоуровневого видеопотока 2, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24, каждый уровень 10, 12, 14 из упомянутых многочисленных уровней 10, 12, 14 имеет соответствующий идентификатор уровня. Декодер содержит средство извлечения информации взаимосвязи декодирования, сконфигурированное с возможностью извлечения для уровня 12 с индексом уровня из многочисленных уровней 10, 12, 14 информации взаимосвязи декодирования на основе кодируемого многоуровневого видеопотока 2. Информация взаимосвязи декодирования определяет соответствующий индекс уровня какого-либо опорного уровня 10 из упомянутых многочисленных уровней 10, 12, 14, от которого непосредственно зависит упомянутый уровень 12. Декодер также содержит блок отображения индекса на идентификатор, сконфигурированный с возможностью отображения для каждого опорного уровня 10 и для упомянутого уровня 12 его индекса уровня на идентификатор уровня на основе информации отображения иерархической взаимосвязи отображения между идентификаторами уровня и индексами уровня. Информация отображения извлекается на основе кодируемого многоуровневого видеопотока 2. Декодер дополнительно содержит блок декодирования, сконфигурированный с возможностью декодирования изображения 22 упомянутого уровня 12 на основе по меньшей мере одного ранее декодированного изображения 20 в уровне 10 из многочисленных уровней 10, 12, 14, идентифицированных на основе идентификаторов уровня, отображенных от индексов уровня.
Фиг. 12 представляет собой структурную схему, иллюстрирующую вариант реализации декодера 100, сконфигурированного с возможностью декодирования многоуровневого видеопотока, в котором каждый уровень имеет соответствующий идентификатор уровня. Декодер 100 содержит средство 110 извлечения информации взаимосвязи декодирования, также именуемое блоком или модулем извлечения информации взаимосвязи декодирования. Средство 110 извлечения информации взаимосвязи декодирования сконфигурировано с возможностью извлечения информации взаимосвязи декодирования на основе кодируемого многоуровневого видеопотока для текущего уровня, имеющего индекс уровня. Средство 110 извлечения информации взаимосвязи декодирования предпочтительно сконфигурировано с возможностью извлечения информации, как раскрыто выше по тексту данного документа, из структуры данных, связанной с кодируемым многоуровневым видеопотоком или принадлежащей ему, например, из набора параметров, расширения набора параметров, другой структуры данных или закодированного представления слайса.
Информация взаимосвязи декодирования, извлекаемая средством 110 извлечения информации взаимосвязи декодирования, задает соответствующий индекс уровня какого-либо опорного уровня в многоуровневом видеопотоке, от которого непосредственно зависит текущий уровень.
Блок 120 отображения индекса на идентификатор, также именуемый средством или модулем отображения индекса на идентификатор, сконфигурирован с возможностью отображения индекса уровня на идентификатор уровня для каждого опорного уровня и для текущего уровня на основе информации отображения об иерархической взаимосвязи отображения между индексами и идентификаторами уровня. Блок 120 отображения индекса на идентификатор сконфигурирован с возможностью извлечения информации отображения на основе кодируемого многоуровневого видеопотока предпочтительно из той же структуры данных, из которой средство 110 извлечения информации взаимосвязи декодирования извлекает информацию взаимосвязи декодирования.
Идентификаторы уровня, получаемые от блока 120 отображения индекса на идентификатор, используются блоком 130 декодирования, также именуемым средством декодирования или декодером изображений, при декодировании изображения текущего уровня на основе по меньшей мере одного ранее декодированного изображения в уровне, идентифицированном на основе идентификаторов уровня.
В варианте осуществления, информация взаимосвязи декодирования вводится в блок 120 отображения индекса на идентификатор, который затем отображает индекс/индексы уровня собственно уровня/уровней, от которого(ых) непосредственно зависит текущий уровень. Таким образом, в этом варианте осуществления только такой(ие) индекс/индексы уровня отображаются вместе с индексом уровня собственно текущего уровня на соответствующие идентификаторы уровня.
В альтернативном варианте осуществления, блок 120 отображения индекса на идентификатор сконфигурирован с возможностью отображения всех индексов уровня, которые сигнализируются в кодируемом многоуровневом видеопотоке, или связаны с ним, на соответствующие идентификаторы уровня. В таком случае, блок 130 декодирования предпочтительно идентифицирует те идентификаторы уровня из числа отображенных идентификаторов уровня, которые имеют отношение к декодированию изображений в текущем уровне на основе информации взаимосвязи декодирования из средства 110 извлечения информации взаимосвязи декодирования.
Таким образом, информация взаимосвязи декодирования и информация отображения посредством упомянутого вместе обеспечивают возможность идентификации и определения идентификаторов уровня каких-либо опорных уровней, содержащих изображения, на основе которых должны быть декодированы изображения в текущем уровне.
В варианте осуществления блок 120 отображения индекса на идентификатор сконфигурирован с возможностью извлечения флага vps_nuh_layer_id_present_flag на основе кодируемого многоуровневого видеопотока. Блок 120 отображения индекса на идентификатор также сконфигурирован с возможностью установки для каждого опорного уровня и для упомянутого уровня, и если vps_nuh_layer_id_present_flag=0, его идентификатора уровня равным его индексу уровня. Блок 120 отображения индекса на идентификатор дополнительно сконфигурирован с возможностью извлечения для каждого опорного уровня и для упомянутого уровня, и если vps_nuh_layer_id_present_flag=1, его идентификатора уровня из вектора layer_id_in_nuh[i], i∈[1, vps_max_layers_minus1], при этом vps_max_layers_minus1+1 указывает максимальное число уровней и layer_id_in_nuh[i] указывает идентификатор уровня для уровня с индексом i уровня.
Аспект вариантов осуществления определяет кодер, сконфигурированный с возможностью кодирования многоуровневого видеопотока 1, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24, каждый уровень 10, 12, 14 из упомянутых многочисленных уровней 10, 12, 14 имеет соответствующий идентификатор уровня. Кодер содержит блок отображения, сконфигурированный с возможностью иерархического отображения для каждого уровня 10, 12, 14 из упомянутых многочисленных уровней 10, 12, 14 идентификатора уровня упомянутого уровня 10, 12, 14 на индекс уровня на основе зависимостей кодирования между упомянутыми многочисленными уровнями 10, 12, 14. Кодер также содержит определитель информации, сконфигурированный с возможностью определения информации взаимосвязи кодирования, определяющей соответствующий индекс уровня какого-либо опорного уровня 10 из упомянутых многочисленных уровней 10, 12, 14, от которого непосредственно зависит уровень 12 из упомянутых многочисленных уровней 10, 12, 14. Кодер дополнительно содержит блок кодирования, сконфигурированный с возможностью генерирования кодированного многоуровневого видеопотока 2 посредством кодирования изображений 20, 22, 24 из многочисленных уровней 10, 12, 14 на основе зависимостей кодирования и блок ассоциирования, сконфигурированный с возможностью ассоциирования информации взаимосвязи кодирования с кодированным многоуровневым видеопотоком 2.
Фиг. 15 представляет собой структурную схему варианта осуществления кодера 400, сконфигурированного с возможностью кодирования многоуровневого видеопотока, в котором каждый уровень имеет соответствующий идентификатор уровня. Кодер 400 содержит блок 410 отображения, также именуемый средством или модулем отображения. Блок 410 отображения сконфигурирован с возможностью иерархического отображения идентификатора уровня для каждого уровня многоуровневого видеопотока на индекс уровня на основе зависимостей кодирования между многочисленными уровнями в многоуровневом видеопотоке. Это означает, что информация о том, какой уровень(уровни) является(являются) опорным уровнем(уровнями) для другого(других) уровня(уровней), используется блоком 410 отображения для назначения индексов уровня уровням.
Кодер 400 также содержит определитель 420 информации, также именуемый средством или модулем определения информации. Определитель 420 информации сконфигурирован с возможностью определения информации взаимосвязи кодирования, задающей соответствующий индекс уровня какого-либо опорного уровня, от которого непосредственно зависит текущий уровень.
Блок 430 кодирования, также именуемый средством кодирования или кодером изображений, сконфигурирован с возможностью генерирования кодируемого многоуровневого видеопотока посредством кодирования изображений в многочисленных уровнях на основе зависимостей кодирования. Блок 440 ассоциирования, также именуемый средством ассоциирования или модулем ассоциирования, сконфигурирован с возможностью ассоциирования информации взаимосвязи кодирования с кодируемым многоуровневым видеопотоком, как раскрыто выше по тексту данного документа, например в наборе параметров, расширении набора параметров, другой структуре данных или закодированном представлении слайса.
Блок 440 ассоциирования предпочтительно также сконфигурирован с возможностью ассоциирования информации отображения, определяющей иерархическую взаимосвязь отображения между идентификаторами уровня и индексами уровня кодируемым многоуровневым видеопотоком.
Другие аспекты вариантов осуществления относятся к устройствам для определения взаимосвязи кодирования или декодирования для (кодируемого) многоуровневого видеопотока. Такие устройства могут быть обеспечены как отдельные объекты или могут быть реализованы как часть декодера 100 с фиг. 12 или кодера 400 с фиг. 15.
Аспект вариантов осуществления определяет устройство для определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока 2, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24. Устройство содержит средство извлечения флага, сконфигурированное с возможностью извлечения на основе кодируемого многоуровневого видеопотока 2 по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем 12 с индексом i уровня из упомянутых многочисленных уровней 10, 12, 14 и уровнем 10 с индексом j уровня из многочисленных уровней 10, 12, 14, i≠j. Устройство также содержит определитель информации, сконфигурированный с возможностью определения информации, задающей какую-либо взаимосвязь декодирования между многочисленными уровнями 10, 12, 14 на основе упомянутого по меньшей мере одного флага непосредственного декодирования.
Фиг. 13 представляет собой иллюстрацию варианта осуществления такого устройства 200 для определения взаимосвязи декодирования. Устройство 200 содержит средство 210 извлечения флага, также именуемое блоком или модулем извлечения флага. Средство 210 извлечения флага сконфигурировано с возможностью извлечения по меньшей мере одного флага непосредственного декодирования на основе кодируемого многоуровневого видеопотока, например из набора параметров, расширения набора параметров, другой структуры данных закодированного представления слайса в кодируемом многоуровневом видеопотоке. Извлеченный по меньшей мере один флаг непосредственного декодирования указывает непосредственную взаимосвязь кодирования между текущим уровнем с индексом i уровня и уровнем с индексом j уровня из многоуровневого видеопотока, где индекс i отличается от индекса j.
Устройство 200 также содержит определитель 220 информации, также именуемый средством или модулем определения информации. Определитель 220 информации сконфигурирован с возможностью определения какой-либо взаимосвязи декодирования между многочисленными уровнями в многоуровневом видеопотоке на основе по меньшей мере одного флага непосредственного декодирования, извлеченного средством 210 извлечения флага.
В варианте осуществления средство 210 извлечения флага сконфигурировано с возможностью извлечения для уровня с индексом i уровня соответствующего флага непосредственной зависимости для каждого индекса j уровня на основе упомянутого кодируемого многоуровневого видеопотока. В этом варианте осуществления, j<i и флаг непосредственной зависимости указывает, является ли уровень с индексом j уровня непосредственным опорным уровнем для уровня с индексом i уровня. Определитель 220 информации предпочтительно сконфигурирован с возможностью определения информации, задающей какой-либо уровень с индексом j<i уровня, от которого зависит уровень с индексом i уровня, на основе упомянутых флагов непосредственной зависимости.
j=0…i-1
В примере реализации средство 210 извлечения флага сконфигурировано с возможностью извлечения для уровня с индексом i уровня соответствующего флага непосредственной зависимости direct_dependency_flag [i][j] для каждого индекса j уровня на основе упомянутого кодируемого многоуровневого видеопотока. Определитель 220 информации предпочтительно сконфигурирован с возможностью определения набора флагов зависимости dependency_flag [i] как dependency_flag [i]=direct_dependency_flag[i]+sum(direct_dependency_flag [i][j]×dependency_flag[j]). Набор флагов зависимости или флаги зависимости dependency_flag [i][j] затем образует(образуют) в этом примере реализации информацию, определяющую какую-либо взаимосвязь декодирования между многочисленными уровнями.
В другом варианте осуществления средство 210 извлечения флага сконфигурировано с возможностью извлечения для уровня с индексом i уровня соответствующего непосредственного опорного флага для каждого индекса j уровня на основе упомянутого кодируемого многоуровневого видеопотока. В этом варианте осуществления, j>i и непосредственный опорный флаг указывает, является ли уровень с индексом i уровня непосредственным опорным уровнем для уровня с индексом j уровня. Определитель 220 информации предпочтительно в этом варианте осуществления сконфигурирован с возможностью определения информации, задающей какой-либо уровень с индексом j>i уровня, для которого уровень с индексом i уровня является опорным уровнем, на основе непосредственных опорных флагов.
j=i+1…imax
В другом примере реализации средство 210 извлечения флага сконфигурировано с возможностью извлечения, для уровня с индексом i уровня, соответствующего непосредственного опорного флага direct_reference_flag[i][j] для каждого индекса j уровня на основе упомянутого кодируемого многоуровневого видеопотока. Определитель 220 информации в этом примере предпочтительно сконфигурирован с возможностью определения набора опорных флагов reference_flag[i] как reference_flag[i]=direct_reference_flag [i]+sum(direct_reference_flag[i][j]×reference_flag[j]). Набор опорных флагов или опорные флаги reference_flag[i][j] затем образует(образуют) в этом примере реализации информацию, определяющую какую-либо взаимосвязь декодирования между многочисленными уровнями.
Устройство 200 для определения взаимосвязи декодирования на фиг. 13 является в одном варианте осуществления некоторым конкретным примером реализации средства 110 извлечения информации взаимосвязи декодирования с фиг. 12.
Другой аспект вариантов осуществления определяет устройство для определения взаимосвязи декодирования для кодируемого многоуровневого видеопотока 2, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24. Устройство необязательно содержит вычислитель длины, сконфигурированный с возможностью вычисления длины числового синтаксического элемента. Устройство содержит средство извлечения элемента, сконфигурированное с возможностью извлечения, на основе кодируемого многоуровневого видеопотока 2, числового синтаксического элемента, задающего число опорных уровней 10 из многочисленных уровней 10, 12, 14 для уровня 12 с индексом i уровня из многочисленных уровней 10, 12, 14 необязательно на основе длины числового синтаксического элемента. Средство извлечения элемента дополнительно сконфигурировано с возможностью извлечения на основе кодируемого многоуровневого видеопотока 2 и для каждого из числа опорных уровней соответствующего опорного синтаксического элемента, определяющего индекс j уровня для уровня 10 из многочисленных уровней 10, 12, 14, от которого непосредственно зависит уровень 12 с индексом i уровня, j<i.
Фиг. 14 представляет собой структурную схему такого устройства 300 для определения взаимосвязи декодирования. Устройство 300 необязательно содержит вычислитель 310 длины, также именуемый средством или блоком вычисления длины. Вычислитель 310 длины предпочтительно сконфигурирован для вычисления длины числового синтаксического элемента, определяющего число опорных уровней в многоуровневом видеопотоке для текущего уровня с индексом i уровня. Средство 320 извлечения элемента, также именуемое блоком или модулем извлечения элемента, устройства 300 сконфигурировано с возможностью извлечения числового синтаксического элемента на основе кодируемого многоуровневого видеопотока, например, из набора параметров, расширения набора параметров, другой структуры данных или закодированного представления слайса. В конкретном варианте осуществления средство 320 извлечения элемента использует информацию о длине числового синтаксического элемента, предпочтительно определенной вычислителем 310 длины, для того, чтобы идентифицировать часть структуры данных, переносящей релевантный числовой синтаксический элемент, которая соответствует числовому синтаксическому элементу.
Значение извлекаемого числового синтаксического элемента также используется средством 320 извлечения элемента для определения того, сколько опорных синтаксических элементов следует извлечь для текущего уровня с индексом i уровня. Таким образом, средство 320 извлечения элемента извлекает соответствующий опорный синтаксический элемент для каждого из числа опорных уровней, определенного числовым синтаксическим элементом. Средство 320 извлечения элемента предпочтительно извлекает опорный синтаксический элемент из набора параметров, расширения набора параметров, другой структуры данных или закодированного представления слайса. В конкретном варианте осуществления, средство 320 извлечения элемента сконфигурировано с возможностью извлечения опорного синтаксического элемента из аналогичной структуры данных, которая также содержит числовой синтаксический элемент.
Каждый опорный синтаксический элемент, извлекаемый средством 320 извлечения элемента задает индекс j уровня для опорного уровня, от которого непосредственно зависит текущий уровень c индексом i уровня. В конкретном варианте осуществления, используется иерархическая зависимость уровня так, что j < i.
В варианте осуществления вычислитель 310 длины сконфигурирован с возможностью вычисления длины числового синтаксического элемента на основе индекса i уровня, т.е. на основе значения индекса i уровня.
В конкретном варианте осуществления вычислитель 310 длины сконфигурирован с возможностью вычисления длины числового синтаксического элемента как ceil(log2(i+1)).
В другом варианте осуществления вычислитель 310 длины сконфигурирован с возможностью вычисления длины числового синтаксического элемента на основе информации о максимально возможном числе уровней в кодируемом многоуровневом видеопотоке.
В другом конкретном варианте осуществления вычислитель 310 длины сконфигурирован с возможностью вычисления длины числового синтаксического элемента как ceil(log2(vps_max_layers_minus1+1)).
В дополнительном варианте осуществления вычислитель 310 длины сконфигурирован с возможностью вычисления длины числового синтаксического элемента на основе информации о максимальном значении для идентификатора уровня в кодируемом многоуровневом видеопотоке.
В дополнительно конкретном варианте осуществления вычислитель 310 длины сконфигурирован с возможностью вычисления длины числового синтаксического элемента как ceil(log2(vps_max_layer_id-1)).
В варианте осуществления необязательный вычислитель 310 длины сконфигурирован с возможностью вычисления соответствующей длины соответствующего опорного синтаксического элемента.
В конкретном варианте осуществления вычислитель 310 длины сконфигурирован с возможностью вычисления соответствующей длины соответствующего опорного синтаксического элемента на основе индекса i уровня.
В другом конкретном варианте осуществления вычислитель 310 длины сконфигурирован с возможностью вычисления соответствующей длины опорного синтаксического элемента как ceil(log2(i-ref_layer_index [i][j-1]-1)). В таком случае, средство 320 извлечения длины предпочтительно сконфигурировано с возможностью извлечения на основе кодируемого многоуровневого видеопотока и для каждого уровня j из числа опорных уровней, соответствующего опорного дельта - синтаксического элемента delta_ref_layer_index [i][j], j<i. Устройство 300 предпочтительно содержит необязательный определитель 330 индекса, сконфигурированный с возможностью определения, для каждого уровня j из числа опорных уровней, индекса уровня для j-ого уровня, от которого непосредственно зависит уровень с индексом i уровня, как ref_layer_index [i][j]=[i][j-1]+1+delta_ref_layer_index [i][j] с ref_layer_index [i][-1]=-1, 0<j<i.
Устройство 300 для определения взаимосвязи декодирования на фиг. 14 является в одном варианте осуществления некоторым конкретным примером реализации средства 110 извлечения информации взаимосвязи декодирования с фиг. 12.
Аспект вариантов осуществления определяет устройство для определения взаимосвязи кодирования для многоуровневого видеопотока 1, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24. Устройство содержит определитель взаимосвязи, сконфигурированный с возможностью определения какой-либо взаимосвязи кодирования между упомянутыми многочисленными уровнями 10, 12, 14. Устройство также содержит определитель флага, сконфигурированный с возможностью определения для уровня 12 с индексом i уровня из многочисленных уровней 10, 12, 14 и на основе взаимосвязи кодирования по меньшей мере одного флага непосредственного декодирования, указывающего непосредственную взаимосвязь кодирования между уровнем 12 с индексом i уровня и уровнем 10 с индексом j уровня из многочисленных уровней 10, 12, 14, i≠j. Блок ассоциирования сконфигурирован с возможностью ассоциирования упомянутого по меньшей мере одного флага непосредственного декодирования с кодируемым представлением 2 упомянутого многоуровневого видеопотока 1.
Фиг. 16 представляет собой структурную схему варианта осуществления этого устройства 500 для определения взаимосвязи кодирования для многоуровневого видеопотока. Устройство 500 содержит определитель 510 взаимосвязи, также именуемый средством или модулем определения взаимосвязи. Определитель 510 взаимосвязи сконфигурирован с возможностью определения какой-либо взаимосвязи кодирования между многочисленными уровнями в многоуровневом видеопотоке. Определитель 510 взаимосвязи предпочтительно выполняет это определение, как раскрыто выше по тексту данного документа, на основе информации о том какие уровни используются в качестве опорных уровней для других уровней в многоуровневом видеопотоке. Устройство 500 также содержит определитель 520 флага, также именуемый средством или блоком определения флага. Определитель 520 флага сконфигурирован с возможностью определения по меньшей мере одного флага непосредственного декодирования для текущего уровня с индексом i уровня и на основе взаимосвязи кодирования, определенной определителем 510 взаимосвязи. Флаг непосредственного декодирования указывает взаимосвязь непосредственного кодирования между текущим уровнем с индексом i уровня и уровнем с индексом j≠i уровня.
Устройство 500 дополнительно содержит блок 530 ассоциирования, также именуемый средством или модулем ассоциирования, сконфигурированный с возможностью ассоциирования упомянутого по меньшей мере одного флага декодирования с кодируемым представлением многоуровневого видеопотока, например вставкой упомянутого по меньшей мере одного флага декодирования в набор параметров, расширение набора параметров, другую структуру данных или закодированное представление слайса.
Устройство 500 для определения взаимосвязи кодирования на фиг. 16 является в одном варианте осуществления некоторым конкретным примером реализации определителя 420 информации с фиг. 15.
Аспект вариантов осуществления определяет устройство для определения взаимосвязи кодирования для многоуровневого видеопотока 1, определяющего многочисленные уровни 10, 12, 14 изображений 20, 22, 24. Устройство содержит определитель числового синтаксического элемента, сконфигурированный с возможностью определения числового синтаксического элемента, определяющего число опорных уровней 10 многочисленных уровней 10, 12, 14 для уровня 12 с индексом i уровня из многочисленных уровней 10, 12, 14. Устройство также содержит определитель опорных синтаксических элементов, сконфигурированный с возможностью определения, для каждого из числа опорных уровней 10, соответствующего опорного синтаксического элемента, определяющего индекс j уровня для уровня 10 из многочисленных уровней 10, 12, 14, от которого непосредственно зависит уровень 12 с индексом i уровня, j<i. Устройство дополнительно содержит блок ассоциирования, сконфигурированный с возможностью ассоциирования числового синтаксического элемента и соответствующих опорных синтаксических элементов с кодируемым представлением 2 многоуровневого видеопотока 1.
Фиг. 17 представляет собой структурную схему варианта осуществления этого устройства 600 для определения взаимосвязи кодирования для многоуровневого видеопотока. Устройство 600 содержит определитель 610 числового синтаксического элемента, также именуемый средством или блоком определения числового синтаксического элемента. Определитель 610 числового синтаксического элемента сконфигурирован с возможностью определения числового синтаксического элемента, определяющего число опорного уровня для уровня с индексом i уровня. Определитель 610 числового синтаксического элемента предпочтительно определяет числовой синтаксический элемент на основе информации о том, каким опорным уровням, если имеются, принадлежат опорные изображения, на основе каких изображений в текущем уровне с индексом i уровня.
Устройство 600 также содержит определитель 620 опорного синтаксического элемента, иногда именуемый средством или блоком определения опорного синтаксического элемента. Определитель 620 опорного синтаксического элемента сконфигурирован с возможностью определения соответствующего опорного синтаксического элемента для каждого из числа опорных уровней, определенного числовым синтаксическим элементом. Опорный синтаксический элемент, определенный определителем 620 опорного синтаксического элемента, задает индекс j уровня для опорного уровня многоуровневого видеопотока, от которого непосредственно зависит текущий уровень с индексом i уровня. В конкретном варианте осуществления, используется иерархическая зависимость уровня так, что j<i.
Блок 630 ассоциирования, также именуемый средством или модулем ассоциирования, устройства 600 сконфигурирован с возможностью ассоциирования числового синтаксического элемента и соответствующих опорных синтаксических элементов с кодируемым представлением многоуровневого видеопотока. Числовой и опорный синтаксические элементы могут быть вставлены в один или разные наборы параметров, расширения набора параметров, другие структуры данных или закодированные представления слайсов.
Устройство 600 для определения взаимосвязи кодирования на фиг. 17 является в одном варианте осуществления некоторым конкретным примером реализации определителя 420 информации с фиг. 15.
Декодер 100 на фиг. 12, устройства 200, 300 для определения взаимосвязи декодирования на фиг. 13 и 14, кодер 400 с фиг. 15 и устройства 500, 600 для определения взаимосвязи кодирования на фиг. 16 и 17, могут быть реализованы в аппаратном обеспечении. Существуют многочисленные варианты элементов схем, которые могут быть использованы и объединены для достижения функций блоков декодера, кодера или устройств на фиг. 12-17. Такие варианты охватываются вариантами осуществления. Конкретные примеры аппаратной реализации включают в себя реализацию в процессоре цифровых сигналов (DSP), технологии аппаратных и интегральных схем, в том числе как электронные схемы общего назначения, так и специализированные схемы.
В качестве альтернативы, декодер 100 на фиг. 12, устройства 200, 300 для определения взаимосвязи декодирования на фиг. 13 и 14, кодер 400 с фиг. 15 и устройства 500, 600 для определения взаимосвязи кодирования на фиг. 16 и 17, могут быть реализованы, по меньшей мере, частично в программном обеспечении. Такая реализация показана на фиг. 18. Декодер, кодер или устройство 700 с фиг. 12-17, также содержит процессор 710, сконфигурированный с возможностью обработки средства 740 кода компьютерной программы 730, хранимой на считываемом компьютером носителе, представляемом памятью 720 на фиг. 18. Средство 740 кода побуждает, при выполнении процессором 710, упомянутый процессор 710 выполнять функции блоков декодера, кодера или устройств с фиг. 12-17.
Процессор 710 может быть процессором или микропроцессором общего назначения или специализированным компьютерным процессором, например центральным процессором (CPU). Программное обеспечение включает в себя элементы кода компьютерной программы или части программного кода, выполняющие операцию по меньшей мере средства 110 извлечения информации взаимосвязи декодирования, блока 120 отображения индекса на идентификатор и блока 130 декодирования с фиг. 12 и/или средства 210 извлечения флага и определителя 220 информации с фиг. 13 и/или необязательного вычислителя 310 длины, средства 320 извлечения элемента и необязательного определителя 330 индекса с фиг. 14 и/или блока 410 отображения, определителя 420 информации, блока 430 кодирования и блока 440 ассоциирования с фиг. 15 и/или определителя 510 взаимосвязи, определителя 520 флага и блока 530 ассоциирования с фиг. 16, и/или определителя 610 числового синтаксического элемента, определителя 620 опорного синтаксического элемента и блока 630 ассоциирования с фиг. 17.
Компьютерная программа 730 может быть сохранена полностью или частично на или в одном или более подходящих энергозависимых считываемых компьютером носителях или средствах 720 хранения данных, например RAM, или одном или более энергонезависимых считываемых компьютером носителях или средствах хранения данных, таких как магнитные диски, CD-ROM, DVD диски, жесткие диски, ROM или флэш-памяти. Средство 720 хранения данных может быть локальным средством хранения данных или обеспеченным удаленно, например, на сервере данных. Таким образом, программное обеспечение может быть загружено в операционную память компьютера или эквивалентной системы обработки для исполнения процессором. Необязательно, чтобы компьютер/процессор был выделенным для исключительного исполнения вышеописанных функций, но также может исполнять другие программные задачи. Неограничивающий пример программного кода, используемого для определения сетевого узла, включает в себя код с одиночным потоком инструкций, множественным потоком данных (SIMD).
Таким образом, позиционное обозначение 700 на фиг. 18 указывает декодер, кодер или устройство с фиг. 12-17, реализованных по меньшей мере частично в программном обеспечении.
Декодер 100 с фиг. 12, устройство 200 для определения взаимосвязи декодирования на фиг. 13 и/или устройство 300 для определения взаимосвязи декодирования на фиг. 14 могут преимущественно компоноваться в пользовательском устройстве или терминале 53, как показано на фиг. 19. Кроме того, это пользовательское устройство 53 может представлять собой телевизионную приставку, компьютер, мобильное устройство, например мобильный телефон, лэптоп или планшетный компьютер и т.д. Устройство 200 с фиг. 13 или устройство 300 с фиг. 14 преимущественно реализовано в декодере 100 с фиг. 12.
Пользовательское устройство 53 может в дополнение к декодеру 54, например декодеру 100, показанному на фиг. 12, или другому декодеру, содержащему устройство 200 с фиг. 13 или устройство 300 с фиг. 14, содержать буфер 55 декодированных изображений (DPB), в котором пользовательское устройство 53 сохраняет декодированные изображения, генерируемые декодером 54. Эти декодированные изображения временно сохраняются в DPB 55 i) для использования в качестве опорных изображений при декодировании последующих, согласно порядку декодирования, изображений многоуровневого видеопотока и/или ii) до тех пор, пока они не будут выведены, например, выведены для отображения на устройстве 56 отображения или экране пользовательского устройства 53, или соединенном с ним.
Декодер 100 с фиг. 12, устройство 200 для определения взаимосвязи декодирования на фиг. 13 и/или устройство 300 для определения взаимосвязи декодирования на фиг. 14, могут также или в качестве альтернативы быть реализованы в сетевом узле 52 или сетевом элементе. В таком случае, сетевой узел 52 или сетевой элемент могут выполнять, например, избирательную пересылку уровней кодируемого многоуровневого видеопотока на основе и учитывая посредством упомянутого зависимости уровня.
Кодер 400 с фиг. 15, устройство 500 для определения взаимосвязи кодирования на фиг. 16 и/или устройство 600 для определения взаимосвязи декодирования на фиг. 17 могут преимущественно компоноваться в пользовательском устройстве или терминале 50, как показано на фиг. 19. Кроме того, это пользовательское устройство 50 может представлять собой видеокамеру, компьютер, мобильное устройство, например мобильный телефон, лэптоп или планшетный компьютер и т.д. Устройство 500 с фиг. 16 или устройство 600 с фиг. 17 преимущественно реализовано в кодере 400 с фиг. 15.
Кодер 51, реализованный в пользовательском устройстве 50, может быть кодером 400, показанным на фиг. 15, или другим кодером, содержащим устройство 500 с фиг. 16 или устройство 600 с фиг. 17.
Изображения 20, 22, 24 из многочисленных уровней 10, 12, 14 в многоуровневом видеопотоке 1 вводятся в кодер 51 пользовательского устройства 50 для генерирования и вывода кодируемого многоуровневого видеопотока 2, обычно содержащего единицы NAL, содержащие соответствующие закодированные представления слайсов в изображениях, или наборы параметров, генерируемые для многоуровневого видеопотока 1.
Кодируемый многоуровневый видеопоток 2 предпочтительно передается беспроводным образом или с использованием проводного соединения от пользовательского устройства 50 к пользовательскому устройству 53, при этом декодер 54 декодирует кодируемый многоуровневый видеопоток 2 для генерирования декодированных изображений, которые могут быть показаны на устройстве 56 отображения. Неограничивающие примеры транспортных протоколов, которые могут быть использованы в сети для того, чтобы передавать кодируемый многоуровневый видеопоток 2 и/или пакеты данных, несущие единицы NAL, которые отправляют вне полосы, включают в себя RTP, динамическую адаптивную потоковую передачу по протоколу передачи гипертекста (DASH), транспортный поток MPEG2 (TS). Сеть предпочтительно является беспроводной сетью, такой как сеть мобильной связи (широкополосная сеть).
Кодируемый многоуровневый видеопоток 2 может быть передан от пользовательского устройства 50 кодирования на пользовательское устройство 53 декодирования через один или более сетевых узлов 52. Такой сетевой узел 52 может необязательно обрабатывать кодируемый многоуровневый видеопоток 2, например транскодировать многоуровневый видеопоток, или удалять один или более уровней кодируемого многоуровневого видеопотока 2 для формирования кодируемого многоуровневого видеоподпотока 3. Такое исключение уровня может иметь место вследствие адаптации битрейта, например, в случае перегрузки сети; адаптации формата, например в случае, когда пользовательское устройство 53 декодирования может декодировать или отображать только с некоторым максимальным разрешением; или 2D/3D-адаптации, например в случае, когда пользовательское устройство 53 декодирования может декодировать или отображать только некоторое число ракурсов (видов).
Настоящие варианты осуществления в частности применимы к HEVC и другим стандартам видеокодирования, которые могут кодировать и декодировать многоуровневое видео, например, многоракурсное видео, 3D видео или масштабируемое видео.
Модификации и другие варианты описанных вариантов осуществления придут на ум специалисту в данной области, обладающему преимуществом раскрытия, представленного в вышеприведенном описании и на связанных чертежах. Следовательно, должно быть понятно, что варианты осуществления не ограничены конкретными примерами и что модификации и другие варианты предназначены для включения в объем этого раскрытия. В частности, варианты осуществления, раскрытые в данном документе могут быть объединены, когда это возможно технически.