НАБОРЫ ПАРАМЕТРОВ КОДИРОВАНИЯ ДЛЯ РАЗЛИЧНЫХ РАЗМЕРНОСТЕЙ В КОДИРОВАНИИ ВИДЕО Российский патент 2016 года по МПК H04N19/39 H04N19/597 

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

[0001] Настоящая заявка испрашивает приоритет предварительной заявки на патент США № 61/513,996, поданной 1 августа 2011, № 61/539,925, поданной 27 сентября 2011, № 61/557,300, поданной 8 ноября 2011, и № 61/563,359, поданной 23 ноября 2011.

ОБЛАСТЬ ТЕХНИКИ

[0002] Настоящее описание относится к кодированию видео.

УРОВЕНЬ ТЕХНИКИ

[0003] Цифровые возможности видео могут быть включены в широкий диапазон устройств, включающий в себя цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDA), ноутбуки или настольные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые устройства записи, цифровые медиаплееры, видео игровые устройства, пульты видеоигр, сотовые или спутниковые радиотелефоны, так называемые "смартфоны", устройства организации видео телеконференций, устройства потоковой передачи видео и т.п. Цифровые видео устройства реализуют способы сжатия видео, такие как описанные в стандартах, определенных посредством MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), стандарта высокоэффективного кодирования видео (HEVC), развивающегося в настоящее время, и расширениях таких стандартов. Эти видео устройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видео информацию более эффективно, реализуя такие способы сжатия видео.

[0004] Способы кодирования видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую видео последовательностям. Для основанного на блоках кодирования видео вырезка видео (то есть, видео кадр или часть видео кадра) может быть разделена на видео блоки, которые могут также упоминаться как блоки дерева, единицы кодирования (CU) и/или узлы кодирования. Видео блоки во внутренне кодированной (I) вырезке картинки кодируют, используя пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке. Видео блоки во внешне кодированной (P или B) вырезке картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в той же картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[0006] В целом настоящее описание описывает способы для сигнализации характеристик различных масштабируемых размерностей (характеристик) видео данных. Видео данные могут быть измерены во множестве различных размерностей, таких как пространственное разрешение, скорость передачи (временная) кадра, виды (например, для поддержки воспроизведения трехмерного (3D) видео), глубина в битах цвета, формат дискретизации цветности, качество, или другие такие размерности. В целом масштабируемая размерность видео данных может включать в себя один или более элементов. Например, размерность вида может включать в себя единственный вид для двумерного видео, два вида для стерео видео, или N видов (где N - целое число, больше чем два) для множества видов. В качестве другого примера, временная размерность может включать в себя первый уровень картинок для поддержки базовой скорости передачи кадров (например, 15 кадров в секунду (к/с)), и один или больше более высоких уровней для поддержки более высоких скоростей передачи кадров (например, 30 к/с, 60 к/с, и 120 к/с). Способы настоящего описания в целом касаются сигнализации того, включает ли в себя поток битов, или его суб-поток битов, множественные уровни для конкретной размерности, и если это так, значения характеристик для этой размерности, например, в заголовке блока уровня абстракции сети (NAL), который может включать в себя кодирование количества битов для каждого из значений различных размерностей. Таким образом способы настоящего описания могут разрешить, вместо того, чтобы всегда использовать значения фиксированной длины для каждого элемента синтаксиса, относящегося к одной масштабируемой размерности в заголовке блока NAL, назначать длину каждого элемента синтаксиса на основании информации, которая может изменяться для различной кодированной видео последовательности потока битов, и информации, которая не изменяется в пределах закодированной видео последовательности потока битов.

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

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

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

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

[0011] Детали одного или более примеров сформулированы в сопровождающих чертежах и описании ниже. Другие признаки, объекты и преимущества будут очевидны из описания и чертежей, и из формулы изобретения.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0012] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать способы для сигнализации характеристик масштабируемых размерностей для видео данных.

[0013] Фиг. 2 является блок-схемой, иллюстрирующей пример видео кодера, который может реализовать способы для сигнализации характеристик масштабируемых размерностей для видео данных.

[0014] Фиг. 3 является блок-схемой, иллюстрирующей пример видео декодера, который может реализовать способы для сигнализации характеристик масштабируемых размерностей для видео данных.

[0015] Фиг. 4 является блок-схемой, иллюстрирующей систему, включающую в себя другой набор устройств, которые могут выполнить способы настоящего описания для сигнализации характеристик масштабируемых размерностей для видео данных.

[0016] Фиг. 5A и 5B являются концептуальными диаграммами, иллюстрирующими примеры заголовков блока NAL в соответствии с различными примерами способов настоящего описания.

[0017] Фиг. 6 является последовательностью операций, иллюстрирующей примерный способ для сигнализации характеристик масштабируемых размерностей для видео данных.

[0018] Фиг. 7 является последовательностью операций, иллюстрирующей примерный способ для использования сигнализированных характеристик масштабируемых размерностей для видео данных.

[0019] Фиг. 8 является последовательностью операций, иллюстрирующей другой примерный способ для сигнализации характеристик, и для использования сигнализированных характеристик - масштабируемых размерностей для видео данных.

ПОДРОБНОЕ ОПИСАНИЕ

[0020] В целом настоящее описание описывает способы для сигнализации характеристик различных размерностей видео данных. Размерности могут быть упомянуты здесь как размерности кодирования видео, или просто "размерности" для краткости. Видео данные могут быть измерены во многих различных размерностях, таких как пространственное разрешение, (временная) скорость передачи кадра, виды (например, чтобы поддерживать воспроизведение трехмерного (3D) видео), глубина в битах цвета, формат дискретизации цветности, качество, или другие такие размерности. Таким образом, размерности кодирования видео могут также упоминаться “как масштабируемые размерности кодирования видео” или просто “масштабируемые размерности”.

[0021] Масштабируемая размерность видео данных может включать в себя один или более элементов. Например, размерность вида может включать в себя единственный вид для двумерного видео, два вида для стерео видео, или N видов (где N - целое число, больше чем два) для множества видов. В качестве другого примера, временная размерность может включать в себя первый уровень картинок для поддержки базовой скорости передачи кадров (например, 15 кадров в секунду (к/с)), и один или больше более высоких уровней для поддержки более высоких скоростей передачи кадров (например, 30 к/с, 60 к/с, и 120 к/с). Способы настоящего описания в целом касаются сигнализации того, включает ли в себя поток битов, или его суб-поток битов, множественные уровни для конкретной размерности, и если это так, значения характеристик для этой размерности, например, в заголовке блока уровня абстракции сети (NAL).

[0022] Способы настоящего описания могут быть реализованы относительно различных стандартов кодирования аудио, видео или других медиа данных. В целях примера способы настоящего описания описаны относительно способов появляющегося стандарта высокоэффективного кодирования видео (HEVC). Однако, нужно подразумевать, что эти способы также могут быть реализованы для других стандартов кодирования. Недавний проект появляющегося стандарта HEVC, названный HEVC Working Draft 7, или WD7, описан в документе HCTVC-I1003, Bross и др.“, “High Efficiency Video Coding (HEVC) Text Specification Draft 7”, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 9th Meeting: Geneva, Switzerland, April 27, 2012 to May 7, 2012, который, на 30 июля 2012, может быть загружен с http://phenix.it-sudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v9.zip. Другие примеры стандартов кодирования видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC). Стандарты кодирования видео также могут быть расширены, используя различные расширения. Например, ITU-T H.264/AVC включает в себя расширение масштабируемого кодирования видео (SVC) и расширение кодирования видео с множественными видами (MVC).

[0023] Как отмечено выше, способы настоящего описания могут быть использованы для сигнализации характеристик различных масштабируемых размерностей в заголовках блоков NAL. Блок NAL в целом инкапсулирует данные более низкого уровня, такие как данные уровня кодирования видео (VCL) или не-VCL данные. Данные VCL обычно включают в себя закодированные видео данные, которые кодируются видео кодером и декодируются видео декодером. Данные не-VCL могут включать в себя данные сигнализации, которые не являются необходимыми для декодирования, но могут быть полезными для устройства-адресата. Например, не-VCL данные может включать в себя дополнительную сообщения информации расширения (SEI).

[0024] В целях сравнения заголовок блока NAL в расширении MVC в ITU-T H.264/AVC (также упомянутый здесь как “H.264/AVC”) содержит однобайтовый заголовок блока NAL, включающий в себя тип блока NAL и элемент синтаксиса nal_ref_idc. Кроме того, заголовок блока NAL MVC может включать в себя расширение заголовка блока NAL MVC, если типом блока NAL является префиксный блок NAL или нормальный блок NAL MVC. Расширение заголовка блока NAL в MVC содержит следующие элементы синтаксиса: nor_idr_flag, чтобы указывать, принадлежит ли блок NAL картинке IDR/V-IDR, которая может использоваться для точки произвольного доступа закрытой GOP; priority_id, который может использоваться для адаптации единственного прохода; view_id, чтобы указывать идентификатор вида текущего принадлежащего вида; temporal_id, чтобы указывать временный уровень текущего блока NAL; anchor_pic_flag, чтобы указывать, принадлежит ли блок NAL картинке привязки, которая может использоваться для точки произвольного доступа закрытой GOP; и inter_view_flag, чтобы указывать, используется ли для межвидового предсказания для блоков NAL в других видах. Префиксный блок NAL в MVC содержит заголовок блока NAL и его расширение заголовка блока NAL MVC.

[0025] Снова в целях сравнения, заголовок блока NAL в расширении SVC H.264/AVC может включать в себя элементы синтаксиса, которые добавляются в расширение заголовка блока NAL, которое расширяет обычный однобайтовый заголовок блока NAL H.264/AVC до четырех байтов, чтобы описать характеристики блока NAL VCL во множественных размерностях, включая priority_id, temporal_id, dependency_id, и quality_id. В расширении SVC H.264/AVC dependency_id относится к пространственной масштабируемости, или крупно-блочной масштабируемости (CGS), и quality_id указывает масштабируемость отношения сигнала к шуму (SNR)/качество. Priority_id относится к идентификатору приоритета для соответствующего блока NAL, и temporal_id задает временный идентификатор для соответствующего блока NAL (который может быть использован для поддержки временной масштабируемости, например, изменяющейся скорости передачи кадров).

[0026] Снова в целях сравнения, блок NAL VCL в HEVC включает в себя более длинный заголовок блока NAL, чем заголовок блока NAL в H.264/AVC, но первый байт в заголовке блока NAL HEVC WD7 в настоящее время является таким же как заголовок блока NAL в H.264/AVC. Заголовок блока NAL HEVC WD7 также содержит элементы синтаксиса temporal_id и output_flag.

[0027] Как показано выше, различные заголовки блока NAL в H.264/AVC, SVC, MVC и HEVC включают в себя различные наборы элементов синтаксиса для поддержки различных масштабируемых размерностей. HEVC может в конечном счете быть сконфигурированным, чтобы поддерживать множественные различные масштабируемые размерности, такие как размерности расширений SVC и MVC в H.264/AVC. Настоящее описание признает, что различные проблемы могут возникнуть, пытаясь поддерживать различные расширения HEVC для различных масштабируемых размерностей. Например, в различных расширениях могут требоваться различные типы расширений заголовка блока NAL. Обеспечивая разнообразные различные типы расширений заголовка блока NAL, окончательная спецификация HEVC может закончиться тем, что она будет иметь множественные таблицы синтаксиса расширения заголовка блока NAL, которые могут увеличить сложность для устройств, относящихся к обработке видео данных.

[0028] Альтернативно, окончательная спецификация HEVC может определить заголовок блока NAL, имеющий максимальное количество битов, чтобы поддерживать все возможные элементы синтаксиса. Если заголовок блока NAL имеет уникальную структуру фиксированной длины, большое количество элементов синтаксиса может быть установлено равными значениям по умолчанию (например, 0), и только несколько из элементов синтаксиса могут иметь установленные значения, что является излишней тратой битов. Другими словами, заголовок блока NAL, который имеет достаточно битов, чтобы поддерживать все возможные масштабируемые размерности одновременно, может привести к битам, потраченным впустую в служебных расходах, когда некоторые масштабируемые размерности не находятся в использовании.

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

[0030] В другом примере карта заголовка блока NAL может задавать расположение полей в заголовке блока NAL. Таким образом, отображение заголовка блока NAL может использоваться вместо набора параметров диапазона размерности, описанного выше. Отображение заголовка блока NAL может быть включено в набор параметров отображения заголовка блока NAL или в набор параметров последовательности (SPS). Одно отображение заголовка блока NAL может быть применимым ко всему потоку битов. Использование отображения заголовка блока NAL из этого примера может гарантировать, что будущие расширения, которые могут быть использованы для добавления дополнительных масштабируемых размерностей, обратно совместимы с существующими стандартами и существующими расширениями. Способы из этого примера могут также гарантировать, что заголовки блока NAL и SPS могут быть синтаксически разобраны, например, избегая включения расширений заголовка блока NAL в наборе параметров диапазона размерности и SPS. Кроме того, заголовки блока NAL из этого примера могут избежать включения в себя данных, которые эмулируют код начала, как определено в HEVC WD7. Кроме того, эти способы могут использовать в своих интересах некоторые преимущества, ассоциированные с включением идентификатора приоритета (priority_id) в заголовок блока NAL, подобно значению priority_id в SVC и MVC.

[0031] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать способы для сигнализации характеристик масштабируемых размерностей для видео данных. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое обеспечивает закодированные видео данные, которые должны быть декодированы в более позднее время устройством-адресатом 14. В частности, устройство-источник 12 обеспечивает видео данные устройству-адресату 14 с помощью считываемого компьютером носителя 16. Устройство-источник 12 и устройство-адресат 14 могут содержать любое из широкого диапазона устройств, включающего в себя настольные компьютеры, портативные компьютеры (то есть, ноутбуки), планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые "смартфоны", так называемые "интеллектуальные" клавиатуры, телевизоры, камеры, устройства отображения, цифровые медиаплееры, видео игровые пульты, устройство потоковой передачи видео, или подобные. В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут быть оборудованы для беспроводной связи.

[0032] Устройство-адресат 14 может принять кодированные видео данные, которые должны быть декодированы, с помощью считываемого компьютером носителя 16. Считываемый компьютером носитель 16 может содержать любой тип носителя или устройства, способного к перемещению кодированных видео данных от устройства-источника 12 к устройству-адресату 14. В одном примере считываемый компьютером носитель 16 может содержать коммуникационный носитель, чтобы разрешить устройству-источнику 12 передавать закодированные видео данные непосредственно к устройству-адресату 14 в реальном времени. Закодированные видео данные могут модулироваться согласно стандарту связи, такому как протокол беспроводной связи, и передаваться к устройству-адресату 14. Коммуникационный носитель может содержать любой беспроводной или проводной коммуникационный носитель, такой как радиочастотный (RF, РЧ) спектр или одну или более физических линий передачи. Коммуникационный носитель может быть частью основанной на пакетной передаче сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Коммуникационный носитель может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от устройства-источника 12 к устройству-адресату 14.

[0033] В некоторых примерах кодированные данные могут быть выведены из интерфейса 22 вывода на устройство хранения. Точно так же, к закодированным данным можно получить доступ от устройства хранения с помощью интерфейса ввода. Устройство хранения может включать в себя любое множество распределенных или локально доступных запоминающих носителей данных, таких как накопитель на жестких дисках, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память, или любые другие подходящие цифровые носители данных для того, чтобы хранить закодированные видео данные. В другом примере устройство хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, которое может хранить закодированное видео, генерируемое устройством-источником 12. Устройство-адресат 14 может получить доступ к сохраненным видео данным от устройства хранения через потоковую передачу или загрузку. Файловый сервер может быть любым типом сервера, способного хранить кодированные видео данные и передавать эти кодированные видео данные к устройству-адресату 14. Примерные файловые серверы включают в себя web-сервер (например, для вебсайта), сервер FTP, устройства сетевого хранения (NAS), или локальный дисковод. Устройство-адресат 14 может получить доступ к закодированным видео данным через любое стандартное соединение данных, включающее в себя интернет-соединение. Это может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.), или комбинацию обоих, что является подходящим для того, чтобы получить доступ к закодированным видео данным, хранящимся на файловом сервере. Передача закодированных видео данных от устройства хранения может быть потоковой передачей, передачей загрузки, или их комбинацией.

[0034] Способы настоящего описания не обязательно ограничены беспроводными применениями или параметрами настройки. Эти способы могут быть применены к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как передачи эфирного телевидения, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео Интернет, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое закодировано на запоминающий носитель данных, декодирование цифрового видео, сохраненного на запоминающем носителе данных, или других приложениях. В некоторых примерах система 10 может быть сконфигурирована, чтобы поддерживать одностороннюю или двухстороннюю видео передачу, чтобы поддерживать приложения, такие как потоковая передача видео, воспроизведение видео, вещание видео и/или видео телефония.

[0035] В примере согласно Фиг. 1 устройство-источник 12 включает в себя видео источник 18, видео кодер 20 и интерфейс 22 вывода. Устройство-адресат 14 включает в себя интерфейс 28 ввода, видео декодер 30 и устройство 32 отображения. В соответствии с этим раскрытием видео кодер 20 из устройства-источника 12 может быть сконфигурирован, чтобы применять способы для сигнализации характеристик масштабируемых размерностей для видео данных. В других примерах устройство-источник и устройство-адресат могут включать в себя другие компоненты или компоновки. Например, устройство-источник 12 может принять видео данные из внешнего видео источника 18, такого как внешняя камера. Аналогично, устройство-адресат 14 может взаимодействовать с внешним устройством отображения вместо включения интегрированного устройства отображения.

[0036] Иллюстрированная на Фиг. 1 система 10 является просто одним примером. Способы для сигнализации характеристик масштабируемых размерностей для видео данных могут быть выполнены любым цифровым устройством кодирования и/или декодирования видео. Хотя в целом способы настоящего описания выполнены устройством кодирования видео, способы также могут быть выполнены видео кодером/декодером, типично называемым как "кодек". Кроме того, способы настоящего описания также могут быть выполнены препроцессором видео. Устройство-источник 12 и устройство-адресат 14 является просто примерами таких устройств кодирования, в которых устройство-источник 12 генерирует закодированные видео данные для передачи к устройству-адресату 14. В некоторых примерах устройства 12, 14 могут работать по существу симметричным образом таким образом, что каждое из устройств 12, 14 включают в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю или двухстороннюю передачу видео между видео устройствами 12, 14, например, для потоковой передачи видео, воспроизведения видео, вещания видео или видео телефонии.

[0037] Видео источник 18 из устройства-источника 12 может включать в себя устройство захвата видео, такое как видео камера, видео архив, содержащий ранее захваченное видео, и/или интерфейс подачи видео, чтобы принять видео от поставщика видео контента. В качестве дальнейшей альтернативы, видео источник 18 может генерировать основанные на компьютерной графике данные, в качестве исходного видео, или комбинацию живого видео, архивированного видео, и генерируемое компьютером видео. В некоторых случаях, если видео источник 18 является видео камерой, устройство-источник 12 и устройство-адресат 14 может сформировать так называемые камерофоны или видео телефоны. Как упомянуто выше, однако, способы, описанные в этом раскрытии, могут быть применимыми к кодированию видео в целом и могут быть применены к беспроводным и/или проводным приложениям. В каждом случае захваченное, предварительно захваченное или генерируемое компьютером видео может быть закодировано видео кодером 20. Закодированная видео информация может затем быть выведена интерфейсом 22 вывода на считываемый компьютером носитель 16.

[0038] Считываемый компьютером носитель 16 может включать в себя временные носители, такие как беспроводное вещание или проводная передача по сети, или запоминающие носители данных (то есть, невременные носители данных), такие как жесткий диск, флэш-накопитель, компакт-диск, цифровой видео диск, диск Blu-ray, или другой считываемый компьютером носитель. В некоторых примерах сетевой сервер (не показан) может принять закодированные видео данные от устройства-источника 12 и выдать кодированные видео данные устройству-адресату 14, например, через передачу по сети. Аналогично, вычислительное устройство из приспособления для производства носителей, такое как приспособление для штамповки дисков, может принять закодированные видео данные от устройства-источника 12 и изготовить диск, содержащий закодированные видео данные. Поэтому считываемый компьютером носитель 16 может пониматься как включающий в себя один или более считываемых компьютером носителей различных форм, в различных примерах.

[0039] Интерфейс 28 ввода из устройства-адресата 14 принимает информацию от считываемого компьютером носителя 16. Информация считываемого компьютером носителя 16 может включать в себя информацию синтаксиса, определенную видео кодером 20, которая также используется видео декодером 30, которая включает в себя элементы синтаксиса, которые описывают характеристики и/или обработку блоков и других закодированных единиц, например, GOP. Устройство 32 отображения отображает декодированные видео данные пользователю, и может содержать любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED), или другой тип устройства отображения.

[0040] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту кодирования видео, такому как стандарт высокоэффективного кодирования видео (HEVC), развивающемуся в настоящее время, и могут соответствовать Тестовой Модели HEVC (HM). Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким как стандарт ITU-T H.264, альтернативно названный MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), или расширениям таких стандартов. Способы настоящего описания, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры стандартов кодирования видео включают в себя MPEG-2 и ITU-T H.263. Хотя не показано на фиг. 1, в некоторых аспектах видео кодер 20 и видео декодер 30 могут каждый интегрироваться с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексоров-демультиплексоров), или другое аппаратное обеспечение и программное обеспечение, чтобы выполнять кодирование как аудио так и видео в общем потоке данных или отдельных потоках данных. Если применимо, блоки MUX-DEMUX могут соответствовать протоколу ITU H.223 мультиплексора, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).

[0041] Стандарт ITU-T H.264/MPEG-4 (AVC) был сформулирован Группой экспертов по кодированию видео ITU-T (VCEG) вместе с ISO/IEC группой экспертов по движущимся изображениям (MPEG) как продукт коллективного товарищества, известного как объединенная команда видео (JVT). В некоторых аспектах способы, описанные в этом раскрытии, могут быть применены к устройствам, которые в целом соответствуют стандарту H.264. Стандарт H.264 описан в Рекомендации H.264 ITU-T, Усовершенствованное кодирование видео для родовых аудиовизуальных услуг, Группой по изучению ITU-T, и датированной мартом 2005, который может быть упомянут здесь как стандарт H.264 или спецификация H.264, или стандарт или спецификация H.264/AVC. Объединенная команда видео (JVT) продолжает работать над расширениями к H.264/MPEG-4 AVC.

[0042] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратных средств или любых их комбинаций. Когда способы реализованы частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения в подходящем невременном считываемом компьютером носителе и выполнять инструкции в аппаратном обеспечении, использующем один или более процессоров, чтобы выполнить способы настоящего описания. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрированным как часть объединенного кодера/декодера (кодека) в соответствующем устройстве.

[0043] JCT-VC работает над развитием стандарта HEVC. Усилия по стандартизации HEVC основаны на развивающейся модели устройства кодирования видео, называемой Тестовой Моделью HEVC (HM). HM предполагает несколько дополнительных возможностей устройств кодирования видео относительно существующих устройств согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM может обеспечить целых тридцать три режима кодирования с внутренним предсказанием.

[0044] В целом рабочая модель HM описывает, что видео кадр или картинка могут быть разделены на последовательность блоков дерева или наибольших единиц кодирования (LCU), которые включают в себя выборки как яркости так и цветности. Данные синтаксиса в пределах потока битов могут определить размер для LCU, которая является наибольшей единицей кодирования в терминах количества пикселей. Вырезка включает в себя несколько последовательных блоков дерева в порядке кодирования. Видео кадр или картинка могут быть разделены на одну или более вырезок. Каждый блок дерева может быть разделен на единицы кодирования (CU) согласно квадродереву. В целом структура данных квадродерева включает в себя один узел в CU, с корневым узлом, соответствующим блоку дерева. Если CU разделена на четыре суб-CU, то узел, соответствующий этой CU, включает в себя четыре листовых (концевых) узла, каждый из которых соответствует одной из суб-CU.

[0045] Каждый узел структуры данных квадродерева может обеспечить данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывающий, разделена ли CU, соответствующая этому узлу, на суб-CU. Элементы синтаксиса для CU могут быть определены рекурсивно, и могут зависеть от того, разделена ли CU в суб-CU. Если CU не разделена далее, она называется как листовая CU. В этом раскрытии четыре суб-CU листовой CU будут также называться как листовые CU, даже если не будет явного разделения первоначальной листовой CU. Например, если CU размером 16x16 не будет разделена далее, то четыре суб-CU 8x8 будут также упоминаться как листовые CU, хотя CU 16x16 никогда не разделялась.

[0046] CU имеет аналогичную цель, что и макроблок стандарта H.264, за исключением того, что CU не имеет различия в размерах. Например, блок дерева может быть разделен на четыре дочерних узла (также называемых суб-CU), и каждый дочерний узел может в свою очередь быть родительским узлом и быть разделен еще на четыре дочерних узла. Заключительный неразделенный дочерний узел, называемый листовой узел квадродерева, содержит узел кодирования, также называемый листовой CU. Данные синтаксиса, ассоциированные с кодированным потоком битов, могут определить максимальное количество раз, сколько блок дерева может быть разделен, называемым максимальной глубиной CU, и может также определить минимальный размер узлов кодирования. Соответственно, поток битов может также определить наименьшую единицу кодирования (SCU). Настоящее описание использует термин "блок", чтобы ссылаться на любой CU, PU, или TU, в контексте HEVC, или подобные структуры данных в контексте других стандартов (например, макроблоки и их суб-блоки в H.264/AVC).

[0047] CU включает в себя узел кодирования и единицы предсказания (PU) и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен быть квадратным по форме. Размер CU может ранжироваться от 8x8 пикселей до размера блока дерева с максимум 64x64 пикселей или больше. Каждая CU может содержать одну или более PU и одну или более TU. Данные синтаксиса, ассоциированные с CU, могут описывать, например, сегментирование CU в одну или более PU. Режимы сегментирования могут отличаться между тем, является ли CU кодированной в режиме пропуска или прямом режиме, кодированной в режиме внутреннего предсказания, или кодированной в режиме внешнего предсказания. PU могут быть сегментированы, чтобы быть неквадратными по форме. Данные синтаксиса, ассоциированные с CU, могут также описать, например, сегментирование CU в одну или более TU согласно квадродереву. TU может быть квадратной или неквадратной (например, прямоугольной) по форме.

[0048] Стандарт HEVC обеспечивает преобразования согласно единицам TU, которые могут быть различными для различных CU. TU типично имеют размеры на основании размеров PU в пределах заданной CU, определенной для сегментированной LCU, хотя это может не всегда иметь место. Единицы TU типично имеют один и тот же размер или меньший чем единицы PU. В некоторых примерах остаточные выборки, соответствующие CU, могут быть подразделены на меньшие блоки, используя структуру квадродерева, известную как "остаточное квадродерево" (RQT). Листовые узлы RQT могут упоминаться как единицы преобразования (TU). Значения пиксельной разности, ассоциированные с единицами TU, могут быть преобразованы, чтобы сформировать коэффициенты преобразования, которые могут быть квантованы.

[0049] Листовая CU может включать в себя одну или более единиц предсказания (единиц PU). В целом PU представляет пространственную область, соответствующую всем или части соответствующей CU, и может включать в себя данные для того, чтобы извлечь опорную выборку для этой PU. Кроме того, PU включает в себя данные, относящиеся к предсказанию. Например, когда PU является кодированной во внутреннем режиме, данные для этой PU могут быть включены в остаточное квадродерево (RQT), которое может включать в себя данные, описывающие режим внутреннего предсказания для TU, соответствующей этой PU. В качестве другого примера, когда PU является кодированный во внешнем режиме, PU может включать в себя данные, определяющие один или более векторов движения для этой PU. Данные, определяющие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, пиксельная точность в одну четверть или пиксельная точность в одну восьмую), опорную картинку, на которую вектор движения указывает, и/или список опорных картинок (например, Список 0, Список 1, или Список C) для вектора движения.

[0050] Листовая CU, имеющая одну или более единиц PU, может также включать в себя одну или более единиц преобразования (единиц TU). Единицы преобразования могут быть заданы, используя RQT (также называемую структурой квадродерева TU), как описано выше. Например, флаг разделения может указывать, разделена ли листовая CU на четыре единицы преобразования. Затем, каждая единица преобразования может быть далее разделена в последующие единицы суб-TU. Когда TU не разделяется далее, она может упоминаться как листовая TU. В целом для внутреннего кодирования, все листовые TU, принадлежащий листовой CU, совместно использует один и тот же режим внутреннего предсказания. Таким образом, один и тот же режим внутреннего предсказания в целом применяется, чтобы вычислить предсказанные значения для всех единиц TU листовой CU. Для внутреннего кодирования видео кодер может вычислить остаточное значение для каждой листовой TU, используя режим внутреннего предсказания как разность между частью упомянутой CU, соответствующей этой TU и первоначальным блоком. TU не обязательно ограничена размером PU. Таким образом, единицы TU может быть большими или меньшими чем PU. Для внутреннего кодирования PU может быть совместно расположена с соответствующей листовой TU для одной и той же CU. В некоторых примерах максимальный размер листовой TU может соответствовать размеру соответствующей листовой CU.

[0051] Кроме того, единицы TU листовых CU также могут быть ассоциированы с соответствующими структурами данных квадродерева, называемыми остаточными квадродеревьями (RQTs). Таким образом, листовая CU может включать в себя квадродерево, указывающее, как листовая CU сегментирована в единицы TU. Корневой узел квадродерева TU в целом соответствует листовой CU, в то время как корневой узел квадродерева CU в целом соответствует блоку дерева (или LCU). Единицы TU RQT, которые не разделены, упоминается как листовые TU. В целом настоящее описание использует термины CU и TU, чтобы ссылаться на листовые CU и листовые TU, соответственно, если не отмечено иначе.

[0052] Видео последовательность типично включает в себя последовательность видео кадров или картинок. Группа картинок (GOP) в целом содержит последовательность из одной или более картинок видео. GOP может включать в себя данные синтаксиса в заголовке GOP, заголовке одной или более картинок, или в другом месте, которое описывает количество картинок, включенных в GOP. Каждая вырезка картинки может включать в себя данные синтаксиса вырезки, которые описывают режим кодирования для соответствующей вырезки. Видео кодер 20 типично оперирует над видео блоками в индивидуальных видео вырезках, чтобы закодировать видео данные. Видео блок может соответствовать узлу кодирования в пределах CU. Видео блоки могут иметь фиксированный или переменный размеры и могут отличаться по размеру согласно указанному стандарту кодирования.

[0053] В качестве примера, HM поддерживает предсказание в различных размерах PU. Предполагая, что размер конкретной CU равен 2Nx2N, HM поддерживает внутреннее предсказание в размерах PU равных 2Nx2N или NxN, и внешнее предсказание в симметричных размерах PU равных 2Nx2N, 2NxN, Nx2N, или NxN. HM также поддерживает асимметричное сегментирование для внешнего предсказания в размерах PU, равных 2NxnU, 2NxnD, nLx2N, и nRx2N. В асимметричном сегментировании одно направление CU не сегментировано, в то время как другое направление сегментировано в 25% и 75%. Часть CU, соответствующая 25%-ому сегментированию, обозначена “n”, сопровождаемая индикацией «сверху», "внизу", "слева", или "справа". Таким образом, например, “2NxnU” относится к CU размером 2Nx2N, которая сегментирована горизонтально с PU размером 2Nx0.5N сверху и PU размером 2Nx1.5N внизу.

[0054] В настоящем раскрытии "NxN" и "N на N" могут использоваться взаимозаменяемо, чтобы относиться к измерениям в пикселях блока в терминах вертикальных и горизонтальных измерений, например, 16x16 пикселей или 16 на 16 пикселей. Обычно блок 16x16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогично, блок NxN обычно имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целочисленное значение. Пиксели в блоке могут быть скомпонованы в рядах и колонках. Кроме того, блоки не обязательно должны иметь то же количество пикселей в горизонтальном направлении, как в вертикальном направлении. Например, блоки могут содержать NxM пикселей, где М не обязательно равно N.

[0055] После кодирования с внутренним предсказанием или с внешним предсказанием, используя единицы PU в CU, видео кодер 20 может вычислить остаточные данные для единиц TU в этой CU. Единицы PU могут содержать данные синтаксиса, описывающие способ или режим генерирования предсказывающих пиксельных данных в пространственной области (также называемой пиксельной областью), и единицы TU могут содержать коэффициенты в области преобразования после применения преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлет преобразования, или концептуально подобного преобразования к остаточным видео данным. Остаточные данные могут соответствовать пиксельным разностям между пикселями не кодированной картинки и значениями предсказания, соответствующими единицам PU. Видео кодер 20 может формировать единицы TU, включающие в себя остаточные данные для CU, и затем преобразовать эти единицы TU, чтобы сформировать коэффициенты преобразования для CU.

[0056] После любого преобразования, чтобы сформировать коэффициенты преобразования, видео кодер 20 может выполнить квантование коэффициентов преобразования. Квантование в целом относится к процессу, в котором коэффициенты преобразования квантуются, чтобы возможно уменьшить объем данных, использованных для представления коэффициентов, обеспечивая дальнейшее сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, значение в n битов может быть округлено в меньшую сторону до m-битового значения во время квантования, где n больше чем m.

[0057] Вслед за квантованием видео кодер может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающий в себя квантованные коэффициенты преобразования. Сканирование может быть разработано, чтобы поместить коэффициенты с более высокой энергией (и поэтому более низкой частотой) в начале массива, и поместить коэффициенты с более низкой энергией (и поэтому более высокой частотой) в конце массива. В некоторых примерах видео кодер 20 может использовать заранее заданный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования, чтобы сформировать преобразованный в последовательную форму вектор, который может быть энтропийно кодирован. В других примерах видео кодер 20 может выполнить адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы сформировать одномерный вектор, видео кодер 20 может энтропийно кодировать одномерный вектор, например. Согласно контекстно-адаптивному кодированию с переменной длиной кода (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), основанному на синтаксисе контекстно-адаптивному двоичному арифметическому кодированию (SBAC), энтропийному кодированию с разделением интервала вероятности (PIPE) или другому способу энтропийного кодирования. Видео кодер 20 может также энтропийно кодировать элементы синтаксиса, ассоциированные с закодированными видео данными для использования видео декодером 30 при декодировании видео данных.

[0058] Чтобы выполнить CABAC, видео кодер 20 может назначить контекст в пределах контекстной модели на символ, который должен быть передан. Контекст может относится к тому, например, являются ли соседние значения символа ненулевыми или нет. Чтобы выполнить CAVLC, видео кодер 20 может выбрать код с переменной длиной слова для символа, который должен быть передан. Кодовые слова в VLC могут быть построены таким образом, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достигнуть экономии битов, например, используя кодовые слова равной длины для каждого символа, который должен быть передан. Определение вероятности может быть основано на контексте, назначенном на символ.

[0059] В целом настоящее описание описывает различные способы, которые могут быть выполнены устройством-источником 12, устройством-адресатом 14, видео кодером 20, видео декодером 30 или другими устройствами, вовлеченными в обработку, транспортировку, хранение, или поиск данных видео. В целях примера способы настоящего описания описаны относительно видео кодера 20 и видео декодера 30. Однако, другие устройства, такие как блоки предварительной обработки или постобработки видео, блоки инкапсуляции, блоки декапсуляции, мультиплексоры, демультиплексоры, элементы сети с поддержкой носителей (MANE), или другие устройства, относящиеся к обработке видео данных, могут быть также сконфигурированы любыми или всеми из этих способов. Различные способы могут быть выполнены по одиночке или вместе в любой комбинации.

[0060] Настоящее описание вводит набор параметров диапазона размерности, который может быть кодирован видео кодером 20 и видео декодером 30. Набор параметров диапазона размерности может определить, для некоторого потока битов, диапазон уровней масштабируемости в каждой масштабируемой размерности. Например, набор параметров диапазона размерности может задать диапазоны для любого или всех из пространственной размерности, временной размерности, размерности SNR/качество, размерности вида, размерности глубины в битах цвета, размерности формата выборки цветности, или других таких масштабируемых размерностей. Набор параметров диапазона размерности может быть применимым ко всему потоку битов. Другими словами, видео кодер 20 может кодировать все видео данные потока битов таким образом, что закодированные видео данные соответствуют данным, сигнализированным в наборе параметров диапазона размерности, в то время как видео декодер 30 может декодировать все закодированные видео данные потока битов, на основании, по меньшей мере частично, данных, сигнализированных в наборе параметров диапазона размерности.

[0061] Характеристики блока NAL, принадлежащего конкретной масштабируемой размерности, могут изменяться или могут не изменяться в потоке битов, как указано данными набора параметров диапазона размерности. Например, если конкретная характеристика масштабируемой размерности не изменяется, и поток битов не является масштабируемым в этой конкретной масштабируемой размерности, эта характеристика не должна быть сигнализирована в заголовке блока NAL.

[0062] Если характеристика масштабируемой размерности может изменяться и иметь N возможных значений, как указано набором параметра диапазона размерности, конкретное количество битов может быть распределено в заголовке блока NAL, чтобы представить характеристику этой масштабируемой размерности. Например, принимая, что N является целым числом, ceil(log2 (N)) битов могут быть распределены в пределах заголовка блока NAL, чтобы представить характеристику, где ceil(X) возвращает "верхнее значение", или округленное (к следующему самому близкому целому числу, предполагая, что возвращенное значение не является целым числом), для X.

[0063] Видео кодер 20 может совместно сигнализировать, и видео декодер 30 может совместно извлекать, все характеристики всех возможных размерностей в заголовке блока NAL в качестве набора характеристик. Этот набор характеристик может быть отображен на все характеристики всех размерностей.

[0064] Характеристики размерности могут меняться. Вместо того, чтобы сигнализировать реальные значения масштабируемых размерностей, в некоторых примерах видео кодер 20 и видео декодер 30 могут кодировать значения индекса для этих реальных значений масштабируемых размерностей. Например, вместо того, чтобы сигнализировать значения view_id для видов размерности вида, видео кодер 20 и видео декодер 30 могут кодировать значения индекса порядка вида, которые могут быть отображены на соответствующие значения view_id с помощью отдельной таблицы отображения. В качестве другого примера, масштабируемая размерность глубины в битах потока битов может включать в себя 8-битовые, 10-битовые и 12-битовые сигналы. Вместо того, чтобы сигнализировать "8", "10" и “12” в заголовке блока NAL для таких глубин в битах цвета, видео кодер 20 и видео декодер 30 могут использовать значения "0", "1", и "2", которые снова могут быть отображены на "8", "10", и "12", соответственно. Соответственно, видео кодер 20 и видео декодер 30 могут быть сконфигурированы, чтобы закодировать индекс (указатель) на таблицу отображения значений для потока битов. Индекс на таблицу отображения значений может быть частью набора параметров диапазона размерности, или может быть кодирован как отдельный набор данных. Такая таблица отображения может быть применимой к конкретной кодированной видео последовательности или ко всему потоку битов.

[0065] Настоящее описание также описывает способы, которые могут быть применимыми для извлечения суб-потока битов. Когда поток битов включает в себя одну или более масштабируемых размерностей, некоторые устройства-адресаты могут запрашивать различные уровни конкретной размерности, тогда как другие устройства-адресаты могут только запрашивать единственный уровень конкретной размерности, например, базовый уровень. Элемент сети с поддержкой носителей (MANE) в сети (не показан на фиг. 1, но может в целом соответствовать устройству вдоль соединения 16) может выполнить извлечение суб-потока битов, чтобы выдать запрошенные данные различным устройствам назначения.

[0066] Например, размерность вида может включать в себя множественные различные виды. Одно устройство-адресат может быть способным к многоперспективному трехмерному воспроизведению, и может поэтому запрашивать все доступные виды. MANE может, соответственно, выдать суб-поток битов (или полный поток битов), включающий в себя все доступные виды, в это устройство-адресат. Другое устройство-адресат может быть способным только к стереоскопическому трехмерному воспроизведению, таким образом что устройство-адресат только запрашивает два вида. Соответственно, вместо того, чтобы посылать все виды в это устройство-адресат, MANE может извлечь суб-поток битов, имеющий только два вида, и послать этот суб-поток битов в устройство-адресат.

[0067] В соответствии со способами настоящего описания, устройство, которое выполняет извлечение суб-потока битов, такое как MANE, может изменить набор параметров диапазона размерности и, если предоставлен, индекс на таблицу отображения значений таким образом, что заголовки блока NAL блоков NAL в извлеченном суб-потоке битов потребляют меньше битов, чем первоначальные заголовки блока NAL соответствующих блоков NAL в полном потоке битов. Например, в случае, указанном выше, где устройство-адресат способно только к стереоскопическому трехмерному воспроизведению, и принимает виды, имеющие, например, индексы “1” и “7” порядка видов, отображенные на view_ids 32 и 159, MANE может настроить значения индексов порядка видов равными “0” и "1", соответственно, и настроить таблицу отображения, чтобы отобразить индекс "0" порядка видов на view_id 32 и индекс "1" порядка видов на view_id 159.

[0068] Таблица 1 ниже обеспечивает примерный набор синтаксиса для набора параметров диапазона размерности:

ТАБЛИЦА 1 dim_range_parameter_set_data( ) { C Дескриптор dim_parameter_set_id u(16) temporal_id_cnt_bit u(3) chroma_format_cnt_bit 0 u(2) bit_depth_cnt_bit u(3) dependency_cnt_bit u(2) quality_cnt_bit u(3) view_cnt_bit u(10) depth_present_cnt_bit u(1) dim_cnt_table() dim_index_2_value_table() }

[0069] Примерная семантика для различных элементов синтаксиса Таблицы 1 описана ниже. Dim_parameter_set_id может указывать идентификационную информацию набора параметров диапазона размерности. В некоторых примерах только одному набору параметров размерности разрешено быть активным во время декодирования всей многоуровневой (масштабируемой) закодированной видео последовательности. Параметр диапазона размерности может использоваться для множественных закодированных последовательностей видео в потоке битов, если эти множественные закодированные видео последовательности совместно используют один и тот же dim_parameter_set_id. Набор параметров диапазона размерности может быть выше в иерархии набора параметров, чем набор параметров последовательности. Кроме того, данные могут быть закодированы в SPS, который идентифицирует соответствующий набор параметров диапазона размерности.

[0070] Temporal_level_cnt_bit может указывать количество битов, используемых для сигнализации temporal_level_cnt, который объяснен со ссылками на Таблицу 2 ниже. В некоторых примерах, когда это значение равно 0, временная масштабируемость не поддерживается, и каждый блок NAL VCL логически выводится, чтобы иметь temporal_id, равное 0. Количество/подсчет временных уровней, поддерживаемых в этой закодированной видео последовательности, как указано значением temporal_level_cnt (объяснено со ссылками на Таблицу 2 ниже), может изменяться от 0 до (2<<temporal_level_cnt_bit-1), включительно, где “<<” представляет оператор смещения битов влево.

[0071] Chroma_format_cnt_bit может указывать количество битов, используемых для сигнализации chroma_format_cnt, которое объяснено со ссылками на Таблицу 2 ниже. В некоторых примерах, когда это значение равно 0, не поддерживается никакая масштабируемость формата выборки цветности, и каждый блок NAL VCL логически выводится, чтобы иметь формат дискретизации 4:2:0 или 4:4:4, в зависимости от профиля. Количество/счет форматов выборки цветности, поддержанных в этой закодированной видео последовательности, указанной значением chroma_format_cnt (объясненным со ссылками на Таблицу 2 ниже), колеблется от 0 до (2 <<chroma_format_cnt_bit-1), включительно.

[0072] Bit_depth_cnt_bit может указывать количество битов, используемых для сигнал bit_depth_cnt, который объяснен со ссылками на Таблицу 2 ниже. В некоторых примерах, когда значение bit_depth_cnt_bit равно 0, не поддерживается масштабируемость глубины в битах цветности, и каждый блок NAL VCL логически выводится, чтобы быть закодированным как 8-битовый или 10-битовый или 12-битовый, в зависимости от профиля. Количество/подсчет глубины в битах, поддерживаемой в этой закодированной видео последовательности, указанной значением bit_depth_cnt, может изменяться от 0 до (2<<bit_depth_cnt-1), включительно.

[0073] Dependency_cnt_bit может указывать количество битов, используемых для сигнализации dependency_layer_cnt, как объяснено со ссылками на Таблицу 2 ниже. В некоторых примерах, когда значение dependency_cnt_bit равно 0, пространственная масштабируемость или CGS не поддерживается, и каждый блок NAL VCL логически выводится, чтобы иметь dependency_id равным 0. Количество/подсчет уровней зависимости, поддерживаемых в этой закодированной видео последовательности, может изменяться от 0 до (2<<dependency_layer_cnt_bit-1), включительно.

[0074] Quality_cnt_bit может указывать количество битов, используемых для сигнализации quality_level_cnt, который объяснен со ссылками на Таблицу 2 ниже. В некоторых примерах, когда значение quality_cnt_bit равно 0, масштабируемость качество/SNR не поддерживается, и каждый блок NAL VCL логически выводится, чтобы иметь quality_id равным 0. Количество/подсчет уровней качества, поддерживаемых в этой закодированной видео последовательности, может изменяться от 0 до (2 <<quality_cnt_bit-1), включительно.

[0075] View_cnt_bit может указывать количество битов, используемых для сигнализации view_cnt, который объяснен со ссылками на Таблицу 2 ниже. В некоторых примерах, когда значение view_cnt_bit равно 0, поддерживается только один вид, и каждый блок NAL VCL логически выводится, чтобы иметь view_id и индекс порядка видов, равными 0. Количество/подсчет видов, поддерживаемых в этой закодированной видео последовательности, может изменяться от 0 до (2<<view_cnt_bit-1), включительно.

[0076] Depth_present_cnt_bit, равный 0, может указывать, что данные глубины не включены в поток битов. Значение depth_present_cnt_bit, являющееся равным 1, может указывать, что блоки VCL NAL глубины включены в поток битов, и может быть один бит в заголовке блока NAL, указывающий, является ли блок NAL компонентом вида текстуры, или компонентом вида глубины.

[0077] Таблица 1 выше включает в себя элемент dim_cnt_table (). Таблица 2 ниже представляет один пример набора элементов синтаксиса для dim_cnt_table () Таблицы 1. В целом видео кодер 20 может сигнализировать, и видео декодер 30 может принять, только некоторые элементы синтаксиса Таблицы 2, как указано значениями элементов синтаксиса, описанных выше со ссылками на Таблицу 1.

ТАБЛИЦА 2 dim_cnt_table ( ) { C Дескриптор if (n=temporal_id_cnt_bit) temporal_level_cnt u(n) if (n=chroma_format_cnt_bit) 0 chroma_format_cnt u(n) if (n=bit_depth_cnt_bit) bit_depth_cnt u(n) if (n=dependency_cnt_bit) dependency_layer_cnt u(n) if (n=quality_cnt_bit) quality_level_cnt u(n) if (n=view_cnt_bit) view_cnt u(n) if (n=depth_present_cnt_bit) depth_present_cnt u(n) }

[0078] Семантика примера для элементов синтаксиса Таблицы 2 описана ниже. Temporal_level_cnt может задавать количество временных уровней, поддерживаемых в кодированной видео последовательности. Значение temporal_level_cnt может быть логически выведено равным 1, если не присутствует. Присутствует ли temporal_level_cnt, может быть определено на основании значения temporal_level_cnt_bit Таблицы 1.

[0079] Chroma_format_cnt может задавать количество различных форматов выборки цветности, поддерживаемых в кодированной видео последовательности. Значение chroma_format_cnt может быть логически выведено равным 1, если не присутствует. Присутствует ли chroma_format_cnt, может быть определено на основании значения chroma_format_cnt_bit Таблицы 1.

[0080] Bit_depth_cnt может задавать количество различных глубин в битах цвета, поддерживаемых в кодированной видео последовательности. Значение bit_depth_cnt может быть логически выведено равным 1, если не присутствует. Присутствует ли bit_depth_cnt, может быть определено на основании значения bit_depth_cnt_bit Таблицы 1.

[0081] Dependency_layer_cnt может задавать количество уровней зависимости, поддерживаемых в кодированной видео последовательности. Значение dependency_layer_cnt может быть логически выведено равным 1, если не присутствует. Присутствует ли dependency_layer_cnt, может быть определено на основании значения dependency_cnt_bit Таблицы 1.

[0082] Quality_level_cnt может задавать максимальное количество уровней качества, поддерживаемых в каждом уровне зависимости в кодированной видео последовательности. Например, уровень общего промежуточного формата в одну четверть (qcif) может содержать три уровня качества и другой уровень общего промежуточного формата (cif), может содержать один уровень качества; quality_cnt в этом случае может быть установлен равным 3. Значение quality_level_cnt может быть логически выведено равным 1, если не присутствует. Присутствует ли quality_level_cnt, может быть определено на основании значения quality_cnt_bit Таблицы 1.

[0083] View_cnt может задавать количество видов, включенных в закодированную видео последовательность. Значение view_cnt может быть логически выведено равным 1, если не присутствует. Присутствует ли view_cnt, может быть определено на основании значения view_cnt_bit Таблицы 1.

[0084] Depth_present_cnt может задавать количество различных типов компонентов подвида в компоненте вида, насколько этот формат множества видов плюс глубина имеет отношение. Значение depth_present_cnt может быть логически выведено равным 1, если не присутствует. Присутствует ли depth_present_cnt, может быть определено на основании значения depth_present_cnt_bit Таблицы 1. Концепции этих способов могут быть далее расширены для любого формата видео 3D, который содержит один или более вспомогательных картинок для каждого компонента вида, или даже многоуровневую глубину.

[0085] В некоторых примерах элементы синтаксиса, описанные выше, могут быть специфичными для конкретного компонента, такими как компонент светимости (яркости) или компонент цветности (насыщенности цвета). Кроме того, отдельные значения могут быть сигнализированы для яркости и для цветности, например, значения глубины в битах.

[0086] Элементы синтаксиса для масштабируемых размерностей, таких как те, что показаны в Таблице 2 выше, в целом соответствуют одной из двух категорий. В первой категории, которая может включать в себя, например, tamporal_id, quality_id и dependency_id, сигнализированное значение индекса и значение для соответствующей масштабируемой размерности эквивалентны. Например, если temporal_level_cnt равно 3, значения temporal_id могут изменяться от 0 до 2, включительно во всех блоках NAL VCL.

[0087] В другой категории, которая может включать в себя, например, размерность вида и размерность глубины в битах цвета, значение точных характеристик, таких как view_id и bit_depth, типично потребляет больше битов чем индекс. Например, view_cnt может быть установлен равным 3, и три вида могут иметь значения view_id, равные 4, 6, 8; если 4, 6 и 8 должны быть сигнализированы в блоке NAL, вплоть до 4 битов могут быть необходимы. С другой стороны, если только 0, 1, 2 должны быть сообщены, необходимы только 2 бита. Таким образом индекс на таблицу отображения значений может быть сигнализирован, чтобы определить реальные характеристики (которые являются более значимыми для приложений) из значений индекса (которые являются более эффективными), для масштабируемой размерности, принадлежащей этой категории. Таблица 3 ниже представляет пример синтаксиса для индекса на таблицу отображения значений.

ТАБЛИЦА 3 dim_index_2_value_table ( ) { C Дескриптор if (chroma_format_cnt) 0 for (i=0; i<chroma_format_cnt; i++) chroma_format_idc[i] 0 ue(v) if (bit_depth_cnt) for (i=0; i<chroma_format_cnt; i++) bit_depth_minus8[i] ue(v) if (view_cnt) for (i=0; i<view_cnt; i++) view_id[i] ue(v) }

[0088] Примерная семантика для индекса на таблицу отображения значений Таблицы 3 описана ниже. Chroma_format_idc[i] может задавать выборки цветности относительно выборки яркости в блоках NAL VCL с индексом цветности, равным i. Значение chroma_format_idc может быть в диапазоне от 0 до 3, включительно. Когда chroma_format_idc не присутствует, значение chroma_format_idc может быть логически выведено равным 1 (формат цветности 4:2:0). Значение chroma_format_idc может быть отображено на формат цветности, как показано в Таблице 4:

ТАБЛИЦА 4 chroma_format_idc Формат цветности SubWidthC SubHeightC 0 4:2:0 2 2 2 4:4:4 1 1 1 4:0:0 - - 3 4:2:2 2 1

[0089] Обращаясь снова к Таблице 3, bit_depth_minus8[i]плюс 8 может задавать глубину в битах выборок компонента цвета в блоках NAL VCL с индекса глубины в битах, равного i. View_id [i] может задавать идентификатор вида блока NAL с индексом вида, равным i.

[0090] Альтернативно, в каждой размерности значение может быть только сигнализировано, если отсчет больше чем 1. В случае, если отсчет равен 1, значение, соответствующее индексу 0, может быть логически выведено с помощью профиля, а не явно сигнализировано. Таблица 5 ниже обеспечивает примерный набор данных синтаксиса для этого примера, где значения сигнализированы, только если отсчет больше чем 1:

ТАБЛИЦА 5 dim_index_2_value_table ( ) { C Дескриптор if (chroma_format_cnt>1) 0 for (i=1; i<chroma_format_cnt; i++) chroma_format_idc[i] 0 ue(v) if (bit_depth_cnt>1) for (i=1; i<chroma_format_cnt; i++) bit_depth_minus8[i] ue(v) if (view_cnt>1) for (i=1; i<view_cnt; i++) view_id[i] ue(v) }

[0091] Таблица 6 ниже обеспечивает примерный набор синтаксиса для набора параметров последовательности (SPS) в соответствии со способами настоящего описания. Некоторые элементы синтаксиса могут остаться теми же самыми как в SPS в HEVC WD7. Семантика для этих элементов синтаксиса может также остаться такой же, как в SPS в HEVC WD7. Примеры семантики для добавленных или модифицированных элементов синтаксиса примера Таблицы 6 описаны ниже.

ТАБЛИЦА 6 seq_parameter_set_data( ) { C Дескриптор profile_idc 0 u(8) constraint_set0_flag 0 u(1) constraint_set1_flag 0 u(1) constraint_set2_flag 0 u(1) constraint_set3_flag 0 u(1) constraint_set4_flag 0 u(1) reserved_zero_3bits/*equal to 0 */ 0 u(3) level_idc 0 u(8) dim_parameter_set_id 0 u(16) seq_parameter_set_id 0 ue(v) pic_width_in_mbs_minus1 0 ue(v) pic_height_in_map_units_minus1 0 ue(v) frame_cropping_flag 0 u(1) if(frame_cropping_flag) { frame_crop_left_offset 0 ue(v) frame_crop_right_offset 0 ue(v) frame_crop_top_offset 0 ue(v) frame_crop_bottom_offset 0 ue(v) } if(function_chroma_idc(profile_idc)) chroma_format_idx 0 ue(v) if (function_view(profile_idc)) sps_view_extension() if(function_bit_depth(profile_idc)) bit_depth_idx 0 ue(v) vui_parameters_present_flag 0 u(1) if(vui_parameters_present_flag) vui_parameters( ) 0 }

[0092] В примере SPS в Таблице 6 добавленные или измененные элементы синтаксиса, относительно SPS в HEVC WD7, включают в себя dim_parameter_set_id, chroma_format_idx, sps_view_extension (), и bit_depth_idx. Функция function_chroma_idc (profile_idc) может быть определена следующим образом: function_chroma_idc (profile_idc) возвращает 0, если такой profile_idc имеет формат выборки цветности по умолчанию, например, 4:2:0, и возвращает 1 иначе. Функция function_view (profile_idc) может быть определена следующим образом: function_view (profile_idc) возвращает 0, если такой profile_idc относится к кодированию множественных видов, и возвращает 1 иначе. Таблица синтаксиса Sps_view_extension () может содержать зависимость видов, и другую информацию, относящуюся к кодированию множественных видов видео или видео 3D. Функция function_bit_depth (profile_idc) может быть определена следующим образом: function_bit_depth (profile_idc) возвращает 0, если такой profile_idc закодирован с глубиной в битах выше чем 8 битов, и возвращает 1 иначе.

[0093] Таблица 7 ниже обеспечивает примерный набор синтаксиса для заголовка блока уровня абстракции сети (NAL) в соответствии со способами настоящего описания. Некоторые элементы синтаксиса могут остаться такими же как в заголовке блока NAL в HEVC WD7. Семантика для этих элементов синтаксиса может также остаться такой же как в заголовке блока NAL в HEVC WD7. Примеры семантики для добавленных или модифицированных элементов синтаксиса примера Таблицы 7 описаны ниже.

ТАБЛИЦА 7 nal_unit(NumBytesInNALunit) { Дескриптор forbidden_zero_bit f(1) nal_flag u(1) nal_unit_type u(6) NumBytesInRBSP=0 nalUnitHeaderBytes=1 m=temporal_id_cnt_bit+
chroma_format_cnt_bit+bit_depth_cnt_bit+ dependency_cnt_bit+quality_cnt_bit+view_cnt_bit+depth_present_cnt_bit
nalUnitScalableCharSet u(m) r=((m+7)>>3)<<3-m reserved_bits u(r) nalUnitHeaderBytes+=(m+7)>>3 for(i=nalUnitHeaderBytes; i<NumBytesInNALunit; i++) { if(i+2<NumBytesInNALunit && next_bits(24)= = 0x000003) { rbsp_byte[NumBytesInRBSP++] b(8) rbsp_byte[NumBytesInRBSP++] b(8) i+=2 emulation_prevention_three_byte/*equal to 0x03 */ f(8) } else rbsp_byte[NumBytesInRBSP++] b(8) } }

[0094] В примере заголовка блока NAL Таблицы 7 добавленные или измененные элементы синтаксиса, относительно HEVC WD7, включают в себя nalUnitScalableCharSet и reserved_bits, так же как вычисления для m, r и nalUnitHeaderBytes. NalUnitScalableCharSet может задавать масштабируемый набор характеристик блока NAL. Биты в nalUnitScalableCharSet могут быть разделены на различные размерности на основании набора параметров диапазона размерности, например, из Таблицы 1.

[0095] В одном примере видео кодер 20 и видео декодер 30 могут вычислить значение для m как:

m=temporal_level_cnt_bit (2)+chroma_format_cnt_bit (0)+bit_depth_cnt_bit (0)+dependency_cnt_bit (1)+quality_cnt_plus1_bit (0)+view_cnt_plut1_bit (1)

[0096] В этом примере m может быть равно 4 битам. Поток битов для этого примера может представить стереоскопический (два вида) контент с, например, различными пространственными уровнями для каждого вида, и поток битов может иметь до трех временных уровней.

[0097] В другом примере видео кодер 20 и видео декодер 30 могут вычислить значение для m как:

m=temporal_level_cnt_bit (3)+chroma_format_cnt_bit (0)+bit_depth_cnt_bit (0)+dependency_cnt_bit (0)+quality_cnt_plus1_bit (0)+view_cnt_plut1_bit (1)

[0098] В этом примере m может быть равно 4 битам. Это может представить поток битов для типичных данных множественных видов, например, имея семь видов с временной масштабируемостью.

[0099] В другом примере видео кодер 20 и видео декодер 30 могут вычислить значение для m как:

m=temporal_level_cnt_bit (1)+chroma_format_cnt_bit (0)+bit_depth_cnt_bit (1)+dependency_cnt_bit (0)+quality_cnt_plus1_bit (0)+view_cnt_plut1_bit (0)

[0100] Этот пример может представить поток битов, который закодирован в IBPBP (где I соответствует I-кадру, B соответствует B-кадру, и P соответствует кадру P), с масштабируемостью глубины в битах от 8-битов до 10-битов. В этом примере m может быть равно 2 битам.

[0101] Набор параметров диапазона размерности может включать в себя отображение представляющего элемента синтаксиса в заголовке блока NAL на более сложные или более усовершенствованные характеристики, которые могут не быть непосредственно переданы представляющим элементом синтаксиса. Например, индекс порядка видов или аналогичный представляющий элемент синтаксиса могут присутствовать в заголовке блока NAL; однако, информация view_id может не присутствовать в заголовке блока NAL, и отображение значений индекса порядка видов на значения view_id может варьироваться в различных последовательностях. Такое отображение может передать больше информации, чем только элементы синтаксиса в заголовке блока NAL и может обеспечить более усовершенствованную адаптацию, например, на основании значений view_id. В целом индекс конкретной размерности может соответствовать значению i, как определено в индексе на таблицу отображения значений (например, dim_index_2_value_table в любой из Таблиц 3 или 5). Таким образом, индекс “idx” масштабируемой размерности может соответствовать i-му значению масштабируемой размерности, которое сигнализировано в индексе на таблицу отображения значений. Эта таблица может также упоминаться как индекс на таблицу отображения значений синтаксиса.

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

[0103] Если значение для конкретной масштабируемой размерности не изменяется для всей закодированной видео последовательности (например, всего потока битов), то длина элемента синтаксиса, соответствующего этой масштабируемой размерности может быть определена как нуль битов (0) в заголовке блока NAL, означая, что элемент синтаксиса не присутствует в заголовке блока NAL, таким образом что значение по умолчанию может быть выведено для этой масштабируемой размерности для всех блоков NAL в соответствующем потоке битов.

[0104] В некоторых примерах элементы синтаксиса в заголовке блока NAL могут быть сигнализированы более компактным способом. Например, если имеется М возможных значений элемента синтаксиса, но значения могут занимать N битов (где N намного больше чем, например, 1<<ceil(log2 (M+1))), сигнализация элементов синтаксиса в заголовке блока NAL может быть далее оптимизирована, сигнализируя только индекс на экземпляры, то есть, значения для элементов синтаксиса. Например, view_id в расширении множественных видов H.264/AVC типично использует 10 битов. Однако, если выбранный набор видов имеет экземпляры значений view_id такие как, например, 45, 50, 55, и 60, то двухбитовые индексы вида (view_idxs) могут быть использованы для представления видов, например, “00,” "01", "10", и "11", соответственно. Кроме того, данные синтаксиса определяют отображение между индексами вида и view_ids.

[0105] Заголовок блока NAL для блока NAL NPS и блока NAL SPS могут быть фиксированными одним байтом, как показано в синтаксисе блока NAL Таблицы 12 ниже, и nal_ref_flag может быть установлен равным 1. nal_unit_type может быть равным 10 для блоков NAL NSP, и nal_unit_type может быть равным 5 для блоков NAL SPS. Другие типы блоков NAL могут использовать отличные типы блока NAL. Альтернативно, в некоторых примерах только блоки NAL VCL включают в себя расширенный заголовок блока NAL, например, как показано в Таблице 12, в то время как блоки NAL не-VCL могут включать в себя однобайтовые заголовки блока NAL.

[0106] Таблица 8 ниже обеспечивает примерный набор синтаксиса для (NPS) -набора параметров отображения заголовка блока уровня абстракции сети (NAL), в соответствии со способами настоящего описания, в качестве альтернативы набору параметров диапазона размерности из Таблицы 1 выше. Примеры семантики для элементов синтаксиса примера Таблицы 8 описаны ниже.

ТАБЛИЦА 8 nal_unit_header_map( ) { Дескриптор nal_unit_header_map_id u(8) priority_id_len u(3) temporal_id_len u(3) dependency_id_len u(3) quality_id_len u(3) view_idx_len u(4) reserved_flags_len u(4) if( priority_id_len && !(temporal_id_len+dependency_id_len+quality_id_len +view_idx_len)) priority_map( ) if(view_idx_len) view_idx2id_table( ) nps_extension_flag u(1) if(nps_extension_flag) while(more_rbsp_data( )) nps_extension_data_flag u(1) rbsp_trailing_bits( ) }

[0107] В этом примере синтаксис набора параметров отображения заголовка блока NAL из Таблицы 8 дескрипторы для nal_unit_header_map_id, temporal_id_len, dependency_id_len, quality_id_len, и view_idx_len модифицированы относительно HEVC WD7. Кроме того, этот пример синтаксиса набора параметров отображения заголовка блока NAL из Таблицы 8 добавляет элементы синтаксиса priority_id_len, reserved_flags_len, priority_map (), и условно сигнализирует view_idx2id_table (). Другие элементы синтаксиса для синтаксиса параметра отображения заголовка блока NAL могут остаться такими же как в HEVC WD7. Набор параметров отображения заголовка блока NAL (NPS) может в целом задавать отображение заголовка блока NAL. В некоторых примерах в каждой кодированной видео последовательности одно и только одно отображение заголовка блока NAL может быть активной. Таким образом, в некоторых примерах только одно отображение заголовка блока NAL относится к конкретному потоку битов.

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

[0109] Priority_id_len может задавать количество битов, использованных для представления элемента синтаксиса priority_id в заголовке блока NAL и priority_id [i] в структуре синтаксиса отображения приоритета. В некоторых примерах, когда prioriy_id_len равен 0, каждый блок NAL VCL может быть логически выведен, чтобы иметь priority_id равный 0. Количество уровней приоритета, поддерживаемых в кодированной видео последовательности, ссылающихся на набор параметров отображения заголовка блока NAL, может быть в диапазоне 1 до (2 <<priority_id_len), включительно.

[0110] Temporal_id_len может задавать количество битов, использованных для представления элемента синтаксиса temporal_id в заголовке блока NAL. В некоторых примерах, когда temporal_id_len и implicit_temporal_id_len оба равны 0, временная масштабируемость не поддерживается и каждый блок NAL VCL может быть логически выведен, чтобы иметь temporal_id, равный 0. Количество временных уровней, поддерживаемых в кодированной видео последовательности, ссылающихся на набор параметров отображения заголовка блока NAL, может быть в диапазоне от 1 до (2<<temporal_id_len), включительно (когда temporal_id_len больше чем 0), или от 1 до (2 <<implicit_temporal_id_len), включительно (когда implicit_temporal_id_len больше чем 0). В некоторых примерах по меньшей мере один из temporal_id_len и implicit_temporal_id_len равен 0.

[0111] Dependency_id_len может задавать количество битов, использованных для представления элемента синтаксиса dependency_id в заголовке блока NAL. В некоторых примерах, когда dependency_id_len и implicit_dependency_id_len оба равны 0, пространственная масштабируемость или крупноблочная масштабируемость не поддерживаются и каждый блок NAL VCL может быть логически выведен, чтобы иметь dependency_id равный 0. Количество уровней зависимости, поддерживаемых в кодированной видео последовательности, ссылающихся на набор параметров отображения заголовка блока NAL, может быть в диапазоне от 1 до (2 <<dependency_id_len), включительно (когда dependency_id_len больше чем 0), или от 1 до (2<<implicit_dependency_id_len), включительно (когда implicit_dependency_id_len больше чем 0). В некоторых примерах по меньшей мере один из dependency_id_len и implicit_dependency_id_len равен 0.

[0112] Quality_id_len может задавать количество битов, использованных для представления элемента синтаксиса quality_id в заголовке блока NAL. В некоторых примерах, когда quality_id_len и implicit_quality_id_len оба равны 0, масштабируемость качество/SNR не поддерживается и каждый блок NAL VCL может быть логически выведен, чтобы иметь quality_id, равный 0. Количество уровней качества, поддерживаемых в кодированной видео последовательности, ссылающихся на набор параметров отображения заголовка блока NAL, может быть в диапазоне от 1 до (2<<quality_id_len), включительно (когда quality_id_len больше чем 0), или от 1 до (2 <<implicit_quality_id_len), включительно (когда implicit_quality_id_len больше чем 0). В некоторых примерах по меньшей мере один из quality_id_len и implicit_quality_id_len равен 0.

[0113] View_idx_len может задавать количество битов, использованных для представления элемента синтаксиса view_idx. В некоторых примерах, когда view_cnt_len и implicit_view_id_len оба равны 0, только один вид поддерживается и каждый блок NAL VCL может быть логически выведен, чтобы иметь view_id и индекс порядка видов оба равными 0. Количество видов, поддерживаемых в кодированной видео последовательности, ссылающихся на набор параметров отображения заголовка блока NAL, может быть в диапазоне от 1 до (2<<view_idx_len), включительно (когда view_idx_len больше чем 0), или от 1 до (2 <<implicit_view_id_len), включительно (когда implicit_view_idx_len больше чем 0). В некоторых примерах по меньшей мере один из view_idx_len и implicit_view_idx_len равен 0.

[0114] Reserved_flags_len может задавать количество битов, использованных для представления элемента синтаксиса reserved_flags. Когда reserved_flags назначены одному или более элементам синтаксиса, reserved_flags_len может быть модифицирован соответственно, и элемент синтаксиса длины для нового одного или более элементов синтаксиса могут быть сигнализированы в NPS.

[0115] Nps_extension_flag, равный 0, может задавать, что элементы синтаксиса nps_extension_data_flag не присутствуют в структуре синтаксиса RBSP набора параметров отображения заголовка блока NAL. Nps_extension_flag может быть равным 0 в потоках битов, соответствующих этим примерным способам. Значение 1 для nps_extension_flag может быть зарезервировано для будущего использования ITU-T | ISO/IEC. Видео декодеры могут быть сконфигурированы, чтобы игнорировать все данные, которые следуют за значением 1 для nps_extension_flag в блоке NAL набора параметров отображения заголовка блока NAL, если только расширение не было принято и не поддержано видео декодерами.

[0116] Nps_extension_data_flag иметь любое значение. Оно в настоящее время не оказывает влияния на соответствие профилям в соответствии со способами настоящего описания.

[0117] Как показано в Таблице 8, элемент синтаксиса priority_map( ) может быть сигнализирован при некоторых обстоятельствах. Таблица 9 ниже обеспечивает примерный набор данных синтаксиса для priority_map( ) из Таблицы 8. Семантики для элементов синтаксиса Таблицы 9 описаны ниже. В целом структура синтаксиса отображения приоритета задает, для каждого значения prority_id, одно или более из диапазона значений temporal_id, диапазона значений dependency_id, диапазона значений quality_id, и количества значений view_idx.

ТАБЛИЦА 9 priority_map( ) { Дескриптор num_priority_ids u(v) implicit_temporal_id_len u(3) implicit_dependency_id_len u(3) implicit_quality_id_len u(3) implicit_view_idx_len u(4) for( i=0; i<num_priority_ids; i++) { priority_id[i] u(v) if(implicit_temporal_id_len) { t_id_low_range[i] u(v) t_id_high_range[i] u(v) } if(implicit_dependency_id_len) { d_id_low_range[i] u(v) d_id_high_range[i] u(v) } if(implicit_quality_id_len) { q_id_low_range[i] u(v) q_id_high_range[i] u(v) } if(implicit_view_idx_len) { num_views_for_priority_minus1[i] u(v) for (j=0 ; j<=num_views_for_priority_minus1; j++) view_idx[i][j] u(v) } } }

[0118] Num_priority_ids может задавать количество значений priority_id в кодированной видео последовательности, ссылающихся на набор параметров отображения заголовка блока NAL. Количество битов, использованных для представления num_priority_ids, может быть равным priority_id_len.

[0119] Implicit_temporal_id_len может задавать количество битов, использованных для представления элемента синтаксиса temporal_id [i]. В некоторых примерах, если не присутствует, значение implicit_temporal_id_len может быть логически выведено равным 0.

[0120] Implicit_dependency_id_len может задавать количество битов, использованных для представления элемента синтаксиса dependency_id [i]. В некоторых примерах, когда структура синтаксиса priority_map () не присутствует, значение implicit_dependency_id_len может быть логически выведено равным 0.

[0121] Implicit_quality_id_len может задавать количество битов, использованных для представления элемента синтаксиса quality_id [i]. В некоторых примерах, когда структура синтаксиса priority_map () не присутствует, значение implicit_quality_id_len может быть логически выведено равным 0.

[0122] Implicit_view_id_len может задавать количество битов, использованных для представления элемента синтаксиса view_id [i]. В некоторых примерах, когда структура синтаксиса priority_map () не присутствует, значение implicit_view_id_len может быть логически выведено равным 0.

[0123] Priority_id [i] может задавать i-е значение priority_id, для которого один или более из диапазона значений temporal_id, диапазона значений dependency_id, диапазона значений quality_id, и диапазона значений view_id заданы следующими элементами синтаксиса. Количество битов, использованных для представления priority_id [i] может быть равным priority_id_len.

[0124] T_id_low_range [i] и t_id_high_range [i] могут задавать диапазон значений temporal_id, соответствующих i-му priority_id. Диапазон значений temporal_id может быть от t_id_low_range[i] до t_id_high_range[i]-1, включительно. Количество битов, использованных для представления этих элементов синтаксиса, может быть равным implicit_temporal_id_len. В некоторых примерах, если не присутствует, диапазон может быть логически выведен, чтобы быть от 0 до 0.

[0125] D_id_low_range [i] и d_id_high_range [i] может задавать диапазон значений dependency_id, соответствующих i-му priority_id. Диапазон значения dependency_id может быть от d_id_low_range [i] до d_id_high_range [i]-1, включительно. Количество битов, использованных для представления этих двух элементов синтаксиса, может быть равно implicit_dependency_id_len. В некоторых примерах, если не присутствует, диапазон может быть логически выведен, чтобы быть от 0 до 0.

[0126] Q_id_low_range [i] и q_id_high_range [i] может задавать диапазон значений quality_id, соответствующих i-му priority_id. Диапазон значений quality_id может быть от q_id_low_range [i] до q_id_high_range [i]-1, включительно. Количество битов, использованных для представления этих двух элементов синтаксиса, может быть равно implicit_quality_id_len. В некоторых примерах, если не присутствует, диапазон может быть логически выведен, чтобы быть от 0 до 0.

[0127] Видео кодер 20 и видео декодер 30 могут вывести переменную DQRange [i] следующим образом:

DQRange [i]=[d_id_low_range [i] *maxQlayer + q_id_low_range [i], d_id_high_range [i] *maxQlayer + q_id_high_range [i]] (1)

где maxQlayer - максимальное значение quality_id всех закодированных видео последовательностей, ссылающихся на набор параметров отображения заголовка блока NAL.

[0128] В некоторых примерах для любых двух значений priority_id, если другие диапазоны размерности масштабируемости являются одинаковыми, диапазоны DQ двух значений priority_id не перекрываются.

[0129] Num_views_for_priority_minus1 [i] может задавать количество значений view_idx, которые соответствуют i-му priority_id. Значение num_views_for_priority_minus1 может быть в диапазоне 0 до ((1<<implicit_view_id_len)-1), включительно.

[0130] View_idx [i] [j] может задавать индекс порядка j-го вида, соответствующий i-му значению priority_id. Количество битов, использованных для представления view_id [i] [j] может быть равно implicit_view_idx_len. В некоторых примерах, если не присутствует, значение view_idx [i] [j] может быть логически выведено, чтобы быть равным 0.

[0131] Как также показано в Таблице 8, в некоторых случаях индекс вида на таблицу ID вида (view_idx2id_table ()) может быть сигнализирован в наборе параметров отображения заголовка блока NAL. Примерный набор синтаксиса для индекса вида на таблицу ID вида показан в Таблице 10 ниже. Примерные семантики для индекса на таблицу ID вида описана ниже. В целом индекс вида на таблицу ID вида определяет отображение каждого значения индекса вида на значение идентификатора вида. Значение индекса вида может быть сигнализировано в заголовке блока NAL, и соответствующий идентификатор вида может быть определен из данных, заданных в индексе вида на таблицу ID вида.

ТАБЛИЦА 10 view_idx2id_table( ) { Дескриптор view_cnt u(v) if(view_cnt) for(=i=0; i<=view_cnt; i++) view_id[i] u(v) }

[0132] View_cnt может задавать максимальное количество видов, включенных в кодированную видео последовательность, ссылающуюся на набор параметров отображения заголовка блока NAL. Количество битов, использованных для представления view_cnt, может быть равным view_idx_len.

[0133] View_id [i] может задавать идентификатор вида блока NAL с индексом вида, равным i.

[0134] Таблица 11 ниже иллюстрирует примерный набор данных синтаксиса для набора параметров последовательности (SPS) в соответствии со способами настоящего описания. Семантики для добавленных или измененных элементов синтаксиса, относительно HEVC WD7, описаны ниже. Другие элементы синтаксиса из этого примерного SPS не описаны подробно, и семантики для неизмененных элементов синтаксиса могут остаться такими же, например, как определено в HEVC WD7.

ТАБЛИЦА 11 seq_parameter_set_rbsp( ) { Дескриптор profile_idc u(8) reserved_zero_8bits/*equal to 0 */ u(8) level_idc u(8) nal_unit_header_map_id u(8) seq_parameter_set_id ue(v) rbsp_trailing_bits( ) }

[0135] В примере Таблицы 11 SPS включает в себя дополнительный элемент синтаксиса, "nal_unit_header_map_id". Как отмечено выше, семантики для других элементов синтаксиса, включающие в себя те, что не показаны и представлены эллипсами, могут остаться неизменными, например, как определено в HEVC WD7. В этом примере nal_unit_header_map_id может задавать идентификатор набора параметров отображения заголовка блока NAL, на который ссылается этот набор параметров последовательности. Таким образом, SPS может идентифицировать отображение заголовка блока NAL, которое используется во время кодирования последовательности, которой соответствует этот SPS.

[0136] Таблица 12 ниже иллюстрирует примерный набор элементов синтаксиса для блока NAL. Снова, некоторые элементы синтаксиса добавлены или изменены относительно HEVC WD7, для которых семантики примера описаны ниже. Другие элементы синтаксиса, которые не изменены относительно HEVC WD7, могут поддерживать семантику, определенную в HEVC WD7.

ТАБЛИЦА 12 nal_unit(NumBytesInNALunit) { Дескриптор forbidden_zero_bit f(1) nal_ref_flag u(1) nal_unit_type u(6) NumBytesInRBSP=0 nalUnitHeaderBytes=1 if(nal_unit_type !=10 && nal_unit_type !=5) {//not NAL unit header
map NAL unit or SPS NAL unit
if(priority_id_len) priority_id u(v) if(temporal_id_len) temporal_id u(v) reserved_one_bit u(1) if(dependency_id_len) dependency_id u(v) if(quality_id_len) quality_id u(v) reserved_one_bit u(1) if(view_idx_len) view_idx u(v) if(reserved_flags_len) reserved_flags u(v) m=priority_id_len+temporal_id_len+dependency_id_len+quality_id_len+view_idx_len+reserved_flags_len+2 if( ( (m+7>>3)<<3 )-m ) reserved_bits u(v) nalUnitHeaderBytes+=((m+7)>> 3) } for(i=nalUnitHeaderBytes; i<NumBytesInNALunit; i++) { if(i+2<NumBytesInNALunit && next_bits(24)= = 0x000003) { rbsp_byte[NumBytesInRBSP++] b(8) rbsp_byte[NumBytesInRBSP++] b(8) i+=2 emulation_prevention_three_byte/*equal to 0x03 */ f(8) } else rbsp_byte[NumBytesInRBSP++] b(8) } }

[0137] В этом примере ограничение может быть определено таким образом, что заголовок блока NAL не должен содержать последовательные 3 байта, которые равны 0x000000, 0x000001, 0x000002, или 0x000003. Семантика priority_id может быть подобной тому же элементу синтаксиса в SVC, за исключением того, что количество битов, использованных для представления priority_id, может быть равно priority_id_len, как задано в соответствующем nal_unit_header_map, например, в соответствии с Таблицей 8. Семантика temporal_id может быть такой же как в HEVC WD7, за исключением того, что количество битов, использованных для представления temporal_id, может быть равно temporal_id_len, как определено в соответствующем nal_unit_header_map, например, в соответствии с Таблицей 8.

[0138] В этом примере reserved_one_bit должен быть равным 1. Значение 0 для reserved_one_bit может быть задано будущим расширением релевантного стандарта кодирования, например, HEVC. Декодеры, такие как видео декодер 30, могут быть сконфигурированы, чтобы игнорировать значение reserved_one_bit.

[0139] Семантики dependency_id могут быть такими же как тот же элемент синтаксиса как в SVC, за исключением того, что количество битов, использованных для представления dependency_id, может быть равно dependency_id_len, как определено в соответствующем nal_unit_header_map, например, в соответствии с Таблицей 8. Семантики quality_id могут быть такими же как тот же элемент синтаксиса в SVC, за исключением того, что количество битов, использованных для представления quality_id, может быть равно quality_id_len, как определено в соответствующем nal_unit_header_map, например, в соответствии с Таблицей 8. View_idx может задавать индекс порядка видов для вида. Семантики view_idx могут быть такими же как индекс порядка видов в MVC, за исключением того, что количество битов, использованных для представления view_idx, может быть равно view_idx_len, как определено в соответствующем nal_unit_header_map, например, в соответствии с Таблицей 8.

[0140] В некоторых примерах каждый бит reserved_flags может быть равным 1. Другие значения для reserved_flags могут быть заданы будущим расширением релевантного стандарта кодирования, например, HEVC. Декодеры, такие как видео декодер 30, могут быть сконфигурированы, чтобы игнорировать значение reserved_flags. Количество битов, использованных для представления reserved_flags, может быть равно reserved_flags_len, как определено в соответствующем nal_unit_header_map, например, в соответствии с Таблицей 8. В некоторых примерах каждый бит reserved_bits может быть равным 1. Другие значения для reserved_bits могут быть заданы будущими стандартами или расширениями стандартов, таким как расширения HEVC. Декодеры, такие как видео декодер 30, могут быть сконфигурированы, чтобы игнорировать значение reserved_bits. Количество битов, использованных для представления reserved_bits, может быть равно (((m+7>>3)<<3)-m).

[0141] В качестве альтернативы способам, описанным выше, implicit_temporal_id_len, implicit_dependency_id_len, implicit_quality_id_len и implicit_view_idx_len могут отсутствовать (то есть, не сигнализироваться), и другие элементы синтаксиса могут быть сигнализированы с фиксированной длиной, в зависимости от максимальных значений элементов синтаксиса для priority_id, temporal_id, dependency_id и quality_id в спецификации, или быть сигнализированы с ue (v), то есть, беззнаковые целочисленные битовые строки экспоненциального кода Голомба (Exp-Golomb).

[0142] В некоторых примерах отображение приоритетов Таблицы 9 может быть заменена отображением приоритета Таблицы 13 ниже.

ТАБЛИЦА 13 priority_map( ) { Дескриптор num_priority_ids u(v) if(implicit_quality_id_len) { q_id_low_range[i] u(v) q_id_high_range[i] u(v) } if(implicit_view_idx_len) { v_idx_low_range[i] v_idx_high_range[i] } } }

[0143] Элементы синтаксиса и их семантика для отображения приоритета из Таблицы 13 могут в целом остаться такими же, как таковые из Таблицы 9. Однако, вместо того, чтобы сигнализировать индексы вида для количества видов для конкретного приоритета ID, отображение приоритетов из Таблицы 13 обеспечивает v_idx_low_range [i] и v_idx_high_range [i]. В этом примере v_idx_low_range [i] и v_idx_high_range [i] задают диапазон значений view_idx, соответствующих i-му priority_id. Диапазон значений temporal_id может быть от v_idx_low_range [i] и v_idx_high_range [i]-1, включительно. Количество битов, использованных для представления этих двух значений диапазона, может быть равным implicit_view_idx_len. Если не присутствует, диапазон может быть логически выведен от 0 до 0.

[0144] В некоторых примерах вместо того, чтобы сигнализировать низкий диапазон и высокий диапазон для конкретного элемента синтаксиса (например, tempora_id), возможно только сигнализировать верхнее значение (или нижнее значение) этого диапазона, например, temporal_id_high. Таким образом, видео кодеры могут быть сконфигурированы, чтобы логически вывести значение для несигнализированной части этого диапазона, например, нуль для temporal_id_low.

[0145] В некоторых примерах ни один из priority_id, temporal_id, dependency_id, quality_id и view_idx явно не сигнализирован в заголовке блока NAL. Вместо этого один или более из этих элементов синтаксиса могут быть неявно сигнализированы в структуре синтаксиса, названной implicit_id_table (), которая может заменить структуру синтаксиса priority_map (). Пример implicit_id_table () показан в Таблице 14, с примерами семантик для элементов синтаксиса, предоставленных ниже.

ТАБЛИЦА 14 implicit_id_table( ) { Дескриптор implicit_priority_id_len u(3) num_priority_ids u(v) implicit_temporal_id_len u(3) implicit_dependency_id_len u(3) implicit_quality_id_len u(3) implicit_view_idx_len u(4) for(i=0; i<num_priority_ids; i++) { priority_id[i] u(v) if(implicit_temporal_id_len) { t_id_low_range[i] u(v) t_id_high_range[i] u(v) } if(implicit_dependency_id_len) { d_id_low_range[i] u(v) d_id_high_range[i] u(v) } if(implicit_quality_id_len) { q_id_low_range[i] u(v) q_id_high_range[i] u(v) } if(implicit_view_idx_len) { num_views_for_priority_minus1[i] u(v) for (j=0 ; j<=num_views_for_priority_minus1; j++) view_idx[i][j] u(v) } } }

[0146] Примерная структура синтаксиса из Таблицы 14 задает количество значений priority_id и, для каждого значения prority_id - одно или более из диапазона значений temporal_id, диапазона значений dependency_id, диапазона значений quality_id, и количества значений view_idx. Implicit_priority_id_len может задавать количество битов, использованных для представления элемента синтаксиса num_priority_ids и priority_id [i]. Если не присутствует, значение implicit_priority_id_len может быть логически выведено равным 0. Num_priority_ids может задавать количество элементов синтаксиса priority_id [i]. Количество битов, использованных для представления num_priority_ids, может быть равным implicit_priority_id_len. Implicit_temporal_id_len может задавать количество битов, использованных для представления элемента синтаксиса temporal_id [i]. Если не присутствует, значение implicit_temporal_id_len может быть логически выведено равным 0.

[0147] Implicit_dependency_id_len может задавать количество битов, использованных для представления элемента синтаксиса dependency_id [i]. Когда структура синтаксиса priority_map() не присутствует, значение implicit_dependency_id_len может быть логически выведено равным 0. Implicit_quality_id_len может задавать количество битов, использованных для представления элемента синтаксиса quality_id [i]. Когда структура синтаксиса priority_map() не присутствует, значение implicit_quality_id_len может быть логически выведено равным 0. Implicit_view_idx_len может задавать количество битов, использованных для представления элемента синтаксиса view_id [i]. Когда структура синтаксиса priority_map () не присутствует, значение implicit_view_idx_len может быть логически выведено равным 0.

[0148] Priority_id [i] может задавать i-е значение priority_id, для которого одно или более из диапазона значений temporal_id, диапазона значений dependency_id, диапазона значений quality_id и диапазона значений view_id заданы следующими элементами синтаксиса: t_id_low_range [i], t_id_high_range [i], d_id_low_range [i], d_id_high_range [i], q_id_low_range [i], и q_id_high_range [i]. Количество битов, использованных для представления priority_id [i] может быть равно implicit_priority_id_len. Альтернативно, priority_id [i] может отсутствовать и priority_id [i] может быть логически выведен, чтобы быть равным i или некоторому другому значению как функция i.

[0149] T_id_low_range [i] и t_id_high_range [i] могут задавать диапазон значений temporal_id, соответствующих i-му priority_id. Диапазон значений temporal_id может быть от t_id_low_range [i] до t_id_high_range [i]-1, включительно. Количество битов, использованных для представления этих элементов синтаксиса, может быть равно implicit_temporal_id_len. Если не присутствует, этот диапазон может быть логически выведен, чтобы быть от 0 до 0.

[0150] D_id_low_range [i] и d_id_high_range [i] могут задавать диапазон значений dependency_id, соответствующих i-му priority_id. Диапазон значения dependency_id может быть от d_id_low_range [i] до d_id_high_range [i]-1, включительно. Количество битов, использованных для представления этих двух элементов синтаксиса, может быть равно implicit_dependency_id_len. Если не присутствует, этот диапазон может быть логически выведен, чтобы быть от 0 до 0.

[0151] Q_id_low_range [i] и q_id_high_range [i] могут задавать диапазон значений quality_id, соответствующих i-му priority_id. Диапазон значений quality_id может быть от q_id_low_range [i] до q_id_high_range [i]-1, включительно. Количество битов, использованных для представления этих двух элементов синтаксиса, может быть равно implicit_quality_id_len. Если не присутствует, этот диапазон может быть логически выведен, чтобы быть от 0 до 0.

[0152] Переменная DQRange [i] может быть выведена следующим образом:

DQRange [i]=[d_id_low_range [i] *maxQlayer+q_id_low_range [i],

d_id_high_range [i]*maxQlayer+q_id_high_range [i]],

где maxQlayer - максимальное значение quality_id всех кодированных видео последовательностей, ссылающихся на набор параметров отображения заголовка блока NAL.

[0153] Для любых двух значений priority_id, если другие диапазоны размерности масштабируемости являются одинаковыми, их диапазоны DQ могут быть установлены так, чтобы диапазоны DQ не перекрывались.

[0154] Num_views_for_priority_minus1 [i] может задавать количество значений view_idx, который соответствуют i-му priority_id. Значение num_views_for_priority_minus1 может быть в диапазоне от 0 до ((1<<implicit_view_id_len)-1), включительно. View_idx [i] [j] может задавать индекс порядка j-го вида, соответствующий i-му значению priority_id. Количество битов, использованных для представления view_id [i] [j] может быть равно implicit_view_idx_len. Если не присутствует, значение view_idx [i] [j] может быть логически выведено, чтобы быть равным 0.

[0155] Соответственно, в одном примере, видео кодер 20 и видео декодер 30 (или другие элементы устройства-источника 12 и устройства-адресата 14) могут быть сконфигурированы, чтобы кодировать данные синтаксиса, соответствующие любым из Таблиц 1-7, чтобы кодировать, для потока битов, информацию, представляющую, какие из множества размерностей кодирования видео разрешены для потока битов, и кодировать значения для каждой из разрешенных размерностей кодирования видео, без кодирования значений для размерностей кодирования видео, которые не разрешены, в заголовке блока уровня абстракции сети (NAL) блока NAL, содержащего видео данные, кодированные согласно значениям для каждой из разрешенных размерностей кодирования видео.

[0156] Альтернативно, в другом примере видео кодер 20 и видео декодер 30 (или другие элементы устройства-источника 12 и устройства-адресата 14) могут быть сконфигурированы, чтобы кодировать данные синтаксиса, соответствующие любым из Таблиц 8-14, чтобы кодировать, для потока битов, информацию, представляющую, какие из множества размерностей кодирования видео разрешены для потока битов, и кодировать значения для каждой из разрешенных размерностей кодирования видео, без кодирования значений для размерностей кодирования видео, которые не разрешены, в заголовке блока уровня абстракции сети (NAL) блока NAL, содержащего видео данные, кодированные согласно значениям для каждой из разрешенных размерностей кодирования видео.

[0157] В еще других примерах различные аспекты Таблиц 1-14 могут быть скомбинированы в любой комбинации, чтобы сформировать гибрид этих примеров, чтобы кодировать для потока битов, информацию, представляющую, какие из множества размерностей кодирования видео разрешены для потока битов, и кодировать значения для каждой из разрешенных размерностей кодирования видео, без кодирования значений для размерностей кодирования видео, которые не разрешены, в заголовке блока уровня абстракции сети (NAL) блока NAL, содержащего видео данные, кодированные согласно значениям для каждой из разрешенных размерностей кодирования видео.

[0158] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера или декодера, как применимо, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратных средств или любых их комбинаций. Каждый видео кодер 20 и видео декодер 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного видео кодера/декодера (кодек). Устройство, включающее в себя видео кодер 20 и/или видео декодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.

[0159] Фиг. 2 является блок-схемой, иллюстрирующей пример видео кодера 20, который может реализовать способы для сигнализации характеристик масштабируемых размерностей для видео данных. Видео кодер 20 может выполнять внутреннее и внешнее кодирование видео блоков в пределах видео вырезок. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео в пределах заданного видео кадра или картинки. Внешнее кодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность в видео в пределах смежных кадров или картинок видео последовательности. Внутренний режим (I режим) может относится к любому из нескольких пространственно основанных режимов кодирования. Внешние режимы, такие как однонаправленное предсказание (P режим) или двунаправленное предсказание (B режим), могут ссылаться на любой из нескольких временно основанных режимов кодирования.

[0160] Как показано на фиг. 2, видео кодер 20 принимает текущий видео блок в пределах видео кадра, который должен быть закодирован. В примере на Фиг. 2 видео кодер 20 включает в себя блок 40 выбора режима, память 64 опорных кадров, сумматор 50, блок 52 обработки преобразования, блок 54 квантования, и блок 56 энтропийного кодирования. Блок 40 выбора режима, в свою очередь, включает в себя блок 44 компенсации движения, блок 42 оценки движения, блок 46 внутреннего предсказания и блок 48 сегментирования. Для реконструкции видео блока видео кодер 20 также включает в себя блок 58 обратного квантования, блок 60 обратного преобразования, и сумматор 62. Фильтр удаления блочности (не показан на фиг. 2) также может быть включен, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Если желательно, фильтр удаления блочности может типично фильтровать выходной сигнал сумматора 62. Дополнительные фильтры (в контуре или пост-контуре) также могут использоваться в дополнение к фильтру удаления блочности. Такие фильтры не показаны для краткости, но если желательно, могут фильтровать выходной сигнал сумматора 50 (как фильтр в контуре).

[0161] Во время процесса кодирования видео кодер 20 принимает видео кадр или вырезку, которая должна быть закодирована. Кадр или вырезка могут быть разделены на множественные видео блоки. Блок 42 оценки движения и блок 44 компенсации движения выполняют внешнее предсказывающее кодирование принятого видео блока относительно одного или более блоков в одном или более опорных кадрах, чтобы обеспечить временное предсказание. Блок 46 внутреннего предсказания может альтернативно выполнить внутреннее предсказывающее кодирование принятого видео блока относительно одного или более соседних блоков в том же самом кадре или вырезке в качестве блока, который должен быть закодирован, чтобы обеспечить пространственное предсказание. Видео кодер 20 может выполнить множественные проходы кодирования, например, чтобы выбрать подходящий режим кодирования для каждого блока видео данных.

[0162] Кроме того, блок 48 сегментирования может сегментировать блоки видео данных в суб-блоки на основании оценки предыдущих схем сегментирования в предыдущих проходах кодирования. Например, блок 48 сегментирования может первоначально сегментировать кадр или вырезку в единицы LCU, и сегментировать каждую из этих LCU в суб-CU на основании анализа «искажение - скорость передачи» (например, оптимизация искажения - скорости передачи). Блок 40 выбора режима может далее сформировать структуру данных квадродерева, указывающую из сегментирование LCU в суб-CU. Листовые узлы CU квадродерева могут включать в себя одну или более единиц PU и одну или более единиц TU.

[0163] Блок 40 выбора режима может выбрать один из режимов кодирования, внутренний или внешний, например, на основании результатов ошибок, и выдавать получающийся внутри- или внешне- кодированный блок к сумматору 50, чтобы генерировать остаточные данные блока, и к сумматору 62, чтобы восстановить закодированный блок для использования в качестве опорного кадра. Блок 40 выбора режима также обеспечивает элементы синтаксиса, такие как вектора движения, индикаторы внутреннего режима, информацию сегментирования, и другую такую информацию синтаксиса, к блоку 56 энтропийного кодирования.

[0164] Блок 42 оценки движения и блок 44 компенсации движения могут быть высоко интегрированными, но иллюстрированы отдельно в концептуальных целях. Оценка движения, выполненная блоком 42 оценки движения, является процессом генерирования векторов движения, которые оценивают движение для видео блоков. Вектор движения, например, может указывать смещение PU видео блока в пределах текущего видео кадра или картинки относительно предсказывающего блока в пределах опорного кадра (или другой кодированной единицы) относительно текущего блока, закодированного в пределах текущего кадра (или другой кодированной единицы). Предсказывающий блок является блоком, который, как обнаружено, близко соответствует блоку, который должен быть закодирован, в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой разностей квадратов (SSD), или другими метриками различия. В некоторых примерах видео кодер 20 может вычислять значения для суб-целочисленных пиксельных позиций опорных картинок, сохраненных в памяти 64 опорных кадров. Например, видео кодер 20 может интерполировать значения пиксельных позиций в одну четверть, пиксельных позиций в одну восьмую, или других фракционных пиксельных позиций опорной картинки. Поэтому блок 42 оценки движения может выполнять поиск движения относительно полных пиксельных позиций и фракционных пиксельных позиций и вывести вектор движения с фракционной пиксельной точностью.

[0165] Блок 42 оценки движения вычисляет вектор движения для PU видео блока во внешне кодированной вырезке посредством сравнения позиции PU с позицией предсказывающего блока опорной картинки. Опорная картинка может быть выбрана из первого списка опорных картинок (Список 0) или второго списка опорных картинок (Список 1), каждый из которых идентифицируют одну или более опорных картинок, сохраненных в памяти 64 опорных картинок. Блок 42 оценки движения посылает вычисленный вектор движения в блок 56 энтропийного кодирования и блок 44 компенсации движения.

[0166] Компенсация движения, выполненная блоком 44 компенсации движения, может включать в себя выборку или генерирование предсказывающего блока на основании вектора движения, определенного блоком 42 оценки движения. Снова, блок 42 оценки движения и блок 44 компенсации движения могут быть функционально интегрированными, в некоторых примерах. После приема вектора движения для PU текущего видео блока блок 44 компенсации движения может определять местоположение предсказывающего блока, на который вектор движения указывает в одном из списков опорных картинок. Сумматор 50 формирует остаточный видео блок, вычитая пиксельные значения предсказывающего блока из пиксельных значений текущего кодируемого видео блока, формируя значения пиксельной разности, как описано ниже. В целом блок 42 оценки движения выполняет оценку движения относительно компонентов яркости, и блок 44 компенсации движения использует вектора движения, вычисленные на основании компонентов яркости как для компонентов цветности так и для компонентов яркости. Блок 40 выбора режима может также генерировать элементы синтаксиса, ассоциированные с видео блоками и видео вырезкой для использования видео декодером 30 при декодировании видео блоков видео вырезки.

[0167] Блок 46 внутреннего предсказания может внутренне предсказать текущий блок, в качестве альтернативы внешнему предсказанию, выполненному блоком 42 оценки движения и блоком 44 компенсации движения, как описано выше. В частности, блок 46 внутреннего предсказания может определять режим внутреннего предсказания для использования, чтобы кодировать текущий блок. В некоторых примерах блок 46 внутреннего предсказания может кодировать текущий блок, используя различные режимы внутреннего предсказания, например, во время отдельных проходов кодирования, и блок 46 внутреннего предсказания (или блок 40 выбора режима в некоторых примерах) может выбрать соответствующий режим внутреннего предсказания для использования из проверенных режимов.

[0168] Например, блок 46 внутреннего предсказания может вычислить значения искажение - скорость передачи, используя анализ искажение - скорость передачи для различных проверенных режимов внутреннего предсказания, и выбрать режим внутреннего предсказания, имеющий наилучшие характеристики искажение - скорость передачи среди проверенных режимов. Анализ искажение - скорость передачи в целом определяет величину искажения (или ошибку) между закодированным блоком и первоначальным некодированным блоком, который был кодирован, чтобы сформировать закодированный блок, так же как скорость передачи в битах (то есть, количество битов), использованных для формирования кодированного блока. Блок 46 внутреннего предсказания может вычислить отношения из искажений и скоростей передачи для различных закодированных блоков, чтобы определить, какой режим внутреннего предсказания показывает наилучшее значение искажение - скорость передачи для блока.

[0169] После выбора режима внутреннего предсказания для блока блок 46 внутреннего предсказания может предоставить информацию, указывающую выбранный режим внутреннего предсказания для этого блока, к блоку 56 энтропийного кодирования. Блок 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего предсказания. Видео кодер 20 может включать в переданный поток битов данные конфигурации, которые могут включать в себя множество таблиц индексов режима внутреннего предсказания, и множество модифицированных таблиц индекса режима внутреннего предсказания (также называемых таблицами отображения кодового слова), определения контекстов кодирования для различных блоков, и индикации наиболее вероятного режима внутреннего предсказания, таблицу индексов режима внутреннего предсказания, и модифицированную таблицу индексов режима внутреннего предсказания, чтобы использовать для каждого из контекстов.

[0170] Видео кодер 20 формирует остаточный видео блок, вычитая данные предсказания от блока 40 выбора режима из первоначального кодированного видео блока. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Блок 52 обработки преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование, к остаточному блоку, формируя видео блок, содержащий остаточные значения коэффициента преобразования. Блок 52 обработки преобразования может выполнить другое преобразование, которые концептуально подобно DCT. Вейвлет преобразования, целочисленные преобразования, преобразования частотных поддиапазонов, или другие типы преобразования также могут использоваться. В любом случае блок 52 обработки преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовать остаточную информацию из области пиксельных значений в область преобразования, такую как частотная область. Блок 52 обработки преобразования может послать получившиеся коэффициенты преобразования в блок 54 квантования. Блок 54 квантования квантует коэффициенты преобразования, чтобы далее уменьшить частоту следования битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена, регулируя параметр квантования. В некоторых примерах блок 54 квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Альтернативно, блок 56 энтропийного кодирования может выполнить сканирование.

[0171] Вслед за квантованием блок 56 энтропийного кодирования энтропийно кодируют квантованные коэффициенты преобразования. Например, блок 56 энтропийного кодирования может выполнить контекстно-адаптивное кодирование с переменной длиной кода (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разделением интервала вероятности (PIPE) или другой способ энтропийного кодирования. В случае основанного на контексте энтропийного кодирования контекст может быть основан на соседних блоках. После энтропийного кодирования блоком 56 энтропийного кодирования закодированный поток битов может быть передан на другое устройство (например, видео декодер 30) или заархивирован для более поздней передачи или поиска.

[0172] Блок 58 обратного квантования и блок 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области, например, для более позднего использования в качестве опорного блока. Блок 44 компенсации движения может вычислить опорный блок, добавляя остаточный блок к предсказывающему блоку одного из кадров памяти 64 опорных кадров. Блок 44 компенсации движения может также применить один или более фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования при оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с блоком предсказания со скомпенсированным движением, произведенным блоком 44 компенсации движения, чтобы сформировать восстановленный видео блок для сохранения в памяти 64 опорных кадров. Восстановленный видео блок может использоваться блоком 42 оценки движения и блоком 44 компенсации движения в качестве опорного блока, чтобы внешне кодировать блок в последующем видео кадре.

[0173] Кроме того, видео кодер 20 может быть сконфигурирован, чтобы кодировать видео данные, имеющие одну или более различных масштабируемых размерностей кодирования видео. Например, видео кодер 20 может быть сконфигурирован, чтобы кодировать различные виды, уровни качества (например, уровни отношения сигнала к шуму (SNR)), уровни приоритета, уровни пространственного разрешения, временные уровни, уровни глубины в битах цвета, уровни формата выборки цветности, уровни зависимости, или другие такие масштабируемые размерности. В целом масштабируемая размерность имеет любое одно значение (например, данные видео не масштабируются в этой размерности), или диапазон значений. Без потери общности, предположим, что "низкое" значение в диапазоне значений для масштабируемой размерности используется как основание для кодирования более высоких значений в диапазоне. Таким образом, базовый уровень (например, базовый вид, базовый уровень качества, базовый масштабируемый уровень, или подобное) может использоваться как эталон при кодировании одного или больше более высоких уровней масштабируемой размерности.

[0174] В качестве примера, для кодирования видео множественных видов, базовый уровень (например, базовый вид) может использоваться для двумерных видео дисплеев, так же как эталон для более высоких уровней вдоль этой размерности. Другими словами, базовый вид может быть внутренне кодированным видом, то есть, кодированным без ссылки на любые другие виды. Другие виды могут быть внешне кодированными видами, например, кодированными относительно другого вида, такого как базовый вид. В этом способе поток битов, включающий в себя видео данные, может включать в себя только единственный уровень вида (то есть, единственное значение для размерности вида) или множественные уровни вида (то есть, множественные возможные значения для размерности вида).

[0175] Чтобы выполнить предсказание между видами, видео кодер 20 может предсказать блоки текущей картинки конкретного вида относительно одной или более картинок ранее закодированных видов, имеющих то же самое временное местоположение как и текущая картинка. Таким образом, когда в конечном отсчете инкапсулирована в пределах единицы доступа, текущая картинка и опорные картинки могут каждая быть инкапсулированы в пределах той же самой единицы доступа. Таким образом, когда в конечном отсчете отображается, текущая картинка и опорные картинки могут быть отображены по существу в одно и то же время. Кроме того, текущая картинка и опорные картинки могут иметь одни и те же относительные значения отсчета порядка картинок (ОПК, POC).

[0176] Более подробно, предсказание между видами может использовать вычисление одного или более векторов неравенства для текущего блока текущей картинки в текущем виде. Векторы диспарантности могут в целом описывать местоположение близко совпадающего блока в опорной картинке ранее закодированного вида. Блок 42 оценки движения может быть сконфигурирован, чтобы выполнить поиск этого близко совпадающего блока в опорной картинке ранее закодированного вида. Таким образом, в некоторых примерах блок 42 оценки движения может упоминаться как “блок оценки движения/диспарантности.” Векторы диспарантности могут в целом работать способом, подобным векторам диспарантности, за исключением того, что векторы диспарантности описывают смещение относительно опорной картинки отличного вида. Кроме того, векторы диспарантности типично описывают только горизонтальное смещение, поскольку различные виды соответствуют перспективам камеры, которые смещены горизонтально друг относительно друга.

[0177] В качестве другого примера, для размерности пространственного разрешения видео кодер 20 может быть сконфигурирован, чтобы кодировать картинки, имеющие первоначальное пространственное разрешение, используя два или больше уровня: один базовый уровень и один или более уровней расширения. Картинки базового уровня могут иметь разрешение, меньшее чем первоначальное пространственное разрешение, и картинки уровней расширения могут включать в себя данные для того, чтобы увеличить разрешение картинок базового уровня. Например, первоначальное пространственное разрешение может соответствовать 1080p. В этом примере может быть три уровня: базовый уровень, включающий в себя картинки, имеющие пространственное разрешение 480p, первый уровень расширения для того, чтобы достигнуть пространственного разрешения 720p, и второй уровень расширения для того, чтобы достигнуть пространственного разрешения 1080p.

[0178] Видео кодер 20 может кодировать видео данные базового уровня независимо от любых других уровней. Видео кодер 20 может затем закодировать видео данные уровней расширения относительно более низкого уровня, например, базового уровня или более низкого уровня расширения. Чтобы сформировать эти уровни из первоначальных данных, видео кодер 20 может сначала уменьшить, субдискретизировать, или иначе уменьшить пространственное разрешение первоначальной картинки, чтобы сформировать картинку базового уровня. Видео кодер 20 может затем кодировать картинку базового уровня, используя способы кодирования внутри картинки или между картинками (например, временные), как описано выше.

[0179] Видео кодер 20 может затем декодировать и повышать дискретизацию (например, интерполировать) картинку базового уровня, чтобы сформировать картинку, имеющую пространственное разрешение в следующем уровне расширения. Видео кодер 20 может также уменьшить разрешение первоначальной картинки, чтобы сформировать картинку, имеющую пространственное разрешение этого уровня расширения. Видео кодер 20 может затем вычислить разности пиксель-за-пикселем между картинкой уменьшенного разрешения и картинкой повышенной дискретизации базового уровня, чтобы сформировать остаточные данные для уровня расширения, который видео кодер 20 может преобразовать, квантовать и энтропийно кодировать. Видео кодер 20 может повторить этот процесс, обрабатывая наиболее недавний кодированный уровень расширения как базовый уровень, для всех уровней расширения, которые должны быть закодированы. Аналогично, видео кодер 20 может кодировать картинки в различных других уровнях для различных других масштабируемых размерностей.

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

[0181] Видео кодер 20 может кодировать видео данные, соответствующие множеству масштабируемых размерностей. В целом видео кодер 20 в конечном счете формирует набор блоков NAL, соответствующих конкретному пересечению каждой из масштабируемых размерностей. Например, предположим, что для конкретного потока битов временная размерность является масштабируемой, и размерность пространственного разрешения является масштабируемой, и другие размерности являются фиксированными. Предположим далее, что имеется четыре временных уровня во временной размерности и три уровня пространственного разрешения в размерности пространственного разрешения. Соответственно, каждый блок доступа может включать в себя блоки NAL для всех трех пространственных разрешений. Таким образом суб-потоки битов могут быть извлечены посредством извлечения единиц доступа только до конкретного временного уровня, и/или извлекая блоки NAL из этих единиц доступа вплоть до конкретного уровня пространственного разрешения.

[0182] В качестве другого примера предположим, что для конкретного потока битов размерность вида является масштабируемой, и размерность пространственного разрешения является масштабируемой, и другие размерности фиксированы. Предположим далее, что имеется восемь видов в размерности вида и три уровня пространственного разрешения в размерности пространственного разрешения. Соответственно, каждая единица доступа может включать в себя единицы NAL для двадцати четырех картинок: восемь видов и три пространственных разрешения для каждого из этих восьми видов. В этом примере суб-потоки битов могут быть извлечены посредством определения, какой из видов извлечь и какое из пространственных разрешений этих видов извлечь, и извлечение единиц NAL, имеющих идентификаторы вида для определенных видов и имеющие определенные пространственные разрешения.

[0183] В более общем виде, пусть количество разрешенных масштабируемых размерностей для потока битов равно N, где N - целое число. Для каждой из разрешенных масштабируемых размерностей D1 D2, … DN, пусть будет диапазон уровней от 1 до MaxK, где 1<=K<=N. Тогда, для потока битов, может быть общее количество картинок Max1*Max2*…*MaxN, или K = 1 N M a x k . Каждая из этих масштабируемых размерностей может пересекаться в конкретной картинке, для которой могут быть один или более блоков NAL в соответствующем блоке доступа. В соответствии со способами настоящего описания, каждый из блоков NAL может включать в себя данные, указывающие какой из картинок соответствует блок NAL. Кроме того, блоки NAL не должны включать в себя данные для немасштабируемых размерностей. Таким образом, хотя могут быть возможны всего P масштабируемых размерностей, если N меньше чем P, блоки NAL должны только включать в себя данные для N разрешенных масштабируемых размерностей, чтобы указывать значения для этих N разрешенных масштабируемых размерностей, без включения значений для (P-N) не разрешенных масштабируемых размерностей. Кроме того, видео кодер 20 может кодировать набор параметров диапазона размерности или набор параметров отображения заголовка блока NAL, чтобы указывать, какие из масштабируемых размерностей являются активными и, в некоторых случаях, количество битов в заголовке блока NAL, используемых для представления данных для каждой из активных масштабируемых размерностей.

[0184] Таким образом, обращаясь снова к примеру выше, в котором имеется восемь видов и три уровня пространственной масштабируемости, видео кодер 20 может назначить три бита для части идентификатора вида заголовка блока NAL и два бита для части уровня пространственной масштабируемости заголовка блока NAL. Вместе эти пять битов могут указывать как вид, которому блок NAL соответствует, и уровень пространственной масштабируемости, которому соответствует блок NAL. Например “00010” может соответствовать базовому виду “000” и первому уровню расширения из уровней пространственной масштабируемости "10", тогда как “11100” может соответствовать восьмому виду "111", и базовому уровню из уровней пространственной масштабируемости "00". В целом предполагая, что имеются N возможных значений для конкретной разрешенной масштабируемой размерности, видео кодер 20 может назначить ceil(log2 (N)) битов в заголовке блока NAL, где ceil(X) возвращает значение для X, который округлено до следующего самого высокого целого значения. Таким образом, когда X является целым значением, ceil(X) возвращает X, тогда как, когда X является рациональным числом, выраженным как A.B, ceil(X) возвращает (A+1).

[0185] Видео кодер 20 может принять определения для количества разрешенных (также называемых "активными") масштабируемых размерностей от внешнего источника, например, пользователя или данных конфигурации. Кроме того, определения могут также включать в себя информацию, указывающую диапазон потенциальных значений для каждой из разрешенных масштабируемых размерностей. Соответственно, видео кодер 20 может назначить количество битов, которые должны использоваться в заголовке блока NAL для различных масштабируемых размерностей, на основании этих принятых определений. Видео кодер 20 может затем сконструировать набор параметров диапазона размерности, или набор параметров отображения заголовка блока NAL на основании этих назначений, и также кодирует заголовки блока NAL, на основании назначенных битов.

[0186] Кроме того, когда значения для конкретной масштабируемой размерности не увеличиваются атомарно на единицу (например, в случае view_ids), видео кодер 20 может кодировать таблицу отображения, которая отображает значения индекса на значения масштабируемой размерности. Например, предположим, что имеется восемь видов для потока битов, имеющего view_ids 1, 18, 46, 169, 200, 250, 385, и 399. Видео кодер 20 может отобразить индексы 0, 1, 2, 3, 4, 5, 6, и 7 вида на эти значения view_id, и закодировать таблицу отображения соответственно. Таким образом видео кодер 20 может кодировать заголовки блока NAL, указывающие индексы вида, а не view_ids непосредственно. Декодер, такой как видео декодер 30, может ссылаться на таблицу отображения, чтобы определить view_id для блока NAL на основании индекса вида.

[0187] Таким образом видео кодер 20 согласно фиг. 2 представляет пример видео кодера, конфигурируемого, чтобы кодировать для потока битов информацию, представляющую, какие из множества размерностей кодирования видео разрешены для этого потока битов, и кодировать значения для элементов синтаксиса, представляющих разрешенные размерности кодирования видео, без кодирования значений для элементов синтаксиса, представляющих размерности кодирования видео, которые не разрешены, в заголовке блока уровня абстракции сети (NAL) блока NAL, содержащего видео данные, кодированные согласно значениям для каждой из разрешенных размерностей кодирования видео.

[0188] Фиг. 3 является блок-схемой, иллюстрирующей пример видео декодера 30, который может реализовать способы для сигнализации характеристик масштабируемых размерностей для видео данных. В примере согласно Фиг. 3 видео декодер 30 включает в себя блок 70 энтропийного декодирования, блок 72 компенсации движения, блок 74 внутреннего предсказания, блок 76 обратного квантования, блок 78 обратного преобразования, память 82 опорных кадров и сумматор 80. Видео декодер 30 в некоторых примерах может выполнить проход декодирования, в целом обратный проходу кодирования, описанному относительно видео кодера 20 (Фиг. 2). Блок 72 компенсации движения может генерировать данные предсказания на основании векторов движения, принятых от блока 70 энтропийного декодирования, в то время как блок 74 внутреннего предсказания может генерировать данные предсказания на основании индикаторов режима внутреннего предсказания, принятых от блока 70 энтропийного декодирования.

[0189] Во время процесса декодирования видео декодер 30 принимает закодированный видео поток битов, который представляет видео блоки закодированной видео вырезки и ассоциированные элементы синтаксиса от видео кодера 20. Блок 70 энтропийного декодирования из видео декодера 30 энтропийно декодирует поток битов, чтобы генерировать квантованные коэффициенты, вектора движения или индикаторы режима внутреннего предсказания, и другие элементы синтаксиса. Блок 70 энтропийного декодирования направляет вектора движения и другие элементы синтаксиса к блоку 72 компенсации движения. Видео декодер 30 может принять элементы синтаксиса на уровне вырезки видео и/или уровне блока видео.

[0190] Когда видео вырезка закодирована как внутренне кодированная (I) вырезка, блок 74 внутреннего предсказания может генерировать данные предсказания для видео блока текущей видео вырезки на основании сигнализированного режима внутреннего предсказания и данных от ранее декодированных блоков текущего кадра или картинки. Когда видео кадр закодирован как внешне кодированная (то есть, B, P или GPB) вырезка, блок 72 компенсации движения формирует предсказывающие блоки для видео блока текущей видео вырезки на основании векторов движения и других элементов синтаксиса, принятых от блока 70 энтропийного декодирования. Предсказывающие блоки могут быть сформированы из одной из опорных картинок в пределах одного из списков опорных картинок. Видео декодер 30 может сконструировать списки опорных кадров, Список 0 и Список 1, используя способы конструирования по умолчанию, на основании опорных картинок, сохраненных в памяти 92 опорных кадров.

[0191] Блок 72 компенсации движения определяет информацию предсказания для видео блока текущей видео вырезки, синтаксически разбирая вектора движения и другие элементы синтаксиса, и использует информацию предсказания, чтобы сформировать предсказывающие блоки для текущего декодируемого блока видео. Например, блок 72 компенсации движения использует некоторые из принятых элементов синтаксиса, чтобы определить режим предсказания (например, внутри - или внешнее предсказание), использованный для кодирования видео блоков видео вырезки, тип вырезки с внешним предсказанием (например, B вырезка, P вырезка, или вырезка GPB), информацию конструирования для одного или более списков опорных картинок для вырезки, векторов движения для каждого внешне кодированного видео блока вырезки, статуса внешнего предсказания для каждого внешне кодированного видео блока вырезки, и другую информацию, чтобы декодировать видео блоки в текущей видео вырезке.

[0192] Блок 72 компенсации движения может также выполнить интерполяцию на основании фильтров интерполяции. Блок 72 компенсации движения может использовать фильтры интерполяции как используется видео кодером 20 во время кодирования видео блоков, чтобы вычислить интерполированные значения для суб-целочисленных пикселей опорных блоков. В этом случае блок 72 компенсации движения может определять фильтры интерполяции, используемые видео кодером 20, от принятых элементов синтаксиса, и использовать эти фильтры интерполяции, чтобы сформировать предсказывающие блоки.

[0193] Блок 76 обратного квантования обратно квантует, то есть, деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные блоком 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования QPY, вычисленного видео декодером 30 для каждого видео блока в видео вырезке, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено.

[0194] Блок 78 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области.

[0195] После того как блок 82 компенсации движения генерирует предсказывающий блок для текущего видео блока на основании векторов движения и других элементов синтаксиса, видео декодер 30 формирует декодированный видео блок, суммируя остаточные блоки от блока 78 обратного преобразования с соответствующими предсказывающими блоками, генерируемыми блоком 82 компенсации движения. Сумматор 90 представляет компонент или компоненты, которые выполняют эту операцию суммирования. Если желательно, фильтр удаления блочности также может быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блочности. Другие фильтры контуров (или при кодировании контура или после кодирования контура) также могут быть использованы для сглаживания пиксельных переходов, или иным образом улучшения качества видео. Декодированные видео блоки в заданном кадре или картинке затем сохраняются в памяти 92 опорных картинок, которая хранит опорные картинки, используемые для последующей компенсации движения. Память 82 опорных кадров также хранит декодированное видео для более позднего представления на устройстве отображения, таком как устройство 32 отображения согласно фиг. 1.

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

[0197] Кроме того, видео декодер 30 (или другой блок, с возможностью связи подсоединенный к видео декодеру 30), может использовать данные заголовка блока NAL, чтобы определить один или более уровней, которым соответствуют видео данные конкретного блока NAL. Например, если поток битов является масштабируемым в терминах размерности вида, размерности пространственного разрешения, и временной размерности, видео декодер 30 может определять вид, уровень пространственного разрешения, и временный идентификатор для данных блока NAL из заголовка блока NAL в соответствии со способами настоящего описания. Определение уровней, которым соответствуют видео данные, может влиять на то, как синтаксический разбор и/или декодирование видео данных выполняются. Например, если блок NAL соответствует базовому виду данных видео множественных видов, видео декодер 30 не должен попытаться определить, являются ли видео данные блока NAL закодированными между видами.

[0198] Кроме того, чтобы интерпретировать заголовок блока NAL, видео декодер 30 может ссылаться на другие данные синтаксиса, такие как данные синтаксиса, сигнализированные в наборе параметров диапазона размерности или наборе параметров отображения заголовка блока NAL. Такие данные синтаксиса могут указывать, какие из множества масштабируемых размерностей разрешены, и количество битов в заголовке блока NAL, назначенном каждой из разрешенных масштабируемых размерностей. Таким образом, если видео декодер 30 принимает биты "0101101", и данные синтаксиса указывают, что первые три бита идентифицируют индекс вида, следующие два бита идентифицируют уровень пространственного разрешения, и последние два бита идентифицируют временной уровень, видео декодер 30 может задавать индекс вида “010” (например, 2), уровень пространственного разрешения “11” (например, 3), и временной уровень “01” (например, 1). В некоторых случаях эти значения могут действовать как индексы на таблицу отображения, которая может отобразить индексы на фактические значения для соответствующих размерностей. Соответственно, видео декодер 30 может далее определить фактические значения из индексов, используя таблицу отображения.

[0199] Таким образом видео декодер 30 согласно фиг.3 представляет пример видео декодера, конфигурируемого, чтобы закодировать, для потока битов, информацию, представляющую, какие из множества размерностей кодирования видео разрешены для потока битов, и закодировать значения для элементов синтаксиса, представляющих разрешенные размерности кодирования видео, без кодирования значений для элементов синтаксиса, представляющих размерности кодирования видео, которые не разрешены, в заголовке блока уровня абстракции сети (NAL) блока NAL, содержащего видео данные, кодированные согласно значениям для каждой из разрешенных размерностей кодирования видео.

[0200] Фиг. 4 является блок-схемой, иллюстрирующей систему 100, включающую в себя другой набор устройств, которые могут выполнить способы настоящего описания для сигнализации характеристик масштабируемых размерностей для видео данных. Система 100 включает в себя устройство 120 подготовки контента, серверное устройство 160, клиентское устройство 140, и элемент 172 сети с поддержкой носителей (MANE). В некоторых примерах устройство 120 подготовки контента и серверное устройство 160 могут соответствовать одному и тому же устройству, но показаны отдельно на фиг. 4 в целях объяснения. В этом примере устройство 120 подготовки контента включает в себя аудио источник 122, видео источник 124, аудио кодер 126, видео кодер 128, блок 130 инкапсуляции, и интерфейс 132 вывода. Видео источник 124 может соответствовать по существу видео источнику 18 (Фиг. 1), в то время как видео кодер 128 может соответствовать по существу видео кодеру 20 (Фиг. 1 и 2).

[0201] Сеть 170A и сеть 170B представляют сети из одного или более устройств для связи по сети. В целом сети 170A, 170B включают в себя одно или более устройств сети, такие как маршрутизаторы, концентраторы, коммутаторы, шлюзы, брандмауэры, или подобное, для того, чтобы передать данные связи по сети. В некоторых примерах сеть 170A и сеть 170B могут представлять одну и ту же сеть, например, Интернет. В других примерах сеть 170A и сеть 170B могут представлять различные сети. Например, сеть 170A может представлять Интернет, и сеть 170B может представлять сеть доставки контента. В этом примере MANE 172 присутствует между сетями 170A и сетью 170B. MANE 172 может быть сконфигурирован, чтобы распознать и обработать данные носителей в связях по сети, проходящих через MANE 172 между сетью 170A и сетью 170B.

[0202] В целом аудио источник 122 и видео источник 124 могут обеспечить аудио и видео данные, соответственно, который соответствует друг другу. Например, аудио источник 122 может содержать микрофон и видео источник 124 может содержать видео камеру, и аудио источник 122 может захватывать аудио данные по существу в то же время когда видео источник 124 захватывает видео данные. Альтернативно, аудио источник 122 и видео источник 124 могут соответствовать компьютерным источникам генерирования, которые генерируют аудио и видео данные, соответственно. В любом случае устройство 120 подготовки контента может выдавать данные синтаксиса, например, отметки времени, которые указывают аудио данные и видео данные, которые соответствуют друг другу, то есть, которые должны быть воспроизведены по существу одновременно вместе. Аудио кодер 126 может кодировать аудио данные, принятые из аудио источника 122, используя любой из множества способов кодирования аудио, и выдавать кодированные аудио данные к блоку 130 инкапсуляции. Аналогично, видео кодер 128 может выдавать закодированные видео данные к блоку 130 инкапсуляции. Закодированные видео данные могут включать в себя данные для одной или более различных масштабируемых размерностей.

[0203] В этом примере блок 130 инкапсуляции может выполнять различные способы настоящего описания, относящиеся к кодированию заголовков блока NAL, включающих в себя данные для одной или более масштабируемых размерностей. Например, блок 130 инкапсуляции может инкапсулировать кодированные вырезки видео данных от видео кодера 128 в блоки NAL. Кроме того, блок 130 инкапсуляции может задавать значения для одной или более масштабируемых размерностей для каждого из блоков NAL, и генерировать заголовки блока NAL, включающие в себя данные, представляющие эти значения. Кроме того, блок 130 инкапсуляции может генерировать данные синтаксиса высокого уровня, такие как набор параметров диапазона размерности или набор параметров отображения заголовка блока NAL, которые указывают, какие из множества масштабируемых размерностей разрешены для потока битов, включая инкапсулированные аудио и видео данные, и которые указывают биты, назначенные в заголовках блока NAL, назначенных на каждую из разрешенных масштабируемых размерностей. Блок 130 инкапсуляции может также инкапсулировать кодированные аудио данные, принятые от аудио кодера 126. Блок 130 инкапсуляции может далее инкапсулировать блоки NAL, включающие в себя аудио или видео данные в соответствующие блоки доступа.

[0204] После инкапсуляции аудио и видео данных блок 130 инкапсуляции может обеспечить инкапсулированные данные к интерфейсу 132 вывода. Интерфейс 132 вывода может содержать интерфейс запоминающего устройства, сетевой интерфейс, или другой интерфейс для вывода данных. Данные, предоставленные интерфейсом 132 вывода, могут быть выданы серверному устройству 160, сохранены как закодированные медиа данные 162. Серверное устройство 160 также включает в себя блок 164 извлечения медиа данных, чтобы извлекать части закодированных медиа данных 162, например, в ответ на запросы сети, принятые от клиентского устройства 140. Сетевой интерфейс 166 в этом примере выдает запрошенные медиа данные на клиентское устройство 140 через сеть 170A. Сетевой интерфейс 166 может содержать проводной или беспроводный сетевой интерфейс.

[0205] Клиентское устройство 140 включает в себя сетевой интерфейс 154, приложение 152 извлечения, блок 150 декапсуляции, аудио декодер 146, видео декодер 148, аудио вывод 142, и видео вывод 144. Аудио вывод 142 может содержать один или более громкоговорителей, и видео вывод 144, может содержать один или более дисплеев, которые могут быть сконфигурированы, чтобы показывать трехмерные видео данные. Например, видео вывод 144 может содержать один или более стереоскопических или автостереоскопических дисплеев. Звуковой выход 142 также может быть способным к различным типам звукового вывода. Например, звуковой вывод 142 может включать в себя громкоговорители в различных комбинациях (например, два стерео спикера, четыре или более громкоговорителей окружающего звука, с или без центрального громкоговорителя, и/или или без сабвуфера). Таким образом, звуковой вывод 142 и видео вывод 144 могут иметь различные характеристики вывода. Видео вывод 144, например, может иметь различные характеристики воспроизведения.

[0206] Аудио декодер 146 может в целом декодировать закодированные аудио данные, в то время как видео декодер 148 может в целом декодировать закодированные видео данные. Клиентское устройство 140 может координировать процессы декодирования между аудио декодером 146 и видео декодером 148 таким образом, что аудио данные и видео данные, которые должны быть представлены по существу одновременно, доступны для представления звуковым выводом 142 и видео выводом 144. Аудио декодер 146 может иметь некоторые возможности декодирования, в то время как видео декодер 148 может иметь некоторые возможности декодирования (то есть, некоторые характеристики декодирования). Например, видео декодер 148 может соответствовать конкретному стандарту кодирования видео, или конкретному профилю или уровню профиля стандарта кодирования видео. Таким образом, видео декодер 148 может быть способным к использованию некоторых способов кодирования видео, но не способным к использованию других способов кодирования видео.

[0207] В целом сетевой интерфейс 154 принимает медиа данные через сеть 170B и выдает принятые данные приложению 152 извлечения. Приложение 152 извлечения может содержать, например, web-браузер, сконфигурированный, чтобы извлекать и обрабатывать медиа данные, например, в соответствии с динамической адаптивной потоковой передачей по HTTP (DASH). Приложение 152 извлечения может быть сконфигурировано с информацией, определяющей возможности декодирования и воспроизведения аудио декодера 146, видео декодер 148, аудио вывода 142, и видео вывода 144, соответственно. Соответственно, приложение 152 извлечения может выбрать медиа данные, на основании возможностей аудио декодера 146, видео декодера 148, аудио вывода 142 и видео вывода 144. Например, если видео вывод 144 только способно к отображению стереоскопического видео, приложение 152 извлечения может избежать извлекать медиа данные, имеющие больше чем два вида. Таким образом приложение 152 извлечения может избежать извлекать данные, которые не годны к употреблению, например, медиа данные, имеющие больше чем два вида, что может сэкономить дефицитные ресурсы полосы пропускания и избежать ненужного синтаксического разбора и декодирования потока битов, включающего в себя больше чем два вида.

[0208] Чтобы получить такой поток битов, приложение 152 извлечения может обеспечить данные к MANE 172, указывающие характеристики аудио декодера 146, видео декодера 148, аудио вывода 142 и видео вывода 144. Продолжая пример выше, приложение 152 извлечения может представить данные к MANE 172, указывающие, что видео вывод 144 способен только выводить стереоскопические видео данные. Соответственно, если MANE 172 принимает поток битов, запрошенный клиентским устройством 140, и поток битов включает в себя больше чем два вида, MANE 172 может извлечь суб-поток битов, имеющий только два вида для клиентского устройства 140.

[0209] Другими словами, во время процесса извлечения суб-потока битов, некоторые блоки NAL с некоторым диапазоном значений в размерности могут быть отфильтрованы, например, посредством MANE 172. Поэтому, как описано выше, MANE 172 может генерировать новый набор параметров диапазона размерности (или новый набор параметров заголовка блока NAL), представленный структурой данных 174B, включающей в себя настроенные количества битов для некоторых размерностей. Относительно примера набора параметров диапазона размерности dim_cnt_table, так же как dim_index_2_value_table также может быть настроен относительно первоначального набора параметров диапазона размерности. Кроме того, реальные непустые элементы синтаксиса, сгруппированные в nalUnitScalableCharSet, могут быть изменены, или количество битов, использованных для представления конкретные элементы, может быть уменьшено.

[0210] Кроме того, в соответствии со способами настоящего описания, MANE 172 может принять структуру 174A данных, описывающую разрешенные масштабируемые размерности для конкретного потока битов. Предположим, например, что структура 174A данных указывает, среди других масштабируемых размерностей, что размерность вида разрешена, и кроме того, что данные для восьми видов присутствуют в потоке битов. Однако, продолжая пример выше, клиентское устройство 140 может быть способным только к отображению стереоскопического видео. Соответственно, MANE 172 может извлечь суб-поток битов, имеющий только два вида. Кроме того, MANE 172 может изменить структуру 174A данных, чтобы сформировать модифицированную структуру данных 174B, указывающую характеристики извлеченного суб-потока битов.

[0211] Например, если два вида извлеченного суб-потока битов имеют индексы “2” и "6" вида, MANE 172 может настроить эти индексы вида, чтобы вместо этого иметь значения “0” и "1", соответственно. Если таблица отображения предоставлена в структуре 174A данных, MANE 172 может далее настроить таблицу отображения, чтобы отобразить новые значения индекса на подходящие идентификаторы вида (или другие данные для других масштабируемых размерностей). Кроме того, для блоков NAL суб-потока битов MANE 172 может исправить заголовки блока NAL таким образом, что заголовки блока NAL становятся короче (то есть, включают меньше битов), чем первоначальные заголовки блока NAL полного потока битов, например, посредством удаления ненужных битов для масштабируемых размерностей, которые имеют уменьшенные диапазоны относительно полного потока битов или посредством удаления данных сигнализации из заголовков блока NAL полностью для масштабируемых размерностей, которые не разрешены для извлеченного суб-потока битов.

[0212] После создания модифицированной структуры данных 174B и извлечения суб-потока битов MANE 172 может выдать измененную структуру данных 174B и извлеченный суб-поток битов на клиентское устройство 140 через сеть 170B. Клиентское устройство 140 может принять измененную структуру данных 174B и извлеченный суб-поток битов через сетевой интерфейс 154, который может содержать проводной или беспроводный сетевой интерфейс.

[0213] Таким образом MANE 172 представляет пример устройства, конфигурируемого, чтобы извлекать суб-поток битов потока битов, в котором поток битов содержит первый блок NAL, и в котором суб-поток битов содержит второй блок NAL, включающий в себя по меньшей мере часть видео данных первого блока NAL, кодировать, для суб-потока битов, информацию, представляющую, какие из множества размерностей кодирования видео разрешены для суб-потока битов, и кодировать значения для каждой из разрешенных размерностей кодирования видео для суб-потока битов, без кодирования значений для размерностей кодирования видео, которые не разрешены, в исправленном заголовке блока NAL второго блока NAL, в котором исправленный заголовок блока NAL имеет малую длину, которая короче чем малая длина заголовка блока NAL первого блока NAL.

[0214] MANE 172 может включать в себя блок управления, сконфигурированный, чтобы выполнять эти способы. Блок управления может быть реализован в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Когда реализовано в программном обеспечении и/или программно-аппаратных средствах, предполагается, что необходимое аппаратное обеспечение, такое как один или более процессоров и память для хранения инструкций, которые могут быть выполнены один или более процессоров, также предоставлено. Аналогично, элементы устройства 120 подготовки контента, серверное устройство 160 и клиентское устройство 140 также могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации, снова предполагая, что необходимое аппаратное обеспечение предоставлено, чтобы выполнить программное обеспечение или программно-аппаратные средства, если используются.

[0215] Фиг. 5A и 5B представляют собой концептуальные диаграммы, иллюстрирующие примеры заголовков блока NAL в соответствии с различными примерами способов настоящего описания. Фиг. 5A и 5B в целом представляют примеры набора масштабируемости или идентификаторов размерности вида (то есть, идентификаторы для масштабируемых размерностей), которые могут быть включены в заголовок блока NAL. Фиг. 5A иллюстрирует пример заголовка 180 блока NAL, включающего в себя temporal_id 182, chroma_format_idx 184, bit_depth_idx 186, dependency_id 188, quality_id 190, view_idx 192, и texture_depth_idx 194. В целом значения для любого из temporal_id 182, chroma_format_idx 184, bit_depth_idx 186, dependency_id 188, quality_id 190, view_idx 192, и texture_depth_idx 194 могут быть сигнализированы на основании того, разрешены ли соответствующие размерности как являющийся масштабируемым или нет.

[0216] Кроме того, количество битов, назначенных любому или всем из temporal_id 182, chroma_format_idx 184, bit_depth_idx 186, dependency_id 188, quality_id 190, view_idx 192, и texture_depth_idx 194, могут быть указаны в наборе параметров диапазона размерности, например, в соответствии с Таблицей 1, как описано выше. Таким образом заголовок 180 блока NAL представляет пример заголовка блока NAL, построенного в соответствии с набором параметра диапазона размерности согласно Таблице 1. Соответственно, значения для temporal_id 182, chroma_format_idx 184, bit_depth_idx 186, dependency_id 188, quality_id 190, view_idx 192, и texture_depth_idx 194 могут быть назначены, когда присутствуют, на основании пересечения этих различных размерностей, которым соответствует блок NAL, инкапсулированный посредством заголовка 180 блока NAL. Для масштабируемых размерностей, которые не разрешены (то есть, масштабируемые размерности, которые имеют только одно возможное значение в потоке битов), данные не должны быть сигнализированы в заголовке блока NAL 180 блока NAL. Например, если имеется только глубина в один бит для потока битов, данные не должны быть предусмотрены для bit_depth_idx 186.

[0217] Фиг. 5B иллюстрирует другой пример заголовка 200 блока NAL, включающего в себя priority_id 202, temporal_id 204, dependency_id 206, quality_id 208, и view_idx 210. Таким образом заголовок 200 блока NAL представляет пример заголовка блока NAL, построенного согласно набору параметров отображения заголовка блока NAL согласно Таблице 8. Заголовок 200 блока NAL иначе соответствует по существу заголовку 180 блока NAL. Конечно, элементы синтаксиса заголовка 200 блока NAL могут быть включены в заголовок 180 блока NAL, и аналогично, элементы синтаксиса заголовка 180 блока NAL могут быть включены в заголовок 200 блока NAL, в различных примерах, с соответствующими исправлениями синтаксиса и семантики таблиц выше.

[0218] Заголовки блока NAL могут быть разработаны для многих различных сценариев. Ниже предоставлены нескольких примеров. Однако, нужно подразумевать, что другие примеры также могут быть задуманы и представлены, с использованием способов настоящего описания.

[0219] В одном примере масштабируемый видео поток битов может иметь пространственную масштабируемость согласно стандарту от графической видео матрицы одной четверти (QVGA) до графической видео матрицы (VGA), в то время как уровни зависимости имеют три временных уровня. В таком случае три бита могут быть использованы, чтобы сигнализировать масштабируемость и/или размерности вида в заголовке блока NAL. Например, два бита могут быть назначены, чтобы представить temporal_id 204, один бит может быть назначены, чтобы представить dependency_id 206, и никаких битов не должны быть назначены, чтобы представить quality_ID 208 и view_IDX 210.

[0220] В другом примере стереоскопический поток битов может иметь два пространственных уровня для каждого вида, и каждый из видов может иметь три временных уровня. В таком случае всего четыре бита могут использоваться, чтобы представить заголовок блока NAL: два бита, чтобы представить temporal_id 204, один бит, чтобы представить dependency_id 188, один бит, чтобы представить view_idx 210, и нуль битов, чтобы представить quality_id 208.

[0221] В другом примере поток битов множественных видов может включать в себя восемь видов, каждый с двумя уровнями качества. Поток битов также может быть закодирован с иерархической структурой B-предсказания с размером GOP 16 (то есть, четырьмя временными уровнями). В этом примере всего семь битов могут быть использованы для сигнализирования масштабируемости и/или размерности вида в заголовке блока NAL: три бита для temporal_id 204, нуль битов для dependency_id 206, один бит для quality_id 208, и три бита для view_idx 210.

[0222] Фиг. 6 является последовательностью операций, иллюстрирующей примерный способ для сигнализации характеристик масштабируемых размерностей для видео данных. Способ на Фиг. 6 объяснен относительно видео кодера 20 в целях примера. Однако, нужно подразумевать, что другие устройства, такие как другие блоки устройства-источника 12 (Фиг. 1) или компоненты устройства 120 подготовки контента и/или серверного устройства 160 (Фиг. 4) могут быть сконфигурированы, чтобы выполнить способ согласно Фиг. 6. Аналогично, MANE 172 (Фиг. 4) может быть сконфигурировано, чтобы выполнить некоторые аспекты способа согласно Фиг. 6. Кроме того, нужно подразумевать, что некоторые этапы способа согласно Фиг. 6 могут быть опущены или выполнены в отличном последовательном порядке, или параллельно, и другие этапы могут быть добавлены.

[0223] В этом примере видео кодер 20 обеспечивает одну или более масштабируемых размерностей (250) для видео данных, которые должны быть закодированы и сформированы в поток битов. Например, видео кодер 20 может принять индикацию из внешнего источника (например, пользователя), что принятые видео данные должны быть закодированы, используя одну или более масштабируемых размерностей, такую как одна или более из размерности приоритета, размерности пространственного разрешения, временной размерности, размерности качества (например, размерность отношения сигнала к шуму (SNR)), размерность вида, размерность глубины в битах цвета, размерность формата выборки цветности, и/или размерность зависимости.

[0224] Видео кодер 20 может затем определить диапазоны значений для разрешенных масштабируемых размерностей (252). Например, видео кодер 20 может определять количество уровней, которые должны быть закодированы для каждой размерности. В качестве примера, если принятые видео данных имеют V видов, где V -целое число, видео кодер 20 может определять, что V значений необходимы в диапазоне для размерности вида. В качестве другого примера, если размерность пространственного разрешения разрешена и должно быть три уровня, один базовый уровень и два уровня расширения, видео кодер 20 может определять, что три значения необходимы в диапазоне для размерности пространственного разрешения. В целом, для каждой размерности видео кодер 20 может определять диапазон значений в размерности для того, чтобы идентифицировать уровни (или виды) в пределах этой размерности.

[0225] Видео кодер 20 может затем назначить биты заголовку блока NAL для разрешенных масштабируемых размерностей, на основании определенных диапазонов (254). Например, пусть N есть количество разрешенных размерностей, и пусть RK представляет размер диапазона для размерности K где 1<=K<=N. Чтобы вычислить количество битов, необходимых, чтобы представить значения для размерности K, видео кодер 20 может вычислить ceil(log2 (RK)). Таким образом, чтобы вычислить общее количество битов, необходимых в заголовке блока NAL для разрешенных масштабируемых размерностей, на основании определенных диапазонах, видео кодер 20 может вычислить K = 1 N c e i l ( log 2 ( R K ) ) , где ceil(X) возвращает значение X, округленное до самого высокого целого числа, равного или большего, чем X. Таким образом, если X целое число, ceil(X) возвращает X, тогда как, если X есть рациональное число, которое не является целым числом, выраженным как A.B, ceil(X) возвращает (A+1). Таким образом сумма этих значений может представить общее количество битов, которые должны быть использоваться в заголовке блока NAL разрешенных размерностей, на основании определенных диапазонов значений для каждой размерности.

[0226] Видео кодер 20 может затем кодировать структуру данных, указывающую распределения битов для заголовка блока NAL (256). Например, видео кодер 20 может кодировать набор параметров диапазона размерности в соответствии с Таблицей 1 или карту заголовка блока NAL в соответствии с Таблицей 8, как описано выше. Эта структура данных может формировать свою собственную независимую структуру данных или быть включена в другую структуру данных, такую как набор параметров последовательности (SPS). В любом случае эта структура данных может в целом указывать количество битов в заголовке блока NAL для каждой из разрешенных размерностей. Кроме того, когда структура данных назначает нуль битов конкретной размерности в заголовке блока NAL, эта размерность может быть определена как неразрешенная для масштабируемости. Другими словами, размерность, для которой нуль битов назначены в заголовке блока NAL могут не являться масштабируемой для соответствующего потока битов. Таким образом, эта структура данных также обеспечивает индикацию, какие из масштабируемых размерностей разрешены для масштабируемости.

[0227] В некоторых примерах значения для уровней размерности могут не увеличиваться атомарно на единицу. Например, идентификаторы вида (view_ids) для размерности вида не обязательно увеличиваются на значение один. В качестве другого примера, значения глубины в битах, например, для глубин в битах цвета, могут включать в себя значения из 8-битов, 10-битов и 12-битов. Соответственно, при определении диапазона значений, как описано выше, этот диапазон может включать в себя диапазон значений индекса для фактических значений уровней в размерности. Значения индекса могут затем быть отображены на фактические значения с помощью таблицы отображения, которая может быть включена в структуру данных, закодированную выше, или обеспечена как отдельная структура данных. Таблица отображения может соответствовать синтаксису и семантике любой из Таблицы 3, Таблицы 5, Таблицы 9, Таблицы 10, или Таблицы 13, одной или в любой комбинации, где комбинации этих таблиц могут быть сигнализированы как одна таблица или множество отдельных таблиц.

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

[0229] Видео кодер 20 может затем инкапсулировать закодированную вырезку в блоке NAL (260). В частности, видео кодер 20 может кодировать заголовок блока NAL для вырезки, которая указывает значения для разрешенных масштабируемых размерностей для вырезки (262). В частности, видео кодер 20 определяет значения битов для заголовка блока NAL на основании того, какому из уровней или видов каждой масштабируемой размерности закодированная вырезка соответствует. Например, если размерность вида и размерность пространственного разрешения разрешены, имеется восемь видов и три уровня пространственного разрешения, и недавно закодированная вырезка соответствует виду, для которого назначен индекс "010" вида, и уровню пространственного разрешения, для которого назначен пространственный индекс "11" разрешения, видео кодер 20 может код "01011" в заголовке блока NAL, чтобы указывать значения для разрешенных масштабируемых размерностей.

[0230] Таким образом, способ согласно Фиг. 6 представляет пример способа, включающего в себя кодирование, для потока битов, информации, представляющей, какие из множества размерностей кодирования видео разрешены для потока битов, и кодирование значений для элементов синтаксиса, представляющих разрешенные размерности кодирования видео, без кодирования значений для элементов синтаксиса, представляющих размерности кодирования видео, которые не разрешены, в заголовке блока уровня абстракции сети (NAL) блока NAL, содержащего видео данные, кодированные согласно значениям для каждой из разрешенных размерностей кодирования видео.

[0231] Фиг. 7 является последовательностью операций, иллюстрирующей примерный способ для использования сигнализированных характеристик масштабируемых размерностей для видео данных. Способ согласно Фиг. 7 объяснен относительно видео декодера 30, в целях примера. Однако нужно подразумевать, что другие устройства, такие как другие блоки устройства-адресата 14 (Фиг. 1) или компоненты серверного устройства 160 или клиентского устройства 140 (Фиг. 4) могут быть сконфигурированы, чтобы выполнить способ согласно Фиг. 7. Аналогично, MANE 172 (Фиг. 4) может быть сконфигурирован, чтобы выполнить некоторые аспекты способа согласно Фиг. 7. Кроме того, нужно подразумевать, что некоторые этапы способа согласно Фиг. 7 могут быть опущены или выполнены в другом последовательном порядке, или параллельно, и другие этапы могут быть добавлены.

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

[0233] В целом распределения битов для блоков NAL, сигнализированных в структуре данных, могут обеспечить индикацию, какие из множества масштабируемых размерностей разрешены для потока битов. Таким образом, видео декодер 30 может определять, что масштабируемые размерности, для которых один или более битов назначены в заголовке блока NAL, разрешены для масштабируемости. Видео декодер 30 может определять, что другие размерности, для которых нуль битов назначены в заголовке блока NAL, не разрешены. Соответственно, видео декодер 30 может логически вывести значения по умолчанию для неразрешенных масштабируемых размерностей для блоков NAL в потоке битов.

[0234] Видео декодер 30 может затем принять блок NAL, включающий в себя вырезку закодированных видео данных (282). Этот блок NAL может представить любой произвольный блок NAL потока битов. Видео декодер 30 может декодировать заголовок блока NAL, который указывает значения для разрешенных масштабируемых размерностей (284). Таким образом, видео декодер 30 может использовать структуру данных, указывающую распределения битов для заголовка блока NAL, чтобы интерпретировать значения заголовка блока NAL принятого блока NAL. Кроме того, если таблица отображения была принята, видео декодер 30 может использовать эту таблицу отображения, чтобы далее интерпретировать значения индекса в заголовке блока NAL на фактические значения для соответствующей масштабируемой размерности.

[0235] Видео декодер 30 может затем декапсулировать блок NAL, чтобы извлечь закодированную вырезку из блока NAL (286). Видео декодер 30 может затем декодировать вырезку на основании значений для разрешенных масштабируемых размерностей, как определено из заголовка блока NAL (288). Декодирование вырезки на основании этих значений может включать в себя, например, определение, какому уровню (или виду) каждой разрешенной масштабируемой размерности эта вырезка соответствует, и декодирование вырезки, используя предсказание между уровнями, если нужно. Кроме того, различные наборы данных синтаксиса могут быть сигнализированы для вырезки в зависимости от того, доступно ли предсказание между уровнями для одной или более различных масштабируемых размерностей. Например, если вырезка соответствует базовому уровню конкретной масштабируемой размерности, видео декодер 30 может быть сконфигурирован, чтобы не принимать элементы синтаксиса, указывающие опорный уровень для предсказания между уровнями для соответствующей масштабируемой размерности.

[0236] Таким образом, способ согласно Фиг. 7 также представляет пример способа, включающего в себя кодирование, для потока битов, информации, представляющей, какие из множества размерностей кодирования видео разрешены для потока битов, и кодирование значений для элементов синтаксиса, представляющих разрешенные размерности кодирования видео, без кодирования значений для элементов синтаксиса, представляющих размерности кодирования видео, которые не разрешены, в заголовке блока уровня абстракции сети (NAL) блока NAL, содержащего видео данные, кодированные согласно значениям для каждой из разрешенных размерностей кодирования видео.

[0237] Фиг. 8 является последовательностью операций, иллюстрирующей другой примерный способ для сигнализации характеристик, и для использования сигнализированных характеристик, масштабируемых размерностей для видео данных. Пример согласно Фиг. 8 описан относительно MANE (например, MANE 172 согласно фиг.4) и клиентского устройства (например, клиентского устройства 140 согласно фиг. 4). Нужно подразумевать, что другие устройства могут быть сконфигурированы, чтобы выполнить различные этапы способа согласно Фиг. 8. Кроме того, эти этапы могут быть выполнены в различных порядках, или параллельно, и некоторые этапы могут быть опущены, в то время как другие этапы могут быть добавлены.

[0238] В этом примере клиентское устройство 140 первоначально запрашивает видео данные, имеющие поднабор доступных разрешенных масштабируемых размерностей (300). Этот запрос может быть основан на возможностей кодирования и воспроизведения клиентского устройства 140, например, видео декодера 148 и видео вывода 144. Запрос может представить индикацию поддерживаемых возможностей кодирования и воспроизведения, и не обязательно, явного запроса о конкретном наборе разрешенных масштабируемых размерностей для конкретного потока битов.

[0239] MANE 172 может принять запрос (302) и принять поток битов со множеством масштабируемых размерностей (304), например, от серверного устройства 160. Прием потока битов может соответствовать приему части потока битов, и не обязательно всего потока битов, на этом этапе. Поток битов может включать в себя структуру данных, указывающую разрешенные масштабируемые размерности для потока битов, так же как распределения битов на значения, сигнализированные в заголовках блоков NAL для разрешенных масштабируемых размерностей. Снова, прием этой структуры данных посредством MANE 172 представлен стрелкой 174A на фиг. 4. MANE 172 может затем исправить структуру данных на основании суб-потока битов, который должен быть извлечен, на основании запроса, принятого от клиентского устройства 140 (306). MANE 172 может далее исправить таблицу отображения, если таблица отображения предоставлена.

[0240] Например, если поток битов включает в себя восемь видов, но клиентское устройство 140 только поддерживает воспроизведение стереоскопического 3D, MANE 172 может определять, что суб-поток битов, который должен быть извлечен, должен включать в себя только два вида, а не все восемь. Если первоначальная структура данных назначила три бита заголовку блока NAL, чтобы идентифицировать вид, которому соответствует конкретный блок NAL, MANE 172 может вместо этого назначить только один бит в заголовке блока NAL для этого идентификатора вида (или индекса вида). Кроме того, если таблица отображения отобразила индексы вида на идентификаторы вида, MANE 172 может исправить таблицу отображения, чтобы отразить отображение только двух видов, которые должны быть включены в извлеченный суб-поток битов.

[0241] MANE 172 может затем послать исправленную структуру данных в клиентское устройство 140 (308). Снова, посылка исправленной структуры данных на клиентское устройство 140 представлена стрелкой 174B на фиг. 4. Клиентское устройство 140 может принять исправленную структуру данных в свою очередь (310).

[0242] Затем MANE 172 может извлечь блок NAL из потока битов (312). Извлеченный блок NAL может иметь значения для всех разрешенных масштабируемых размерностей. Однако, MANE 172 может исправить блок NAL для суб-потока битов, который должен быть послан в клиентское устройство 140 на основании запроса (314). Например, MANE 172 может удалить данные из заголовка блока NAL, указывающие значения для масштабируемых размерностей, которые не поддерживаются клиентским устройством 140. MANE 172 нет необходимости посылать блоки NAL уровней масштабируемых размерностей, которые не поддерживаются, или не необходимы, клиентским устройством 140 на клиентское устройство 140. Вместо этого MANE 172 может извлечь только те блоки NAL, включающие в себя данные, запрошенные клиентским устройством 140, и исправить заголовки блока NAL по мере необходимости.

[0243] В качестве примера, если первоначальный поток битов включал в себя данные для восьми видов, но клиентское устройство 140 запрашивало только два вида, MANE 172 может извлечь только блоки NAL, соответствующие двум видам, которые нужно послать в клиентское устройство 140. Кроме того, MANE 172 может исправить заголовки блока NAL, чтобы отразить изменение в идентификаторе вида (или индексах вида) для этих блоков NAL. Предположим, например, что первоначальные блоки NAL двух видов, выбранные для клиентского устройства 140, включали в себя значения индекса вида “010” и "110". MANE 172 может изменить эти значения на “0” и "1", соответственно, на основании распределений битов исправленной структуры данных и на основании исправленной таблицы отображения.

[0244] MANE 172 может затем послать исправленный блок NAL в клиентское устройство 140 (316). Клиентское устройство 140, в свою очередь, может принять исправленный блок NAL (318) и декодировать исправленный блок NAL (320). Декодирование исправленного блока NAL может в целом соответствовать процессу, описанному согласно фиг. 7. Таким образом, с точки зрения клиентского устройства 140 обработка суб-потока битов не должна быть отличной от обычной обработки потока битов в соответствии со способами настоящего описания.

[0245] Таким образом способ согласно Фиг. 8 также представляет пример способа, включающего в себя кодирование, для потока битов, информации, представляющей, какие из множества размерностей кодирования видео разрешены для потока битов, и кодирование значений для элементов синтаксиса, представляющих разрешенные размерности кодирования видео, без кодирования значений для элементов синтаксиса, представляющих размерности кодирования видео, которые не разрешены, в заголовке блока уровня абстракции сети (NAL) блока NAL, содержащего видео данные, кодированные согласно значениям для каждой из разрешенных размерностей кодирования видео. MANE 172 и клиентское устройство 140 оба представляют собой устройства, которые кодируют такую информацию и значения.

[0246] Должно быть понятно, что в зависимости от примера, некоторые действия или события любого из способов, описанных здесь, могут быть выполнены в отличной последовательности, могут быть добавлены, слиты, или не учтены в целом (например, не все описанные действия или события необходимы для практической реализации способов). Кроме того, в некоторых примерах действия или события могут быть выполнены одновременно, например, с помощью многопотоковой обработки, обработки прерываний, или множественные процессоры, а не последовательно.

[0247] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены или переданы как одна или более инструкций или код на считываемом компьютером носителе и выполнены на основании аппаратного обеспечения блоком обработки. Считываемый компьютером носитель может включать в себя считываемый компьютером запоминающий носителей, который соответствует материальному носителю, такому как запоминающие носители данных, или коммуникационные носители, включающие в себя любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. Таким образом считываемый компьютером носитель в целом может соответствовать (1) материальному считываемому компьютером запоминающему носителю, который является невременным, или (2) коммуникационному носителю, такому как сигнал или несущая. Запоминающие носители данных могут быть любыми доступными носителями, к которым могут получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.

[0248] Посредством примера, а не ограничения, такие считываемые компьютером носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое оптическое дисковое запоминающее устройство, магнитное дисковое запоминающее устройство, или другие магнитные устройства хранения, флэш-память, или любой другой носитель, который может использоваться, чтобы сохранить желательный программный код в форме инструкций или структур данных, и к которому может получить доступ компьютер. Также, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волокно-оптический кабель, витую пару, цифровую абонентскую линию (DSL), или беспроводные технологии такие как инфракрасная, радио- и микроволновая, то эти коаксиальный кабель, волокно-оптический кабель, витая пара, DSL, или эти беспроводные технологии, такие как инфракрасная, радио- и микроволновая, включены в определение носителя. Нужно подразумевать, однако, что считываемые компьютером носители данных и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие временные носители, но вместо этого направлены на невременные материальные носители данных. Диск и диск, как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискета и диск blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, в то время как диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в рамки считываемого компьютером носителя.

[0249] Инструкции могут быть выполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые пользователем логические матрицы (FPGA), или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как используется здесь, может относиться к любой известной структуре или любой другой структуре, подходящей для реализации способов, описанных здесь. Также, в некоторых аспектах функциональные возможности, описанные здесь, могут быть предоставлены в пределах специализированного аппаратного обеспечения и/или программных модулей, сконфигурированных для кодирования и декодирования, или встроенных в объединенный кодек. Также, способы могли быть полностью реализованы в одной или более схемах или логических элементах.

[0250] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или аппаратов, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, микропроцессорный набор). Различные компоненты, модули или блоки описаны в настоящем описании, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнять раскрытые способы, но не обязательно требовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров, как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.

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

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

название год авторы номер документа
КОДИРОВАНИЕ ВИДЕО МНОЖЕСТВЕННЫХ ВИДОВ 2012
  • Чэнь Ин
  • Карчевич Марта
RU2556882C1
ПАРАМЕТРЫ ГИПОТЕТИЧЕСКОГО ОПОРНОГО ДЕКОДЕРА ПРИ КОДИРОВАНИИ ВИДЕО 2013
  • Ван Е-Куй
RU2649297C2
КОДИРОВАНИЕ ВИДЕО С РАСШИРЕННОЙ ПОДДЕРЖКОЙ ДЛЯ АДАПТАЦИИ ПОТОКА И СТЫКОВКИ 2013
  • Ван Е-Куй
RU2630173C2
ИНДИКАЦИЯ И АКТИВАЦИЯ НАБОРОВ ПАРАМЕТРОВ ДЛЯ КОДИРОВАНИЯ ВИДЕО 2013
  • Ван Е-Куй
RU2646381C2
КОДИРОВАНИЕ НАБОРОВ ПАРАМЕТРОВ И ЗАГОЛОВКОВ ЕДИНИЦ NAL ДЛЯ КОДИРОВАНИЯ ВИДЕО 2013
  • Чэнь Ин
  • Ван Е-Куй
RU2633117C2
ИНДИКАЦИЯ И АКТИВАЦИЯ НАБОРОВ ПАРАМЕТРОВ ДЛЯ КОДИРОВАНИЯ ВИДЕО 2013
  • Ван Е-Куй
RU2646382C2
НАБОР ПАРАМЕТРОВ ВИДЕО ДЛЯ HEVC И РАСШИРЕНИЙ 2013
  • Чэнь Ин
  • Ван Е-Куй
RU2654138C2
КОДИРОВАНИЕ СООБЩЕНИЯ ИНФОРМАЦИИ ДОПОЛНИТЕЛЬНОГО УЛУЧШЕНИЯ 2013
  • Ван Е-Куй
RU2618942C2
ОГРАНИЧЕНИЕ СОГЛАСОВАННОСТИ ДЛЯ СОВМЕЩЕННОГО ОПОРНОГО ИНДЕКСА В КОДИРОВАНИИ ВИДЕО 2017
  • Джоши Раджан Лаксман
  • Серегин Вадим
  • Ван Е-Куй
  • Рапака Кришнакантх
  • Карчевич Марта
RU2733267C2
ИНФОРМАЦИЯ ТАКТИРОВАНИЯ КОДИРОВАНИЯ ДЛЯ КОДИРОВАНИЯ ВИДЕО 2013
  • Ван Е-Куй
RU2635228C2

Иллюстрации к изобретению RU 2 575 986 C2

Реферат патента 2016 года НАБОРЫ ПАРАМЕТРОВ КОДИРОВАНИЯ ДЛЯ РАЗЛИЧНЫХ РАЗМЕРНОСТЕЙ В КОДИРОВАНИИ ВИДЕО

Изобретение относится к вычислительной технике. Технический результат заключается в повышении эффективности кодирования заголовка блока уровня абстракции сети (NAL). Способ кодировки видеоданных содержит кодировку, для потока битов, информации, представляющей, какие из множества размерностей кодирования видеоразрешены для потока битов, при этом упомянутая информация указывает, что по меньшей мере одна из множества размерностей кодировки видео не разрешена; и кодировку значений для элементов синтаксиса, представляющих разрешенные размерности кодировки видео, без кодировки значений для элементов синтаксиса, представляющих размерности кодировки видео, которые не разрешены, в том числе без кодировки упомянутых по меньшей мере одной из множества размерностей кодировки видео, в заголовке блока NAL, содержащего видеоданные, кодированные согласно упомянутым значениям для каждой из разрешенных размерностей кодировки видео. 4 н. и 44 з.п. ф-лы, 9 ил., 14 табл.

Формула изобретения RU 2 575 986 C2

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

2. Способ по п. 1, в котором кодировка значений для каждой из разрешенных размерностей кодировки видео содержит:
определение, для каждой из разрешенных размерностей кодировки видео, соответствующего количества битов для элементов синтаксиса, использованных для кодировки соответствующих значений; и
кодировку значений для элементов синтаксиса разрешенных размерностей кодировки видео, на основании определенных соответствующих количеств битов.

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

4. Способ по п. 2, в котором множество размерностей кодировки видео содержит множество масштабируемых размерностей кодировки видео, причем это множество масштабируемых размерностей кодировки видео содержат одну или более из размерности приоритета, пространственной размерности, временной размерности, размерности отношения сигнала к шуму (SNR), размерности качества, размерности вида, размерности глубины в битах цвета, размерности формата выборки цветности (насыщенности цвета) и размерности зависимости.

5. Способ по п. 2, в котором кодировка информации, представляющей, какие из множества размерностей кодировки видео разрешены, содержит кодировку набора параметров диапазона размерности.

6. Способ по п. 5, дополнительно содержащий кодировку значения для элемента идентификатора набора параметров диапазона размерностей из набора параметров последовательности для идентификации набора параметров диапазона размерности.

7. Способ по п. 2, в котором кодировка информации, представляющей, какие из множества размерностей кодировки видео разрешены, содержит кодировку отображения заголовка блока NAL.

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

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

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

11. Способ по п. 9, в котором одна из разрешенных размерностей кодировки видео содержит размерность вида, при этом кодировка значений индекса содержит кодировку в заголовке блока NAL значения индекса порядка видов для размерности вида, и при этом определение отображений содержит определение отображения между значением индекса порядка видов и значением идентификатора вида (view_id) для этой размерности вида.

12. Способ по п. 9, в котором определение отображений содержит определение отображений из заранее заданных данных конфигурации для видеокодировщика.

13. Способ по п. 2, дополнительно содержащий кодировку видеоданных блока NAL на основании значений для каждой из разрешенных размерностей кодировки видео.

14. Способ по п. 13, в котором кодировка видеоданных содержит декодирование видеоданных, на основании значений для каждой из разрешенных размерностей кодировки видео.

15. Способ по п. 13, в котором кодировка видеоданных содержит кодирование видеоданных, на основании значений для каждой из разрешенных размерностей кодировки видео.

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

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

18. Устройство по п. 17, в котором множество размерностей кодировки видео содержит множество масштабируемых размерностей кодировки видео, в котором множество масштабируемых размерностей кодировки видео содержит одну или более из размерности приоритета, пространственной размерности, временной размерности, размерности отношения сигнала к шуму (SNR), размерности качества, размерности вида, размерности глубины в битах цвета, размерности формата выборки цветности (насыщенности цвета) и размерности зависимости.

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

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

21. Устройство по п. 20, в котором, чтобы кодировать карту заголовка блока NAL, видеокодировщик сконфигурирован, чтобы кодировать по меньшей мере один из: набора параметров отображения (NPS) заголовка блока NAL, содержащего данные для отображения заголовка блока NAL, и набора параметров последовательности (SPS), содержащего данные для отображения заголовка блока NAL.

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

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

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

25. Устройство по п. 23, в котором одна из разрешенных размерностей кодировки видео содержит размерность вида, при этом, чтобы кодировать значения индекса, видеокодировщик сконфигурирован, чтобы кодировать, в заголовке блока NAL, значение индекса порядка видов для размерности вида, и в котором, чтобы определить упомянутые отображения, видеокодировщик сконфигурирован, чтобы определять отображение между значением индекса порядка видов и значением идентификатора вида (view_id) для размерности вида.

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

27. Устройство по п. 26, в котором видеокодировщик содержит видеодекодер.

28. Устройство по п. 26, в котором видеокодировщик содержит видеокодер.

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

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

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

32. Устройство по п. 31, в котором множество размерностей кодировки видео содержит множество масштабируемых размерностей кодировки видео, причем это множество масштабируемых размерностей кодировки видео содержит одну или более из размерности приоритета, пространственной размерности, временной размерности, размерности отношения сигнала к шуму (SNR), размерности качества, размерности вида, размерности глубины в битах цвета, размерности формата выборки цветности (насыщенности цвета) и размерности зависимости.

33. Устройство по п. 31, в котором средство для кодировки информации, представляющей, какие из множества размерностей кодировки видео разрешены, содержит средство для кодировки по меньшей мере одного из: набора параметров диапазона размерности и отображения заголовка блока NAL.

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

35. Устройство по п. 34, в котором одна из разрешенных размерностей кодировки видео содержит размерность вида, при этом средство для кодировки значения индекса содержит средство для кодировки, в заголовке блока NAL, значения индекса порядка видов для размерности вида, и при этом средство для определения отображений содержат средство для определения отображения между значением индекса порядка видов и значением идентификатора вида (view_id) для размерности вида.

36. Устройство по п. 31, дополнительно содержащее средство для кодировки видеоданных блока NAL на основании значений для каждой из разрешенных размерностей кодировки видео.

37. Устройство по п. 36, в котором средство для кодировки видеоданных содержит средство для декодирования видеоданных, на основании значений для каждой из разрешенных размерностей кодировки видео.

38. Устройство по п. 36, в котором средство для кодировки видеоданных содержит средство для кодирования видеоданных, на основании значений для каждой из разрешенных размерностей кодировки видео.

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

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

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

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

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

44. Считываемый компьютером запоминающий носитель по п. 43, в котором одна из разрешенных размерностей кодировки видео содержит размерность вида, при этом инструкции, которые вынуждают процессор кодировать значения индекса, содержат инструкции, которые вынуждают процессор кодировать, в заголовке блока NAL, значение индекса порядка видов для размерности вида, и в котором инструкции, которые вынуждают процессор определять отображения, содержат инструкции, которые вынуждают процессор определять отображение между значением индекса порядка видов и значением идентификатора вида (view_id) для размерности вида.

45. Считываемый компьютером запоминающий носитель по п. 40, в котором блок NAL содержит первый блок NAL потока битов, дополнительно содержащий инструкции, которые вынуждают процессор:
извлекать суб-поток битов потока битов, причем суб-поток битов содержит второй блок NAL, включающий в себя по меньшей мере часть видеоданных первого блока NAL;
кодировать, для суб-потока битов, информацию, представляющую, какие из множества размерностей кодировки видео разрешены для суб-потока битов; и
кодировать значения для каждой из разрешенных размерностей кодировки видео для суб-потока битов, без кодировки значений для размерностей кодировки видео, которые не разрешены, в исправленном заголовке блока NAL второго блока NAL, при этом исправленный заголовок блока NAL имеет длину в битах, которая короче, чем длина в битах заголовка блока NAL первого блока NAL.

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

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

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

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

M
HANNUKSELA et al
"Scalable multiview video coding (SMVC)", JVT-AA044, опубл
Пишущая машина для тюркско-арабского шрифта 1922
  • Мадьярова А.
  • Туганов Т.
SU24A1
Приспособление для суммирования отрезков прямых линий 1923
  • Иванцов Г.П.
SU2010A1
Колосоуборка 1923
  • Беляков И.Д.
SU2009A1
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок 1923
  • Григорьев П.Н.
SU2008A1
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ ВИДЕОСИГНАЛА 2007
  • Дзеон Биеонг Моон
  • Парк Сеунг Воок
RU2387094C1

RU 2 575 986 C2

Авторы

Чэнь Ин

Карчевич Марта

Ван Е-Куй

Даты

2016-02-27Публикация

2012-07-31Подача