ДЕКОДИРОВАНИЕ МНОГОСЛОЙНОГО ВИДЕОПОТОКА
DECODING OF MULTILAYER 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 встрече: Шанхай, КНР, 10-19 октября 2012 г., обозначенный JCTVC-K1007, относящийся к конструкциям заголовка единицы NAL и набора параметров для расширений HEVC включает в себя спецификации конструкций набора параметров для расширений многовидового/3D HEVC и масштабируемого кодирования. Согласно этому документу, слоевые зависимости сигнализируются как часть указанной ниже синтаксической структуры vps_extension:
num_direct_ref_layers[ i ] указывает количество слоев, от которых непосредственно зависит i-й слой.
ref_layer_id[ i ][ j ] идентифицирует j-й слой, от которого непосредственно зависит i-й слой.
Вышеупомянутое решение требует большого количества битов для сигнализации слоевых зависимостей в VPS. В частности, для каждого слоя над используемым базовым слоем, шесть битов используются для кодирования количества опорных слоев и другие шесть битов используются для идентификации каждого опорного слоя. Это позволяет сигнализировать зависимости для значимых случаев, однако может не обеспечивать эффективность в отношении использования битов.
Сущность изобретения
Общей задачей является обеспечение эффективной обработки многослойного видеопотока.
Частной задачей является эффективная сигнализация слоевых зависимостей для многослойного видеопотока.
Эти и другие задачи решаются согласно раскрытым здесь вариантам осуществления.
Аспект вариантов осуществления относится к способу определения отношения декодирования для кодированного многослойного видеопотока, задающего множественные слои изображений. Способ содержит извлечение, на основании кодированного многослойного видеопотока, по меньшей мере, одного флага непосредственного декодирования, указывающего непосредственное отношение кодирования между слоем с индексом i слоя из множественных слоев и слоем с индексом j слоя из множественных слоев, i≠j. Способ также содержит определение информации, задающей любое отношение декодирования между множественными слоями на основании, по меньшей мере, одного флага непосредственного декодирования. Способ дополнительно содержит определение типа операции прогнозирования на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя.
Согласно варианту осуществления этого аспекта, этап извлечения содержит извлечение, для слоя с индексом i слоя, соответствующего флага непосредственной зависимости для каждого индекса j слоя на основании кодированного многослойного видеопотока. В этом варианте осуществления, j<i, и флаг непосредственной зависимости указывает, является ли слой с индексом j слоя непосредственным опорным слоем для слоя с индексом i слоя. В этом варианте осуществления этап определения содержит определение информации, задающей любой слой с индексом слоя j<i, от которого зависит слой с индексом i слоя, на основании флагов непосредственной зависимости.
Согласно варианту осуществления этого аспекта, этап извлечения содержит извлечение, из набора параметров видео или расширения набора параметров видео, связанного с кодированным многослойным видеопотоком, по меньшей мере, одного флага непосредственного декодирования, указывающего непосредственное отношение кодирования между слоем с индексом i слоя и слоем с индексом j слоя.
Согласно варианту осуществления способ дополнительно содержит извлечение, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя из расширения набора параметров видео, связанного с кодированным многослойным видеопотоком.
Согласно варианту осуществления, определение типа операции прогнозирования содержит определение, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости добавления опорного изображения из слоя с индексом j слоя в список опорных изображений слоя с индексом i слоя.
Согласно варианту осуществления, определение типа операции прогнозирования содержит определение, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости сделать опорное изображение из слоя с индексом j слоя доступным для межслоевого прогнозирования для слоя с индексом i слоя без добавления опорного изображения в список опорных изображений слоя с индексом i слоя.
Согласно варианту осуществления, определение типа операции прогнозирования содержит определение, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости прогнозирования информации движения или информации режима из слоя с индексом j слоя в слой с индексом i слоя.
Родственный аспект вариантов осуществления предусматривает устройство для определения отношения декодирования для кодированного многослойного видеопотока, задающего множественные слои изображений. Устройство содержит извлекатель флага, выполненный с возможностью извлечения, на основании кодированного многослойного видеопотока, по меньшей мере, одного флага непосредственного декодирования, указывающего непосредственное отношение кодирования между слоем с индексом i слоя из множественных слоев и слоем с индексом j слоя из множественных слоев, i≠j. Устройство также содержит определитель информации, выполненный с возможностью определения информации, задающей любое отношение декодирования между множественными слоями на основании, по меньшей мере, одного флага непосредственного декодирования. Устройство дополнительно содержит определитель типа, выполненный с возможностью определения типа операции прогнозирования на основании, по меньшей мере, одного идентификатора масштабируемости упомянутого слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости упомянутого слоя с индексом j слоя.
Согласно варианту осуществления этого родственного аспекта, извлекатель флага выполнен с возможностью извлечения, для слоя с индексом i слоя, соответствующего флага непосредственной зависимости для каждого индекса j слоя на основании кодированного многослойного видеопотока. В этом варианте осуществления, j<i, и флаг непосредственной зависимости указывает, является ли слой с индексом j слоя непосредственным опорным слоем для слоя с индексом i слоя. В этом варианте осуществления определитель информации выполнен с возможностью определения информации, задающей любой слой с индексом слоя j<i, от которого зависит слой с индексом i слоя, на основании флагов непосредственной зависимости.
Согласно варианту осуществления этого родственного аспекта, извлекатель флага выполнен с возможностью извлечения, из набора параметров видео или расширения набора параметров видео, связанного с кодированным многослойным видеопотоком, по меньшей мере, одного флага непосредственного декодирования, указывающего непосредственное отношение кодирования между слоем с индексом i слоя и слоем с индексом j слоя.
Согласно варианту осуществления, устройство дополнительно содержит извлекатель идентификатора масштабируемости, выполненный с возможностью извлечения, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя из расширения набора параметров видео, связанного с кодированным многослойным видеопотоком.
Согласно варианту осуществления, определитель типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости добавления опорного изображения из слоя с индексом j слоя в список опорных изображений слоя с индексом i слоя.
Согласно варианту осуществления, определитель типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости сделать опорное изображение из слоя с индексом j слоя доступным для межслоевого прогнозирования для слоя с индексом i слоя без добавления опорного изображения в список опорных изображений слоя с индексом i слоя.
Согласно варианту осуществления, определитель типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости прогнозирования информации движения или информации режима из слоя с индексом j слоя в слой с индексом 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 слоя.
Согласно варианту осуществления, декодер дополнительно содержит извлекатель идентификатора масштабируемости, выполненный с возможностью извлечения, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя из расширения набора параметров видео, связанного с кодированным многослойным видеопотоком.
Согласно варианту осуществления, определитель типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя, необходимости добавления опорного изображения из любого опорного слоя в список опорных изображений слоя.
Согласно варианту осуществления, определитель типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя, необходимости сделать опорное изображение из любого опорного слоя доступным для межслоевого прогнозирования для слоя без добавления опорного изображения в список опорных изображений слоя.
Согласно варианту осуществления, определитель типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя, необходимости прогнозирования информации движения или информации режима из любого опорного слоя в слой.
Вариант этого другого родственного аспекта вариантов осуществления предусматривает декодер, выполненный с возможностью декодирования кодированного многослойного видеопотока, задающего множественные слои изображений, причем каждый слой из множественных слоев имеет соответствующий идентификатор слоя. Декодер содержит процессор, выполненный с возможностью обработки кодового средства компьютерной программы, хранящейся на машиночитаемом носителе. Кодовое средство предписывает, при выполнении на процессоре, процессору извлекать, для слоя с индексом слоя из множественных слоев, информация отношения декодирования на основании кодированного многослойного видеопотока. Информация отношения декодирования задает соответствующий индекс слоя для любого опорного слоя из множественных слоев, от которого слой непосредственно зависит. Кодовое средство также предписывает процессору для отображения, для каждого опорного слоя и для слоя, его индекса слоя в идентификатор слоя на основании информации отображения иерархического отношения отображения между идентификаторами слоев и индексами слоев. Информация отображения извлекается на основании кодированного многослойного видеопотока. Кодовое средство дополнительно предписывает процессору определять тип операции прогнозирования на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя. Кодовое средство дополнительно предписывает процессору для декодирования изображения слоя на основании, по меньшей мере, одного ранее декодированного изображения в слое из множественных слоев, идентифицированных на основании идентификаторов слоев, отображаемых из индексов слоев.
Дополнительные аспекты вариантов осуществления предусматривают пользовательское устройство и сетевой узел, содержащий устройство для определения отношения декодирования согласно вышеуказанному и/или декодер согласно вышеуказанному.
Краткое описание чертежей
Варианты осуществления, совместно с их дополнительными задачами и преимуществами, можно лучше всего понять, обратившись к нижеследующему описанию, приведенному совместно с прилагаемыми чертежами, в которых:
фиг. 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 схематически демонстрирует другой пример многослойного видеопотока;
фиг. 24 - блок-схема операций, демонстрирующая способ декодирования кодированного многослойного видеопотока согласно другому варианту осуществления;
фиг. 25 - блок-схема операций, демонстрирующая способ определения отношения декодирования для кодированного многослойного видеопотока согласно другому варианту осуществления;
фиг. 26 - упрощенная блок-схема декодера согласно другому варианту осуществления; и
фиг. 27 - упрощенная блок-схема устройства для определения отношения декодирования согласно другому варианту осуществления.
Подробное описание
На протяжении чертежей одинаковые ссылочные позиции используются для аналогичных или соответствующих элементов.
Настоящие варианты осуществления в целом относятся к многослойным видеопотокам и последовательностям и, в частности к кодированию и декодированию таких многослойных видеопотоков. Варианты осуществления позволяют эффективно сигнализировать слоевой зависимости для многослойного видеопотока, и, таким образом, сокращать количество битов, необходимое для сигнализации таких слоевых зависимостей по сравнению с традиционными методами.
Многослойное видео, в целом, означает многовидовое видео, 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 данных, который может передаваться как часть кодированного многослойного видеопотока от кодера на декодер. Например, к единице 44 NAL можно добавлять заголовки 42 транспортного протокола реального времени (RTP), протокола пользовательских дейтаграмм (UDP) и интернет-протокола (IP). Эта форма пакетирования единиц 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, показанный на фиг. 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) указывает логарифм по основанию 2 от x, и ceil(y) указывает наименьшее целое число, большее или равное y.
В примере реализации, следующие элементы синтаксиса можно использовать для указания информации отношения декодирования и информации отображения.
В первом цикле 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_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 слоя.
bin
bin
bin
bin
По меньшей мере, один флаг непосредственного декодирования предпочтительно является 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 ];
• “+” представляет побитовую логическую операцию OR;
j=0…i-1
• sum(x( j )) представляет побитовую логическую операцию OR по всем x( j ), где j=0…i-1; и
• “×” представляет побитовую операцию AND между каждыми соответствующими элементами в dependency_flag[ j ] и direct_dependency_flag[ i ][ j ]
В таком случае, элементы синтаксиса для сигнализации флагов непосредственной зависимости могут быть заданы, как указано ниже.
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, как показано ниже.
В другом варианте осуществления этап 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 ];
• “+” представляет побитовую логическую операцию OR;
j=i+1…imax
• sum(x( j )) представляет побитовую логическую операцию OR по всем x( j ) с j = i+1…imax, где imax представляет максимальный индекс слоя; и
• “×” представляет побитовую операцию AND между каждыми соответствующими элементами в reference_flag[ j ] и direct_reference_flag[ i ][ j ]
В таком случае, элементы синтаксиса для сигнализации флагов непосредственной зависимости могут быть заданы, как указано ниже.
direct_reference_flag[ i ][ j ] равный нулю, предпочтительно указывает, что слой с индексом i слоя не является непосредственным опорным слоем для слоя с индексом j слоя. direct_reference_flag[ i ][ j ] равный единице, предпочтительно указывает, что слой с индексом i слоя является непосредственным опорным слоем для слоя с индексом j слоя. В отсутствие direct_reference_flag[ i ][ j ] его предпочтительно считать равным нулю.
Если этот вариант осуществления используется в связи со способом декодирования, как показано на фиг. 5, флаги непосредственной опоры и информация отображения могут сигнализироваться совместно, например, в расширении VPS, как показано ниже. В таком случае этот вариант осуществления, предпочтительно, имеет иерархическое отношение слоев, поскольку слой с индексом i слоя, предпочтительно, может быть опорным слоем только для слоев с индексом слоя j>i.
в дополнительном варианте осуществления этап 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, показанный на фиг. 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 согласно:
Если этот вариант осуществления используется в связи со способом декодирования, как показано на фиг. 5, флаги непосредственной опоры и информация отображения могут сигнализироваться совместно, например, в расширении VPS, как показано ниже. В таком случае этот вариант осуществления, предпочтительно, имеет иерархическое отношение слоев, поскольку слой с индексом i слоя, предпочтительно, может быть опорным слоем только для слоев с индексом слоя j>i.
Аспект вариантов осуществления относится к способу определения отношения декодирования для кодированного многослойного видеопотока 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 слоя для слоя, от которого непосредственно зависит текущий слой с индексом i слоя.
На этом способ заканчивается согласно варианту осуществления.
В альтернативном варианте осуществления опорные элементы синтаксиса, извлеченные на этапе S22, используются в качестве информации отношения декодирования согласно способу декодирования кодированного многослойного видеопотока, описанному в связи с фиг. 5. В таком случае, способ продолжается от этапа S22, показанного на фиг. 7, к этапу S2, показанному на фиг. 5.
В первом конкретном варианте осуществления, необязательный этап S20 содержит вычисление длины числового элемента синтаксиса на основании индекса i слоя. Таким образом, в этом варианте осуществления длина числового элемента синтаксиса вычисляется на основании конкретного значения индекса i слоя.
В первой иллюстративной реализации этап S20 содержит вычисление длины числового элемента синтаксиса как ceil(log2( i + 1)), где i представляет индекс слоя, ceil( x ) представляет наименьшее целое число, большее или равное x, и log2( x ) представляет логарифм по основанию 2 от x.
Следовательно, в этой иллюстративной реализации количество битов, используемое для представления количества опорных слоев, т.е. числовой элемент синтаксиса, представляется кодом 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 )).
В таком случае, элементы синтаксиса для сигнализации числового элемента синтаксиса и опорные элементы синтаксиса можно задать следующим образом.
num_direct_ref_layers[ i ] указывает количество опорных слоев, от которых непосредственно зависит слой с индексом 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.
Во втором примере реализации делается предположение, что опорные индексы, т.е. опорные элементы синтаксиса, указаны в иерархическом порядке индексов слоев для опорных слоев. Например, можно предположить, что 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 )).
В таком случае, элементы синтаксиса для сигнализации числового элемента синтаксиса и опорные элементы синтаксиса можно задать следующим образом.
Аспект вариантов осуществления относится к способу определения отношения кодирования для многослойного видеопотока 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.
Затем на этапе S51 используется отношение кодирования, определенное для многослойного видеопотока на этапе S50, для определения, для слоя с индексом i слоя, по меньшей мере, одного флага непосредственного декодирования, указывающего непосредственное отношение кодирования между слоем с индексом i слоя и слоем с индексом 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.
j<i.
Аспект вариантов осуществления относится к способу определения отношения кодирования для многослойного видеопотока 1, задающего множественные слои 10, 12, 14 изображений 20, 22, 24. Способ содержит определение числового элемента синтаксиса, задающего количество опорных слоев из множественных слоев 10, 12, 14 для слоя 12 с индексом i слоя из множественных слоев 10, 12, 14. Способ также содержит определение, для каждого из нескольких опорных слоев, соответствующего опорного элемента синтаксиса, задающего индекс j слоя для слоя 10 из множественных слоев 10, 12, 14, от которого непосредственно зависит слой 12 с индексом 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.
Сигнализация слоевой зависимости используется для указания, что между слоями в многослойном видеопотоке существуют зависимости декодирования. В фактическом процессе декодирования, т.е. при реконструкции пиксельных данных в каждом изображении, операции прогнозирования между слоями используются, если существуют зависимости декодирования. Конкретные используемые операции прогнозирования могут зависеть от “типа” зависимости. Например, для многовидового кодирования, может существовать межвидовое прогнозирование посредством добавления опорного изображения из опорного вида (опорного слоя) в список опорных изображений декодируемого в данный момент вида (текущего слоя). В другом примере, относящемся к кодированию текстуры + глубины, т.е. некоторые виды или слои имеют “карты глубины”, связанные с ними, информацию движения/режима можно прогнозировать из вида текстуры (слоя текстуры) в соответствующий вид глубины (слой глубины). В примере масштабируемого кодирования, информацию движения/режима и/или пиксельные данные можно прогнозировать из соответствующего изображения базового слоя, без добавления изображения базового слоя в список опорных изображений текущего слоя.
В принципе, такие разные типы прогнозов могут возникать даже в одном и том же кодированном многослойном видеопотоке, например, если используется как межвидовое прогнозирование (путем добавления опорного изображения в список опорных изображений), так и прогнозирование движения/режима текстуры в глубину.
Тип прогнозирования можно вывести, рассматривая измерения масштабируемости слоев. Измерения масштабируемости могут сигнализироваться как “dimension_id[ i ][ j ]”, например, в расширении VPS, как указано ниже:
Измерение масштабируемости может быть, например, “view_id”, указывающим идентификатор вида, “depth_flag”, указывающим, содержит ли слой информацию текстуры или глубины, “dependency_id”, указывающим слой пространственной масштабируемости, или “quality_id”, указывающим слой масштабируемости качества. Каждая конкретная комбинация измерений масштабируемости идентифицирует конкретный слой, и наоборот. Предпочтительно, чтобы в многослойном видеопотоке не было двух слоев, имеющих одинаковые значения для всех измерений масштабируемости.
Тип прогнозирования можно вывести из различий в измерениях масштабируемости между текущим слоем и любым опорным слоем. Например, если между текущим слоем и опорным слоем существует различие в view_id, и все остальные dimension_id одинаковы, то можно использовать “межвидовое прогнозирование”, например, добавление опорного изображения в список опорных изображений. Соответственно, если depth_flag отличается, и все остальные измерения одинаковы, то используется прогнозирование движения/режима между текстурой и глубиной.
В принципе, если слои являются зависимыми, то один или более из их dimension_id могут быть разными. Однако в типичном случае отличается только один из их dimension_id.
В конкретном варианте осуществления, тип операции прогнозирования определяется на основании, по меньшей мере, одного идентификатора масштабируемости текущего слоя и, по меньшей мере, одного идентификатора масштабируемости опорного слоя для текущего слоя.
Таким образом, идентификаторы масштабируемости (dimension_id) текущего слоя и опорного слоя можно использовать для определения типа операции прогнозирования для пары текущего слоя и опорного слоя. Типом операции прогнозирования может быть, например, добавление опорного изображения из опорного слоя в список опорных изображений текущего слоя и использование этого изображения для прогнозирования, обеспечение доступности опорного изображения из опорного слоя для межслоевого прогнозирования без его добавления в список опорных изображений, и т.д.
На Фиг. 24 показана блок-схема операций, демонстрирующая вариант осуществления способа декодирования кодированного многослойного видеопотока, как показано на фиг. 5, с использованием идентификаторов масштабируемости для определения типа операции прогнозирования. Кодированный многослойный видеопоток задает множественные слои изображений, причем каждый слой из множественных слоев имеет соответствующий идентификатор слоя. Способ содержит извлечение, на этапе S1 и для слоя с индексом слоя из множественных слоев, информации отношения декодирования на основании кодированного многослойного видеопотока. Информация отношения декодирования задает соответствующий индекс слоя для любого опорного слоя из множественных слоев, от которого слой непосредственно зависит. Способ также содержит отображение, на этапе S2 и для каждого опорного слоя и для слоя, его индекса слоя в идентификатор слоя на основании информации отображения иерархического отношения отображения между идентификаторами слоев и индексами слоев. Информация отображения извлекается на основании кодированного многослойного видеопотока. Способ дополнительно содержит определение, на этапе S5, типа операции прогнозирования на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя. Способ дополнительно содержит декодирование, на этапе S3, изображения слоя на основании, по меньшей мере, одного ранее декодированного изображения в слое из множественных слоев, идентифицированных на основании идентификаторов слоев, отображаемых из индексов слоев.
В конкретном варианте осуществления, декодирование этапа S3 осуществляется, по меньшей мере, частично на основании или согласно типу операции прогнозирования, определенному на этапе S5.
Согласно варианту осуществления, способ содержит дополнительный и необязательный этап S4. Этот этап S4 содержит извлечение, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя из расширения VPS, связанного с кодированным многослойным видеопотоком.
Согласно варианту осуществления этап S5 содержит определение, на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя, необходимости добавления опорного изображения из любого опорного слоя в список опорных изображений слоя.
Поэтому опорное изображение добавляется в список опорных изображений, чтобы, таким образом, быть доступным для межслоевого декодирования изображений в текущем слое.
В другом варианте осуществления этап S5 содержит определение, на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя, необходимости сделать опорное изображение из любого опорного слоя доступным для межслоевого прогнозирования для слоя без добавления опорного изображения в список опорных изображений слоя.
В этом варианте осуществления, опорное изображение делается доступным для межслоевого прогнозирования для изображений в текущем слое без фактического добавления опорного изображения в список опорных изображений.
В дополнительном варианте осуществления этап S5 содержит определение, на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя, необходимости прогнозирования информации движения или информации режима из любого опорного слоя в слой.
Прогнозирование информации движения содержит, например, прогнозирование векторов движения для блоков пикселей, например единиц кодирования. В таком случае, векторы движения из опорного слоя могут использоваться в качестве основы прогнозирование при определении векторов движения для текущего слоя.
Внутреннее прогнозирование в целом осуществляется согласно одному из нескольких доступных режимов внутреннего прогнозирования, например, режиму DC или направлению внутреннего прогнозирования. В таком случае, информация таких режимов внутреннего прогнозирования из опорного слоя может использоваться для режимов внутреннего прогнозирования для текущего слоя.
На фиг. 25 показана блок-схема операций, демонстрирующая вариант осуществления способа определения отношения декодирования для кодированного многослойного видеопотока, задающего множественные слои изображений, как показано на фиг. 6, с использованием идентификаторов масштабируемости для определения типа операции прогнозирования. Способ содержит извлечение, на этапе S10 и на основании кодированного многослойного видеопотока, по меньшей мере, одного флага непосредственного декодирования, указывающего непосредственное отношение кодирования между слоем с индексом i слоя из множественных слоев и слоем с индексом j слоя из множественных слоев, i≠j. Способ также содержит определение, на этапе S11, информации, задающей любое отношение декодирования между множественными слоями на основании, по меньшей мере, одного флага непосредственного декодирования. Способ дополнительно содержит определение, на этапе S13, типа операции прогнозирования на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя.
Согласно варианту осуществления, способ содержит дополнительный и необязательный этап S12. Этап S12 содержит извлечение, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя из расширения VPS, связанного с кодированным многослойным видеопотоком.
Согласно варианту осуществления этап S13 содержит определение, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости добавления опорного изображения из слоя с индексом j слоя в список опорных изображений слоя с индексом i слоя.
В другом варианте осуществления этап S13 содержит определение, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости сделать опорное изображение из слоя с индексом j слоя доступным для межслоевого прогнозирования для слоя с индексом i слоя без добавления опорного изображения в список опорных изображений слоя с индексом i слоя.
В дополнительном варианте осуществления этап S13 содержит определение, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости прогнозирования информации движения или информации режима из слоя с индексом j слоя в слой с индексом i слоя.
Были проведены имитационные эксперименты для определения количества битов, необходимого для сигнализации слоевых зависимостей. Сравнивали три разных способа сигнализации таких слоевых зависимостей: традиционную сигнализацию слоевой зависимости, раскрытую в ранее упомянутом документе 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 слоя.
На фиг. 26 показан пример реализации декодера 100 на фиг. 12 применительно к использованию идентификаторов масштабируемости для определения типа операции прогнозирования. Декодер 100, показанный фиг. 26, выполнен с возможностью декодирования кодированного многослойного видеопотока, задающего множественные слои изображений, причем каждый слой из множественных слоев имеет соответствующий идентификатор слоя. Декодер 100 содержит извлекатель 110 информации отношения декодирования, выполненный с возможностью извлечения, для слоя с индексом слоя из множественных слоев, информации отношения декодирования на основании кодированного многослойного видеопотока. Информация отношения декодирования задает соответствующий индекс слоя для любого опорного слоя из множественных слоев, от которого слой непосредственно зависит. Блок 120 отображения индекса в идентификатор выполнен с возможностью отображения, для каждого опорного слоя и для слоя, его индекса слоя в идентификатор слоя на основании информации отображения иерархического отношения отображения между идентификаторами слоев и индексами слоев. Информация отображения извлекается на основании кодированного многослойного видеопотока. Декодер 100 дополнительно содержит определитель 140 типа, выполненный с возможностью определения типа операции прогнозирования на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя. Декодер 100 дополнительно содержит блок 130 декодирования, выполненный с возможностью декодирования изображения слоя на основании, по меньшей мере, одного ранее декодированного изображения в слое из множественных слоев, идентифицированных на основании идентификаторов слоев, отображаемых из индексов слоев.
Согласно варианту осуществления, блок 130 декодирования выполнен с возможностью декодирования изображения, по меньшей мере, частично на основании или согласно типу прогнозирования, определенному определителем 140 типа.
Согласно варианту осуществления, декодер 100 дополнительно содержит необязательный извлекатель 150 идентификатора масштабируемости, выполненный с возможностью извлечения, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя из расширения набора параметров видео, связанного с кодированным многослойным видеопотоком.
Согласно варианту осуществления, определитель 140 типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя, необходимости добавления опорного изображения из любого опорного слоя в список опорных изображений слоя.
В другом варианте осуществления, определитель 140 типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя, необходимости сделать опорное изображение из любого опорного слоя доступным для межслоевого прогнозирования для слоя без добавления опорного изображения в список опорных изображений слоя.
В дополнительном варианте осуществления, определитель 140 типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя и, по меньшей мере, одного идентификатора масштабируемости любого опорного слоя, необходимости прогнозирования информации движения или информации режима из любого опорного слоя в слой.
Аспект вариантов осуществления предусматривает кодер, выполненный с возможностью кодирования многослойного видеопотока 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.
На фиг. 27 показан пример реализации устройства 200 для определения отношения декодирования для кодированного многослойного видеопотока, задающего множественные слои изображений на фиг. 13, применительно к использованию идентификаторов масштабируемости для определения типа операции прогнозирования. Устройство 200 содержит извлекатель 210 флага, выполненный с возможностью извлечения, на основании кодированного многослойного видеопотока, по меньшей мере, одного флага непосредственного декодирования, указывающего непосредственное отношение кодирования между слоем с индексом i слоя из множественных слоев и слоем с индексом j слоя из множественных слоев, i≠j. Устройство 200 также содержит определитель 220 информации, выполненный с возможностью определения информации, задающей любое отношение декодирования между множественными слоями на основании, по меньшей мере, одного флага непосредственного декодирования. Устройство 200 дополнительно содержит определитель 230 типа, выполненный с возможностью определения типа операции прогнозирования на основании, по меньшей мере, одного идентификатора масштабируемости упомянутого слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости упомянутого слоя с индексом j слоя.
Согласно варианту осуществления, устройство 200 дополнительно содержит необязательный извлекатель 240 идентификатора масштабируемости, выполненный с возможностью извлечения, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя из расширения набора параметров видео, связанного с кодированным многослойным видеопотоком.
Согласно варианту осуществления, определитель 230 типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости добавления опорного изображения из слоя с индексом j слоя в список опорных изображений слоя с индексом i слоя.
В другом варианте осуществления, определитель 230 типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости сделать опорное изображение из слоя с индексом j слоя доступным для межслоевого прогнозирования для слоя с индексом i слоя без добавления опорного изображения в список опорных изображений слоя с индексом i слоя.
В дополнительном варианте осуществления, определитель 230 типа выполнен с возможностью определения, на основании, по меньшей мере, одного идентификатора масштабируемости слоя с индексом i слоя и, по меньшей мере, одного идентификатора масштабируемости слоя с индексом j слоя, необходимости прогнозирования информации движения или информации режима из слоя с индексом j слоя в слой с индексом i слоя.
Другой аспект вариантов осуществления предусматривает устройство для определения отношения декодирования для кодированного многослойного видеопотока 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 слоя опорного слоя, от которого непосредственно зависит текущий слой с индексом 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 и 26, устройства 200, 300 для определения отношения декодирования, показанные на фиг. 13, 14 и 27, кодер 400, показанный на фиг. 15, и устройства 500, 600 для определения отношения кодирования, показанные на фиг. 16 и 17, можно реализовать аппаратными средствами. Существуют многочисленные разновидности схемных элементов, которые можно использовать и комбинировать для обеспечения функций блоков декодера, кодера или устройств, показанных на фиг. 12-17, 26-27. Такие разновидности предусмотрены вариантами осуществления. Конкретные примеры аппаратной реализации включают в себя реализацию в оборудовании цифрового сигнального процессора (DSP) и технологии интегральных схем, включая как электронную схему общего назначения, так и схему для конкретного применения.
Альтернативно, декодер 100, показанный на фиг. 12 и 26, устройства 200, 300 для определения отношения декодирования, показанные на фиг. 13, 14 и 27, кодер 400, показанный на фиг. 15, и устройства 500, 600 для определения отношения кодирования, показанные на фиг. 16 и 17, можно реализовать, по меньшей мере, частично программными средствами. Такая реализация показана на фиг. 18. Декодер, кодер или устройство 700 показанные на фиг. 12-17, 26-27 содержит процессор 710, выполненный с возможностью обработки кодового средства 740 компьютерной программы 730, хранящейся на машиночитаемом носителе, представленном памятью 720, показанной на фиг. 18. Кодовое средство 740 предписывает, при выполнении на процессоре 710, процессору 710 осуществлять функции блоков декодера, кодера или устройств, показанных на фиг. 12-17.
Процессором 710 может быть общего назначения или специального назначения компьютер, процессор или микропроцессор, например центральный процессор (CPU). Программное обеспечение включает в себя элементы программного кода или участки программного кода компьютера, осуществляющие работу, по меньшей мере, извлекателя 110 информации отношения декодирования, блока 120 отображения индекса в идентификатор и блока 130 декодирования, показанных на фиг. 12, и/или извлекателя 110 информации отношения декодирования, блока 120 отображения индекса в идентификатор, блока 130 декодирования и определителя 140 типа, показанных на фиг. 26, и/или извлекателя 210 флага и определителя 220 информации, показанных на фиг. 13, и/или извлекателя 210 флага, определителя 220 информации и определителя 230 типа, показанных на фиг. 27, и/или необязательного вычислителя 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, 26-27, как реализованные, по меньшей мере, частично программными средствами.
Декодер 100, показанный на фиг. 12 и 26, устройство 200 для определения отношения декодирования, показанное на фиг. 13 и 27 и/или устройство 300 для определения отношения декодирования, показанное на фиг. 14, преимущественно может размещаться в пользовательском устройстве или терминале 53, как показано на фиг. 19. Это пользовательское устройство 53 может представлять собой телевизионную приставку, компьютер, мобильное устройство, например, мобильный телефон, портативный компьютер или планшетный компьютер, и т.д. Устройство 200, показанное на фиг. 13 и 27, или устройство 300, показанное на фиг. 14, преимущественно реализуется в декодере 100, показанном на фиг. 12 и 26.
Пользовательское устройство 53 может, помимо декодера 54, например, декодера 100, показанного на фиг. 12 или 13, или другого декодера, содержащего устройство 200, показанное на фиг. 13, или устройство 300, показанное на фиг. 14, содержать буфер 55 декодированных изображений (DPB), в котором пользовательское устройство 53 сохраняет декодированные изображения, сгенерированные декодером 54. Эти декодированные изображения временно хранятся в DPB 55 i) для использования в качестве опорных изображений при декодировании последующих, согласно порядку декодирования, изображений многослойного видеопотока и/или ii) пока они не будут выведены, например, для отображения на дисплее 56 или экране пользовательского устройства 53 или подключенном к нему.
Декодер 100, показанный на фиг. 12 и 26, устройство 200 для определения отношения декодирования, показанное на фиг. 13 и 27, и/или устройство 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-видео или масштабируемое видео.
Приведенное ниже приложение A является вкладом в представление предложенных модификаций конструкции расширения VPS относительно конструкции в документ JCTVC-K1007. Это приложение составляет неотъемлемую часть настоящего изобретения.
На основании принципов, представленных в вышеприведенных описаниях и соответствующих чертежах, специалист в данной области техники может предложить модификации и другие разновидности описанных вариантов осуществления. Таким образом, следует понимать, что варианты осуществления не подлежат ограничению конкретными раскрытыми примерами, и что модификации и другие разновидности подлежат включению в объем этого изобретения. В частности, раскрытые здесь варианты осуществления можно комбинировать, когда это технически осуществимо.
Приложение A
Реферат
Это приложение представляет предложенные модификации конструкции расширения VPS относительно конструкции в JCTVC-K1007. Рассмотрим два элемента, относящиеся к заявленным ограничениям в конструкции расширения VPS в JCTVC-K1007. Первый элемент относится к сигнализации профиля/яруса/уровня. Предлагается изменять количество итераций цикла профиля/яруса/уровня в расширении VPS от vps_max_layers_minus1 к vps_num_op_sets_minus1. Второй элемент относится к сигнализации слоевой зависимости. Предложен модифицированный подход к сигнализации слоевой зависимости, который, по сообщениям, приводит к экономии 11/30/56/66 битов для конфигурации 2/4/8/16 слоев с 1 опорным слоем на слой и экономии 11/42/92/144 битов для конфигурации 2/4/8/16 слоев с 2 опорными слоями на слой. Утверждается, что в, по сообщениям, менее практически значимых случаях, когда в битовом потоке присутствует большое количество слоев, предложенный подход может обладать меньшей битовой эффективностью, чем подход в JCTVC-K1007, однако количество битов в наихудшем случае значительно ниже количества битов в наихудшем случае согласно подходу в JCTVC-K1007.
Введение
Документ JCTVC-K1007 включает в себя конструкции заголовка единицы NAL и набора параметров для масштабируемых и 3D-расширений HEVC, согласованных на 11-ой встрече JCT-VC. В этом приложении, предложены модификации конструкции расширения VPS относительно конструкции в JCTVC-K1007. В частности, рассмотрим два заявленных ограничения конструкции в JCTVC-K1007:
В синтаксисе расширения VPS в JCTVC-K1007, присутствует цикл, который, согласно пониманию автора, призван указать набор профиля/яруса/уровня для нескольких рабочих точек, которые можно извлекать из битового потока. Цикл имеет vps_max_layers_minus1 итераций. Предполагается, что цикл имеет vps_num_op_sets_minus1 итераций, где vps_num_op_sets_minus1 + 1 указывает количество наборов рабочих точек, заданных в VPS, согласно JCTVC-K1003_v13. Предложенное изменение подробно изложено в следующем разделе.
Утверждается, что сигнализация слоевой зависимости в конструкции расширения VPS в JCTVC-K1007 обладает низкой битовой эффективностью для типичных конфигураций слоев. Более эффективная, по сообщениям, конструкция представлена в следующем разделе.
Синтаксисы современного VPS и расширения VPS
Для удобства, в этом разделе приведена сводка синтаксиса VPS согласно JCTVC-K1003_v13 и синтаксиса расширение VPS согласно JCTVC-K1007.
Сигнализация профиля/яруса/уровня
vps
В синтаксисе расширения VPS в JCTVC-K1007, присутствует цикл, который, согласно пониманию автора, призван указать набор профиля/яруса/уровня для нескольких рабочих точек, которые можно извлекать из битового потока. Цикл имеет vps_max_layers_minus1 итераций, где _max_layers_minus1 + 1 указывает количество слоев в битовом потоке. Однако количество слоев не обязательно равно количеству рабочих точек, которые можно извлекать из битового потока. Таким образом предполагается, что цикл имеет vps_num_op_sets_minus1 итераций, где vps_num_op_sets_minus1 + 1 указывает количество наборов рабочих точек, заданных в VPS, согласно JCTVC-K1003_v13. Предложенное изменение подробно изложено ниже.
Сигнализация слоевой зависимости
Для сигнализации слоевой зависимости в конструкции расширения VPS в JCTVC-K1007, 6-битовый код фиксированной длины используется для сигнализации количества непосредственных опорных слоев для каждого слоя над базовым слоем, и еще один 6-битовый код фиксированной длины используется для сигнализации значения layer_id для идентификации каждого опорного слоя. Заявлено, что эта сигнализация является неэффективной, в частности, в случаях сравнительно малого количества слоев, например, 2, 4, 8, или 16, которые, по утверждению, являются более типичными, чем случаи большого количества слоев, например 64.
Ниже предложена, по сообщениям, более компактная сигнализация, сопровождаемая сравнением количества битов, необходимого для кодирования зависимости с современным и предложенным подходом, а также рассмотрена производительность предложенного подхода.
Предложенный подход
Предлагается (1) исключить явную сигнализацию количества непосредственных опорных слоев и, (2) вместо сигнализации каждого непосредственного опорного слоя значением layer_id, сигнализировать флаг для каждого потенциального непосредственного опорного слоя, который указывает, является ли этот слой непосредственным опорным слоем или нет. В предложенной конструкции дополнительно используется тот факт, что слои могут размещаться таким образом, что слой с индексом “i” (переменная индекса, используемая для циклического перебора слоев) имеет только опорные слои с индексом j<i, но не имеет опорных слоев с индексом j>=i.
Семантика
direct_dependency_flag[ i ][ j ] равный 0, указывает, что слой с индексом j не является непосредственным опорным слоем для слоя с индексом i. direct_dependency_flag[ i ][ j ] равный 1, указывает, что слой с индексом j является непосредственным опорным слоем для слоя с индексом i. В отсутствие direct_dependency_flag[ i ][ j ] он предполагается равным 0.
Сравнение битов, необходимых для кодирования зависимости
Количество битов, необходимое для кодирования слоевой зависимости, было смоделировано для четырех разных конфигураций зависимости следующим образом.
1) “0-ref”: каждый слой имеет 0 опорных слоев (по существу, одновременно транслируемых слоев)
2) “1-ref”: каждый слой с индексом i имеет min(i, 1) опорных слоев
3) “2-ref”: каждый слой с индексом i имеет min(i, 2) опорных слоев
4) “all-ref”: каждый слой с индексом i имеет i опорных слоев
Результаты приведены для 1..64 слоев как в подходе в JCTVC-K1007, так и в предложенном подходе. Заметим, что для предложенного подхода, количество битов, используемое для кодирования зависимости, не зависит конфигурации зависимости.
Ячейки таблицы с толстой рамкой указывают случаи, когда предложенная сигнализация зависимости обладает большей битовой эффективностью, чем сигнализация зависимости в JCTVC-K1007.
Количество слоев
Количество битов для сигнализации зависимости
K1007 0-ref
K1007 1-ref
K1007 2-ref
K1007 all-ref
Предложенная
1
0
0
0
0
0
2
6
12
12
12
1
3
12
24
30
30
3
4
18
36
48
54
6
5
24
48
66
84
10
6
30
60
84
120
15
7
36
72
102
162
21
8
42
84
120
210
28
9
48
96
138
264
36
10
54
108
156
324
45
11
60
120
174
390
55
12
66
132
192
462
66
13
72
144
210
540
78
14
78
156
228
624
91
15
84
168
246
714
105
16
90
180
264
810
120
17
96
192
282
912
136
18
102
204
300
1020
153
19
108
216
318
1134
171
20
114
228
336
1254
190
21
120
240
354
1380
210
22
126
252
372
1512
231
23
132
264
390
1650
253
24
138
276
408
1794
276
25
144
288
426
1944
300
26
150
300
444
2100
325
27
156
312
462
2262
351
28
162
324
480
2430
378
29
168
336
498
2604
406
30
174
348
516
2784
435
31
180
360
534
2970
465
32
186
372
552
3162
496
33
192
384
570
3360
528
34
198
396
588
3564
561
35
204
408
606
3774
595
36
210
420
624
3990
630
37
216
432
642
4212
666
38
222
444
660
4440
703
39
228
456
678
4674
741
40
234
468
696
4914
780
41
240
480
714
5160
820
42
246
492
732
5412
861
43
252
504
750
5670
903
44
258
516
768
5934
946
45
264
528
786
6204
990
46
270
540
804
6480
1035
47
276
552
822
6762
1081
48
282
564
840
7050
1128
49
288
576
858
7344
1176
50
294
588
876
7644
1225
51
300
600
894
7950
1275
52
306
612
912
8262
1326
53
312
624
930
8580
1378
54
318
636
948
8904
1431
55
324
648
966
9234
1485
56
330
660
984
9570
1540
57
336
672
1002
9912
1596
58
342
684
1020
10260
1653
59
348
696
1038
10614
1711
60
354
708
1056
10974
1770
61
360
720
1074
11340
1830
62
366
732
1092
11712
1891
63
372
744
1110
12090
1953
64
378
756
1128
12474
2016
Рассмотрение производительности предложенного подхода
Как указано в вышеприведенной таблице, в случаях умеренного количества слоев (например, до 23 слоев, когда каждый слой имеет один опорный слой), предложенный способ сигнализации зависимости обладает большей битовой эффективностью, чем способ в JCTVC-K1007. Например, для конфигурации с 1 опорным слоем на слой, количество битов, сэкономленных в случае битового потока с 2/4/8/16 слоями, равно 11/30/56/66. Для конфигурации с 2 опорными слоями, количество битов, сэкономленных в случае битового потока с 2/4/8/16 слоями, равно 11/42/92/144.
Как дополнительно явствует из таблицы, если в битовом потоке присутствуют большое количество слоев, предложенный подход может обладать меньшей битовой эффективностью, чем текущий подход. Однако конфигурации с большим количеством слоев менее практически значимы. Также в конфигурации “all-ref”, количество битов в наихудшем случае значительно ниже количества битов в наихудшем случае для подхода в JCTVC-K1007. Кроме того, согласно предложенному подходу, количество элементов синтаксиса, используемых для сигнализации зависимости, не зависит от фактической конфигурации слоев, что упрощает операцию анализа по сравнению с подходом в JCTVC-K1007.
Заключение
Рекомендовано применять предложенные изменения для сигнализации профиля/яруса/уровня и сигнализации слоевой зависимости в конструкции расширения VPS.