ИНДИКАЦИЯ И АКТИВАЦИЯ НАБОРОВ ПАРАМЕТРОВ ДЛЯ КОДИРОВАНИЯ ВИДЕО
INDICATION AND ACTIVATION OF SETS OF PARAMETERS FOR VIDEO ENCODING

[0001] Настоящая заявка испрашивает приоритет предварительной заявки на патент США № 61/704,214, поданной 21 сентября 2012, все содержимое которой включено в настоящее описание по ссылке.
ОБЛАСТЬ ТЕХНИКИ
[0002] Настоящее раскрытие относится к кодированию видео и, более подробно, к наборам параметров, используемым при кодировании видео.
ОПИСАНИЕ УРОВНЯ ТЕХНИКИ
[0003] Цифровые видео способности могут быть включены в широкий диапазон устройств, включающий в себя цифровые телевизоры, цифровые системы прямого вещания, беспроводные системы вещания, персональные цифровые помощники (PDA), ноутбуки или настольные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые устройства записи, цифровые медиаплееры, устройства видео игр, пульты видеоигр, сотовые или спутниковые радиотелефоны, так называемые «смартфоны», устройства организации видео телеконференций, устройства потоковой передачи видео и т.п. Цифровые видео устройства реализуют способы кодирования видео, такие как описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC) (H.264/AVC), развивающийся стандарт высокоэффективного кодирования видео (HEVC), и расширениях таких стандартов. H.264/AVC имеет, в качестве примеров, расширения масштабируемое кодирование видео (SVC) и кодирование видео с множественными видами (MVC). Видео устройства могут передавать, принимать, кодировать, декодировать и/или хранить цифровую видео информацию более эффективно, реализовывая такие способы кодирования видео.
[0004] Способы кодирования видео включают в себя пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую видео последовательностям. Для основанного на блоке кодирования видео вырезка видео (например, картинка или часть картинки) может быть разделена на блоки видео, которые могут также упоминаться как блоки дерева, единицы кодирования (CUs) и/или узлы кодирования. Блоки видео во внутренне кодированной (I) вырезке картинки закодированы, используя пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке. Блоки видео во внешне кодированной (P или B) вырезке картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в той же самой картинке или временное предсказание относительно опорных выборок в других опорных картинках.
[0005] Пространственное или временное предсказание приводит к предсказывающему блоку для блока, который должен быть закодирован. Остаточные данные представляют пиксельные разности между первоначальным блоком, который должен быть закодирован, и предсказывающим блоком. Внешне кодированный блок кодируют согласно вектору движения, который указывает на блок опорных выборок, формирующих предсказывающий блок, и остаточным данным, указывающим разность между закодированным блоком и предсказывающим блоком. Внутренне кодированный блок кодируют согласно режиму внутреннего кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут квантоваться. Квантованные коэффициенты преобразования, первоначально размещенные в двумерном массиве, могут сканироваться, чтобы сформировать одномерный вектор коэффициентов преобразования, и энтропийное кодирование может быть применено, чтобы достигнуть даже большей величины сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В целом настоящее раскрытие описывает способы для того, чтобы указать, какие наборы параметров являются активными для кодирования видео и, в некоторых примерах, поддерживать активацию таких наборов параметров. В некоторых примерах видео кодер включает в себя множественные идентификаторы наборов параметров последовательности (SPS) (ID) в сообщении SEI, например, сообщении SEI активных наборов параметров или сообщении SEI периода буферизации, таким образом что множественные активные наборы SPS могут быть указан для видео декодера. В некоторых примерах видео декодер активирует набор параметров видео (VPS) и/или один или более наборов SPS с помощью ссылки на сообщение SEI, например, на основании включения ID VPS и одного или более ID SPS в сообщении SEI. Сообщение SEI может быть, например, сообщением SEI сообщение SEI активных наборов параметров периода буферизации.
[0007] В одном примере способ декодирования видео данных содержит декодирование потока битов, который включает в себя видео данные и информацию синтаксиса для декодирования видео данных, в котором информация синтаксиса содержит сообщение дополнительной информации расширения (SEI) единицы доступа, и в котором сообщение SEI указывает множество наборов параметров последовательности (SPS) и набор параметров видео (VPS) для декодирования видео данных единицы доступа. Способ далее содержит декодирование видео данных единицы доступа на основании множества наборов SPS и VPS, указанных в сообщении SEI.
[0008] В другом примере способ кодирования видео данных содержит кодирование потока битов, который включает в себя видео данные и информацию синтаксиса для кодирования видео данных, при этом информация синтаксиса содержит сообщение дополнительной информации расширения (SEI) единицы доступа, и при этом сообщение SEI указывает множество наборов параметров последовательности (SPS) и набор параметров видео (VPS) для декодирования видео данных единицы доступа. Способ далее содержит кодирование видео данных единицы доступа на основании множества наборов SPS и VPS, указанных в сообщении SEI.
[0009] В другом примере устройство содержит видео декодер, сконфигурированный, чтобы декодировать поток битов, который включает в себя видео данные и информацию синтаксиса для декодирования видео данных, в котором информация синтаксиса содержит сообщение дополнительной информации расширения (SEI) единицы доступа, и в котором сообщение SEI указывает множество наборов параметров последовательности (SPSs) и набор параметров видео (VPS) для декодирования видео данных единицы доступа. Видео декодер далее конфигурируется, чтобы декодировать видео данные единицы доступа на основании множества наборов SPS и VPS, указанных в сообщении SEI.
[0010] В другом примере устройство содержит видео кодер, сконфигурированный, чтобы закодировать поток битов, который включает в себя видео данные и информацию синтаксиса для кодирования видео данных, в котором информация синтаксиса содержит сообщение дополнительной информации расширения (SEI) единицы доступа, и в котором сообщение SEI указывает множество наборов параметров последовательности (SPS) и набор параметров видео (VPS) для декодирования видео данных единицы доступа. Видео кодер далее конфигурируется, чтобы закодировать видео данные единицы доступа на основании множества наборов SPS и VPS, указанных в сообщении SEI.
[0011] В другом примере устройство содержит средство для кодирования потока битов, который включает в себя видео данные и информацию синтаксиса для кодирования видео данных, в котором информация синтаксиса содержит сообщение дополнительной информации расширения (SEI) единицы доступа, и в котором сообщение SEI указывает множество наборов параметров последовательности (SPS) и набор параметров видео (VPS) для кодирования видео данных единицы доступа. Устройство далее содержит средство для кодирования видео данных единицы доступа на основании множества наборов SPS и VPS, указанных в сообщении SEI.
[0012] В другом примере считываемый компьютером запоминающий носитель имеет инструкции, сохраненные на нем, которые, когда выполняются одним или более процессорами видео кодировщика, заставляют видео кодировщик кодировать поток битов, который включает в себя видео данные и информацию синтаксиса для кодирования видео данных, в котором информация синтаксиса содержит сообщение дополнительной информации расширения (SEI) единицы доступа, и в котором сообщение SEI указывает множество наборов параметров последовательности (SPSs) и набор параметров видео (VPS) для кодирования видео данных единицы доступа. Инструкции далее заставляют видео кодировщик кодировать видео данные единицы доступа на основании множества наборов SPS и VPS, указанных в сообщении SEI.
[0013] Подробности одного или более аспектов раскрытия сформулированы в сопроводительных чертежах и описании ниже. Другие признаки, объекты, и преимущества способов, описанных в настоящем раскрытии, будут очевидны из описания и чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0014] ФИГ. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать способы для того, чтобы указывать активные наборы параметров и активировать наборы параметров, описанные в настоящем раскрытии.
[0015] ФИГ. 2 является блок-схемой, иллюстрирующей видео кодер, показанный в примере на ФИГ. 1 более подробно.
[0016] ФИГ. 3 является блок-схемой, иллюстрирующей видео декодер, показанный в примере на ФИГ. 1 более подробно.
[0017] ФИГ. 4 является блок-схемой, иллюстрирующей примерный набор устройств, которые формируют часть сети.
[0018] ФИГ. 5 является блок-схемой, иллюстрирующей примерный способ для кодирования потока битов, чтобы включать в себя сообщение дополнительной информации расширения (SEI), которое указывает видео декодеру активный набор параметров видео (VPS) и множество активных наборов параметров последовательности (SPSs) для того, чтобы декодировать закодированные видео данные в потоке битов.
[0019] ФИГ. 6 является блок-схемой, иллюстрирующей примерный способ для декодирования потока битов, который включает в себя сообщение SEI, которое указывает активный VPS и множество активных наборов SPS для декодирования видео данных потока битов.
[0020] ФИГ. 7 является блок-схемой, иллюстрирующей примерный способ для кодирования потока битов, чтобы включать сообщение SEI, которое указывает видео декодеру VPS и один или более наборов SPS, которые должны быть активированы видео декодером для декодирования видео данных потока битов.
[0021] ФИГ. 8 является блок-схемой, иллюстрирующей примерный способ для декодирования потока битов, который включает в себя сообщение SEI, и активирование VPS и одного или более наборов SPS для декодирования видео данных потока битов, на основании ссылки на VPS и один или более наборов SPS в сообщении SEI.
ПОДРОБНОЕ ОПИСАНИЕ
[0022] В целом настоящее раскрытие описывает способы для того, чтобы указать, какие наборы параметров являются активными для кодирования видео и, в некоторых примерах, поддерживать активацию таких наборов параметров. В некоторых примерах видео кодер включает множественные идентификаторы (ID) наборов параметров последовательности (SPS) в сообщении SEI, например, сообщение SEI активных наборов параметров или сообщение SEI периода буферизации, таким образом что множественные активные наборы SPS могут быть указаны для видео декодера. В некоторых примерах закодированные видео данные могут содержать множество уровней и/или видов, и каждый из наборов SPS может использоваться для кодировки, например, кодирования или де кодирования, соответствующего одного или более уровней и/или видов. В некоторых примерах, в которых активные наборы SPS ассоциированы с соответствующими уровнями, активные наборы SPS могут упоминаться как активные наборы SPS уровней. Включение множественных ID SPS в сообщение SEI может облегчить кодирование видео с множественными видами, 3D видео (3DV) и/или масштабируемое кодирование видео.
[0023] В некоторых примерах видео декодер активирует набор параметров видео (VPS) и/или один или более наборов SPS с помощью ссылки на сообщение SEI, например, на основании включения ID VPS и одного или более ID SPS в сообщении SEI. Сообщение SEI может быть, например, сообщением SEI активных наборов параметров. В таких примерах сообщение SEI активных наборов параметров, предоставленное видео кодером, не только указывает активный VPS и один или более активных наборов SPS, но также и заставляет видео декодер активировать их для декодирования видео данных.
[0024] В других примерах кодер могут не обеспечивать сообщение SEI активных наборов параметров, и вместо этого может включать ID VPS в сообщение SEI периода буферизации (которое может уже включать в себя единственный ID SPS согласно существующей спецификации HEVC) в качестве первого элемента синтаксиса. В таких примерах видео кодер может включать множественные ID SPS в сообщение SEI периода буферизации, и видео декодер может активировать VPS и один или более наборов SPS с помощью ссылки на сообщение SEI периода буферизации. Снова, закодированные видео данные могут содержать множество уровней и/или видов, и каждый из множества наборов SPS может использоваться для кодировки, например, кодирования или декодирования, соответствующего одного или более уровней и/или видов. В таких примерах активация множественных наборов SPS с помощью ссылки на сообщение SEI, например, видео декодером, может облегчить кодирование видео с множественными видами, 3DV и/или масштабируемое кодирование видео.
[0025] Способы настоящего описания могут быть реализованы в видео кодировщиках, например, видео кодерах и видео декодерах, которые работают согласно любому из множества стандартов кодирования видео. Например, способы настоящего раскрытия могут быть реализованы в видео кодировщиках, которые работают согласно стандарту HEVC, развиваемому в настоящее время, который может также упоминаться как H.265. Стандарт HEVC может также упоминаться как ISO/IEC 23008-HEVC, который предназначен, чтобы быть стандартным номером для поставленной версии HEVC. Усилия по стандартизации основаны на модели устройства кодирования видео, называемой тестовой моделью HEVC (HM). HM предполагает несколько различных способностей устройств кодирования видео относительно устройств, работающих согласно предыдущим стандартам кодирования, таким как ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM обеспечивает целых тридцать пять режимов кодирования с внутренним предсказанием.
[0026] Недавний рабочий проект (WD) HEVC, названный «HEVC Рабочий Проект 6» или "WD6", описан в документе JCTVC-H1003,, Bross et al., “High-Efficiency Video Coding (HEVC) text specification draft 6,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 8th Meeting: San Jose, California, USA, Feb. 2012, который включен здесь по ссылке полностью, и который на 13 мая 2013 может быть найден по адресу: <http://phenix.int-evry.fr/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H1003-v22.zip>
[0027] Далее, другой недавний рабочий проект HEVC, Рабочий Проект 8, названный «HEVC Рабочий Проект 8» или "WD8", описан в документе HCTVC-J1003_d7, Bross et al., “High Efficiency Video Coding (HEVC) Text Specification draft 8,” JCT-VC of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 10th Meeting: Stockholm, Sweden, July, 2012, который включен здесь ссылкой полностью, и который на 13 мая 2013 может быть найден по адресу: <http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip>.
[0028] Стандарт HEVC продолжает развиваться, и более новый проект стандарта, названный «HEVC, Рабочий Проект 10», или "WD10", описан в документе JCTVC-L1003_v18, Bross et al., “High Efficiency Video Coding (HEVC) Text Specification Draft 10,” Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 12th Meeting: Geneva, Switzerland, 14-23 January 2013, который на 13 мая 2013 может быть найден по адресу: <http://phenix.it-sudparis.eu/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v18.zip>. Все содержимое WD10 тем самым включено в настоящее описание по ссылке.
[0029] H.264/AVC ввел концепцию наборов параметров как способ передать информацию синтаксиса, которая облегчает кодирование цифровой видео информации от видео кодера к видео декодеру. Наборы параметров были введены в H.264/AVC в ответ на отрицательные эффекты потери заголовка последовательности и заголовка картинки, если картинка разделена на множественные сегменты, например, вырезки, и эти сегменты транспортируются в их собственном транспортном блоке, например, пакет транспортного протокола в реальном времени (RTP). Разделение картинки на сегменты, которые транспортируются в их собственном транспортном блоке, является желательным для согласования максимального размера блока передачи (MTU). Однако, потеря первого пакета картинки, который несет не только данные сегмента первой картинки, но также и заголовок картинки, и иногда группы картинок (GOP) и заголовок последовательности, может привести к неправильной реконструкции картинки, и иногда также следующих картинок, видео декодером. В некоторых случаях неправильная реконструкция может произойти, даже если все другие пакеты не были потеряны. Некоторые реализации видео декодера могут даже не пытаться декодировать принятые пакеты картинки, если пакет с заголовком картинки был потерян.
[0030] До H.264/AVC, в качестве начальной попытки разрешить эту уязвимость, были введены основанные на транспортном уровне механизмы. Например, формат полезных данных RTP для H.263, определенный в RFC 2429, учитывал перенос избыточной копии заголовка картинки в столько пакетов сколько выбрано видео кодером или модулем пакетирования. Во время конструирования H.264/AVC, однако, было признано, что уязвимость, вызванная посредством включения информации синтаксиса в заголовке картинки, является архитектурной проблемой самого видео кодека, а не транспортной проблемой. В ответ на эту реализацию наборы параметров были введены в H.264/AVC как способ передать информацию синтаксиса.
[0031] Набор параметров является синтаксической структурой, которая включает в себя элементы синтаксиса, которые позволяют видео декодеру восстанавливать закодированное видео. Различные элементы синтаксиса включены в различные наборы параметров на основании частоты, с которой элементы синтаксиса, как ожидается, будут изменяться. Например, набор параметров последовательности (SPS) включает в себя элементы синтаксиса, которые, как ожидается, останутся неизменными для последовательности картинок, в то время как набор параметров картинки (PPS) включает в себя элементы синтаксиса, которые могут изменяться от картинки к картинке для в пределах последовательности.
[0032] Видео кодер может генерировать и выводить наборы параметров. Видео декодер может принять наборы параметров, и использовать наборы параметров при декодировании видео данных из закодированного потока битов. Видео кодер может обеспечить наборы параметров как часть потока битов видео или с помощью передачи вне частотного диапазона, используя надежный канал между видео кодером и декодером. В других примерах наборы параметров могут быть трудно кодируемыми в кодере и декодере.
[0033] Набор параметров содержит идентификационную информацию («ID»), на которую ссылаются, прямо или косвенно, из заголовка вырезки. Например, каждый SPS может включать в себя ID SPS, и каждый PPS может включать в себя ID PPS и ссылается на SPS, дополнительно включая ID SPS. Далее, каждый заголовок вырезки может сослаться на PPS, используя ID PPS. Соответственно, на основании ID PPS в заголовке вырезки видео декодер может активировать PPS. Видео декодер может также активировать SPS на основании ID SPS в PPS. Концепция активации с помощью ссылки была введена, среди других причин, так как неявная активация на основании позиции информации в потоке битов (как является обычным для других элементов синтаксиса видео кодека) не доступна в случае наборов параметров, принятых видео декодером с помощью передачи вне частотного диапазона.
[0034] Подобно H.264/AVC, HEVC использует наборы параметров, чтобы передать информацию синтаксиса, которая облегчает кодирование цифровой видео информации. Однако, HEVC вводит дополнительный набор параметров, набор параметров видео (VPS). Помимо прочего, VPS может быть использован для передачи информации, которая применима ко множественным уровням, так же как подуровням, и/или множественным видам. Соответственно, VPS может облегчить кодирование видео данных, которые включают в себя множественные уровни, например, для масштабируемого кодирования видео, или множественные виды, например, для кодирования 3D видео или множественных видов. Каждый уровень или вид заданной видео последовательности могут быть, но не обязательно, закодированы согласно соответствующему SPS. Однако, каждый уровень или вид заданной видео последовательности, независимо от того, имеют ли они одни и те же или различные наборы, ссылаются на один и тот же VPS.
[0035] H.264/AVC не содержал набор параметров, сравнимый с VPS, и вместо этого требовал сложного моделирования структуры многоуровневого представления в целях, например, обмена возможностями и согласования сеанса. В расширении H.264/AVC масштабируемого кодирования видео (SVC) сообщение дополнительной информации расширения (SEI) информации масштабируемости предложило приблизительно тот же контент как VPS в HEVC. Однако, по своей природе, являясь сообщением SEI, большая часть той же информации в сообщении SEI информации масштабируемости должно было быть повторено в наборах SPS в H.264/AVC, что в некоторых сценариях применения также должно было быть передано вне диапазона, и следовательно вызывало увеличенную начальную задержку, особенно когда повторная передача была использована для гарантии надежности передач вне диапазона. В случаях вещания и многоадресного вещания с передачей внутри диапазона наборов параметров, такое повторение одной и той же информации привело к существенным служебным расходам, поскольку наборы параметров должны были быть повторены в каждой точке произвольного доступа для переключения и настраивания канала. VPS HEVC может решать эти недостатки, так же как обеспечить чистую и расширяемую структуру высокого уровня многоуровневых кодеков.
[0036] Информация, которая может быть передана в VPS, включает в себя, например: (1) общие элементы синтаксиса, совместно используемые множественными уровнями или точками операции (рабочими точками), чтобы избежать ненужных дублирований; (2) существенную информацию точек операции, необходимых для согласования сеанса, включая, например, профиль и уровень; и (3) другую специфичную для точек операции информацию, которая не принадлежит одному SPS, например, параметры гипотетического опорного декодера (HRD) для уровней или подуровней. Синтаксический разбор существенной информации каждой точки операции не требует кодирования с переменной длиной кода, и таким образом считается облегченным для большинства элементов сети. Ожидается, что расширение VPS, которое может быть определено в расширениях HEVC, может содержать больше элементов синтаксиса, чем таковые в текущем VPS, для эффективной сигнализации параметров, гибкого и облегченного согласования сеанса, так же как усовершенствованной адаптации потока битов, например, на основании идентификатора вида в расширении 3DV. Согласно HEVC WD8, некоторая информация дублирована между VPS и наборам SPS, принадлежащим уровню. Это дублирование было введено, чтобы позволить декодеру версии 1 игнорировать единицу уровня абстракции сети VPS (NAL) и все еще иметь доступной всю информацию, требуемую, чтобы декодировать поток битов.
[0037] Согласно H.264/AVC, так же как в HEVC, наборы SPS содержат информацию, которая относится ко всем вырезкам закодированной видео последовательности, например, последовательности картинок. В HEVC закодированная видео последовательность начинается с картинки мгновенного обновления декодирования (IDR), или картинки доступа с разорванной ссылкой (BLA), или картинки чистого произвольного доступа (CRA), которая является первой картинкой в потоке битов. Закодированная видео последовательность включает в себя все последующие картинки, которые не являются картинкой IDR или BLA. Поток битов состоит из одной или более закодированных последовательностей видео.
[0038] Контент SPS может быть примерно подразделен на шесть категорий: (1) ссылка на самого себя, например, его собственный ID; (2) относящаяся к точке операции декодера информация, например, профиль, уровень, размер картинки, и количество подуровней; (3) флаги разрешения для некоторых инструментов в пределах профиля, и ассоциированные параметры инструмента кодирования в случае, если инструмент разрешен; (4) информация, ограничивающая гибкость структур и кодирование коэффициентов преобразования; (5) управление временной масштабируемостью, которое может быть подобным H.264/SVC; и (6) информация визуального удобства и простоты использования (VUI), который включает в себя информацию HRD.
[0039] PPS HEVC содержит такую информацию, которая может изменяться от картинки к картинке. PPS включает в себя информацию, грубо сопоставимую тому, что было частью PPS в H.264/AVC, включая (1) ссылку на самого себя, например, свой собственный ID; (2) начальную информацию управления картинками, такую как начальный параметр квантования (QP), количество флагов, указывающих использование, или присутствие, некоторых инструментов или информации управления в заголовке вырезки; и (3) информацию мозаичного размещения.
[0040] Заголовок вырезки содержит информацию, которая может изменяться от вырезки к вырезке, так же как такую относящуюся к картинке информацию, которая является относительно малой или релевантной только некоторым типам вырезки или картинки. Размер заголовка вырезки может быть заметно больше чем PPS, особенно когда есть мозаичное размещение или смещения точки входа фронта волны в заголовке вырезки и выбор опорной картинки, веса предсказания, или модификации списка опорных картинок явно сигнализированы.
[0041] Активация наборов параметров в HEVC подобна H.264/AVC. Заголовок вырезки содержит ссылку на PPS. PPS, в свою очередь, содержит ссылку на SPS, и SPS содержит ссылку на VPS. Одна общая стратегия реализации для наборов параметров состоит в том, чтобы хранить все наборы параметров заданного типа (PPS, SPS и VPS) в таблицах, максимальный размер которых косвенно определен диапазоном нумерации идентификаторов ID набора параметров. Согласно такой стратегии реализации, активация набора параметров может быть достигнута посредством: (1) доступа к таблицам PPS на основании информации, например, ID PPS, в заголовке вырезки, и копировании информации, найденной для PPS в таблицах PPS в релевантные структуры данных декодера; (2) с последующим обращением, например, к ID SPS, в PPS к релевантному SPS в таблицах SPS, и копирование информации, найденной для SPS в таблицах SPS, в релевантные структуры данных декодера; и (3) с последующим обращением, например, к ID VPS, в SPS к релевантному VPS в таблицах VPS, и копирование информации, найденной для VPS в таблицах VPS в релевантные структуры данных декодера. Поскольку эти операции может быть необходимо выполнить (самое большее) только однажды для каждой картинки, эту операцию можно считать легкой.
[0042] Согласно предложениям для стандарта HEVC, SPS может также быть активирован, посредством обращения к нему в сообщении SEI периода буферизации. Для активации SPS посредством обращения к нему в сообщении SEI периода буферизации, сообщение SEI периода буферизации может включать в себя ID SPS для SPS, который должен быть активирован. Дополнительно, HEVC WD8 определяет сообщение SEI активных наборов параметров. Согласно HEVC WD8, сообщение SEI активных наборов параметров может указывать в настоящее время активный VPS и в настоящее время активный SPS, например, посредством включения VPS и ID SPS для в настоящее время активного VPS и SPS. Согласно HEVC WD8, видео декодер не активирует VPS и SPS посредством ссылки в сообщении SEI активных наборов параметров. Вместо этого видео кодер включает сообщение SEI активных наборов параметров в поток битов, чтобы указать, какие наборы параметров видео декодер должен в настоящее время иметь активными для декодирования видео данных, и таким образом, позволить видео декодеру подтверждать надлежащую операцию декодирования.
[0043] Как описано выше, видео кодер может выдать наборы параметров видео декодеру как часть потока битов видео или с помощью передачи вне диапазона, используя надежный канал между видео кодером и декодером. Видео декодер может сохранить принятые наборы параметров в структурах данных, например, соответствующих таблицах для каждого типа набора параметров (PPS, SPS и VPS), извлечь один или более наборов параметров для каждого типа из таблиц, когда позже активированы посредством ссылки, и загружать извлеченные наборы параметров в соответствующие структуры данных декодирования для декодирования видео данных в потоке битов. В некоторых примерах видео кодер может включать наборы параметров в единицы уровня абстракции сети (NAL) набора параметров.
[0044] Обработка приема единицы NAL набора параметров, независимо от ее типа, может быть прямой, при которой единицы NAL набора параметров не должны содержать зависимости синтаксического разбора, что означает, что они являются самостоятельными и не требуют контекста, выведенного из других единиц NAL для синтаксического разбора. Хотя генерирование единиц NAL без зависимостей синтаксического разбора может стоить еще несколько битов, оно может разрешить прямой синтаксический разбор и хранение наборов параметров в их соответствующих записях таблицы. Каждый тип набора параметров может содержать механизм расширения, который может позволить расширять набор параметров в будущих версиях HEVC, не нарушая обратную совместимость и не создавая зависимость синтаксического разбора к информации профиля/уровня, которая переносится в VPS и SPS.
[0045] Стандарты кодирования видео обычно включают в себя спецификацию модели буферизации видео. В H.264/AVC и HEVC, модель буферизации упоминается как гипотетический опорный декодер (HRD). HRD включает в себя модель буферизации как буфера закодированных картинок (CPB) так и буфера декодированных картинок (DPB), и математически определяет поведения CPB и DPB. HRD непосредственно налагает ограничения на различное тактирование, размеры буфера и частоту следования битов, и косвенно налагает ограничения на характеристики потока битов и статистику. Полный набор параметров HRD включает в себя пять основных параметров, начальную задержку удаления CPB, размер CPB, частоту следования битов, начальную задержку вывода DPB, и размер DPB.
[0046] В H.264/AVC и HEVC соответствие потока битов и соответствие декодера заданы как части спецификации HRD. Хотя название HRD предполагает, что HRD является декодером, HRD типично используется на стороне кодера, чтобы гарантировать соответствие потока битов, и типично не является необходимым на стороне декодера. HRD определяет два типа потока битов или соответствия HRD - а именно, Тип I и Тип II. Кроме того, HRD определяет два типа соответствия декодера - а именно, соответствие декодера тактированию вывода и соответствие декодера порядку вывода.
[0047] В моделях HRD H.264/AVC и HEVC декодирование или удаление CPB является основанным на единице доступа, и предполагается, что декодирование картинки является мгновенным. В практических применениях, если соответствующий декодер строго следует сигнализированным временам декодирования, например, в сообщениях SEI тактирования картинки, чтобы начать декодирование единицы доступа, то самое раннее время, чтобы вывести конкретную декодированную картинку, равно времени декодирования этой конкретной картинки плюс время, необходимое для того, чтобы декодировать эту конкретную картинку. Время, необходимое для того, чтобы декодировать картинку в практических применениях, не может быть равным нулю.
[0048] В HEVC WD8, HRD определен в Приложении C. В HEVC WD8, HRD полагается на параметры HRD. Параметры HRD могут быть предоставлены в потоке битов в синтаксической структуре hrd_parameters (). Синтаксическая структура hrd_parameters () может быть включена в, в качестве примеров, VPS и/или SPS, сообщение SEI периода буферизации, и сообщение SEI тактирования картинок.
[0049] Как описано выше, HEVC разрешает SPS быть активированным видео декодером, посредством обращения к нему, например, посредством его ID SPS, в сообщении SEI периода буферизации. В этом способе сообщение SEI периода буферизации разрешает SPS быть активированным независимо от активации PPS с помощью ссылки в заголовке вырезки. HEVC WD8 также задает сообщение SEI активных наборов параметров, которое разрешает видео кодеру указать активный VPS и активный SPS видео декодеру. Однако, есть проблемы, ассоциированные с этими существующими способами для активации наборов параметров и индикации активных наборов параметров.
[0050] Например, в расширениях кодирования видео с множественными видами 3DV и/или масштабируемом кодировании видео HEVC, в любой момент времени могут быть множественные активные наборы SPS. В частности, видео кодировщик, например, видео кодер или видео декодер, может кодировать, например, закодировать или декодировать, видео данные некоторых уровней и/или видов, используя различные наборы SPS. В примерах, в которых видео кодировщик кодирует различные уровни согласно различным активным наборам SPS, некоторые из активных наборов SPS могут упоминаться как наборы SPS активного уровня. Однако, хотя сообщение SEI активных наборов параметров, предложенное для стандарта HEVC, может использоваться видео кодером, чтобы указывать активный VPS и единственный активный SPS видео декодеру, в настоящее время невозможно указать множественные активные наборы SPS через сообщение SEI активных наборов параметров или любое другое сообщение SEI.
[0051] В качестве другого примера, в HEVC WD8, в то время как параметры HRD могут быть включены в VPS, сообщение SEI периода буферизации может содержать ID SPS, но не содержать ID VPS. Соответственно, в некоторых случаях HRD может инициализировать из единицы доступа, которая содержит сообщение SEI периода буферизации, но по меньшей мере некоторые из выбранных параметров HRD для операции HRD включены в VPS, который, в отличие от SPS, не активирован посредством SEI периода буферизации. В таких случаях способности видео декодера синтаксически разобрать некоторые элементы синтаксиса в сообщении SEI периода буферизации могут зависеть от информации в VPS. Соответственно, видео кодировщик может иметь необходимость косвенно активировать VPS, следующий за SPS, на основании ссылки на VPS в SPS, который был активирован из сообщения SEI периода буферизации. Потребность в последовательной и косвенной активизации VPS в таких случаях может быть в вычислительном отношении неэффективной реализацией видео декодера.
[0052] Настоящее раскрытие описывает способы для того, чтобы указать, какие наборы параметров являются активными для кодирования видео и, в некоторых примерах, поддерживать активацию таких наборов параметров, которые могут решить вышеупомянутые проблемы. В некоторых примерах видео кодер включает множественные ID SPS в сообщение SEI, например, сообщение SEI активных наборов параметров или сообщение SEI периода буферизации, таким образом, что множественные активные наборы SPS могут быть указаны для видео декодера. В некоторых примерах закодированные видео данные могут содержать множество уровней и/или видов, и каждый из наборов SPS может использоваться для того, чтобы кодировать, например, кодировать или декодировать, соответствующие один или более уровней и/или видов. В некоторых примерах, в которых активные наборы SPS ассоциированы с соответствующими уровнями, активные наборы SPS могут упоминаться как наборы SPS активного уровня. Включение множественных ID SPS в сообщение SEI может облегчить более полную индикацию активных наборов параметров для кодирования видео с множественными видами, 3DV и/или масштабируемого кодирования видео.
[0053] В некоторых примерах видео декодер активирует VPS и один или более наборов SPS с помощью ссылки на сообщение SEI, например, на основании включения ID VPS и одного или более ID SPS в сообщение SEI. Сообщение SEI может быть, например, сообщением SEI активных наборов параметров. В таких примерах сообщение SEI активных наборов параметров, предоставленное в потоке битов видео кодером, не только указывает активный VPS и один или более активных наборов SPS, но также и заставляет видео декодер активировать их для декодирования видео данных потока битов. В таких примерах видео кодер может удалить ID SPS из сообщения SEI периода буферизации. Далее, видео кодер может генерировать поток битов в таких примерах таким образом, что, для каждой единицы доступа, которая включает в себя сообщение SEI периода буферизации, имеется также сообщение SEI активных наборов параметров, которое является первым сообщением SEI в первой единице NAL SEI единицы доступа.
[0054] В других примерах видео кодер может не обеспечивать сообщение SEI активных наборов параметров, и вместо этого может включать ID VPS в сообщение SEI периода буферизации, например, в качестве первого элемента синтаксиса, который может быть закодированным кодом фиксированной длины, например, с четырьмя битами. Согласно предложениям для стандарта HEVC, сообщение SEI периода буферизации может включать в себя единственный ID SPS. В примерах согласно настоящему описанию видео кодер может включать множественные ID SPS, например, наряду с ID VPS, в сообщение SEI периода буферизации. Дополнительно, в некоторых примерах, видео декодер может активировать VPS и один или более наборов SPS с помощью ссылки на сообщение SEI периода буферизации. Снова, закодированные видео данные могут содержать множество уровней и/или видов, и каждый из множества наборов SPS может использоваться для того, чтобы кодировать, например, кодировать или декодировать, соответствующие один или более уровней и/или видов. В таких примерах активация множественных наборов SPS с помощью ссылки на сообщение SEI периода буферизации, например, видео декодером, может облегчить кодирование видео с множественными видами, 3DV и/или масштабируемое кодирование видео.
[0055] ФИГ. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать способы для того, чтобы указывать активные наборы параметров и активировать наборы параметров, описанные в настоящем раскрытии. Как показано на ФИГ. 1, система 10 включает в себя исходное устройство 12, которое генерирует закодированные видео данные, которые должны быть декодированы в более позднее время устройством 14 назначения. Исходное устройство 12 и устройство 14 назначения может содержать любое из широкого диапазона устройств, включающего в себя настольные компьютеры, портативные компьютеры (то есть ноутбуки), планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые «смарт» телефоны, так называемые «смарт» клавиатуры, телевизоры, камеры, устройства отображения, цифровые медиаплееры, пульты видео игр, устройство потоковой передачи видео, или подобное. В некоторых случаях исходное устройство 12 и устройство 14 назначения может быть оборудовано для беспроводной связи.
[0056] Устройство 14 назначения может принять закодированные видео данные, которые должны быть декодированы, через линию связи 16. Линия связи 16 может содержать любой тип носителя или устройства, способного к перемещению закодированных видео данных от исходного устройства 12 к устройству 14 назначения. В одном примере линия связи 16 может содержать коммуникационный носитель, чтобы разрешить исходному устройству 12 передать закодированные видео данные непосредственно к устройству 14 назначения в реальном времени. Закодированные видео данные могут быть модулированными согласно стандарту связи, такому как протокол беспроводной связи, и переданы к устройству 14 назначения. Коммуникационный носитель может содержать любой беспроводной или проводной коммуникационный носитель, такой как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационный носитель может быть частью основанной на пакетной передаче сети, такой как локальная сеть, региональная сеть, или глобальная сеть, такая как Интернет. Коммуникационный носитель может включать в себя маршрутизаторы, коммутаторы, базовые станции, или любое другое оборудование, которое может быть полезным, чтобы облегчить связь от исходного устройства 12 к устройству 14 назначения.
[0057] Альтернативно, закодированные данные могут быть выведены из интерфейса 22 вывода на запоминающее устройство 36. Аналогично, закодированные данные могут быть доступны из запоминающего устройства 36 с помощью интерфейса 28 ввода из устройства 14 назначения. Запоминающее устройство 36 может включать в себя любое из множества распределенных или локально доступных запоминающих носителей данных, таких как накопитель на жестких дисках, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память, или любые другие подходящие цифровые запоминающие носители для того, чтобы хранить закодированные видео данные. В другом примере запоминающее устройство 36 может соответствовать файловому серверу или другому промежуточному устройству хранения, которое может считать закодированные видео данные, сгенерированные исходным устройством 12. Устройство 14 назначения может получить доступ к сохраненным видео данным из запоминающего устройства 36 с помощью потоковой передачи или загрузки. Файловый сервер может быть любым типом сервера, способного к тому, чтобы хранить закодированные видео данные и передавать эти закодированные видео данные к устройству 14 назначения. Файловые серверы примера включают в себя web-сервер (например, для вебсайта), сервер FTP, устройства подсоединенных к сети запоминающих устройств (NAS), или локальный дисковод. Устройство 14 назначения может получить доступ к закодированным видео данным через любое стандартное соединение данных, включая интернет-соединение. Это может включать в себя беспроводный канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем, и т.д.), или комбинацию обоих, которая является подходящей для того, чтобы получить доступ к закодированным видео данным, хранящимся на файловом сервере. Передача закодированных видео данных из запоминающего устройства 36 может быть потоковой передачей, передачей загрузки, или комбинацией обоих.
[0058] Способы настоящего раскрытия не обязательно ограничены беспроводными приложениями или параметрами настройки. Способы могут быть применены к кодированию видео в поддержку любого из множества мультимедийных приложений, таких как эфирное телевидение, передачи кабельного телевидения, передачи спутникового телевидения, потоковые видео передачи, например, через Интернет, кодирование цифрового видео для хранения на запоминающем носителе данных, декодирования цифрового видео, сохраненного на запоминающем носителе данных, или других приложений. В некоторых примерах система 10 может быть сконфигурирована, чтобы поддерживать одностороннюю или двухстороннюю передачу видео, чтобы поддерживать приложения, такие как потоковая передача видео, воспроизведение видео, вещание видео, и/или видео телефония.
[0059] В примере на ФИГ. 1 исходное устройство 12 включает в себя видео источник 18, видео кодер 20 и интерфейс 22 вывода. В некоторых случаях интерфейс 22 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик. В исходном устройстве 12 видео источник 18 может включать в себя источник, такой как устройство захвата видео, например, видео камера, видео архив, содержащий ранее захваченное видео, интерфейс подачи видео, чтобы принять видео от поставщика видео контента, и/или систему компьютерной графики для того, чтобы генерировать данные компьютерной графики в качестве исходного видео, или комбинацию таких источников. В качестве одного примера, если видео источник 18 является видео камерой, исходное устройство 12 и устройство 14 назначения могут сформировать так называемые камерофоны или видео телефоны. Однако, способы, описанные в настоящем раскрытии, могут быть применимыми к кодированию видео вообще, и могут быть применены к беспроводным и/или проводным приложениям.
[0060] Захваченное, предварительно захваченное, или машинно-генерируемое видео может быть закодировано видео кодером 20. Закодированные видео данные могут быть переданы непосредственно к устройству 14 назначения через интерфейс 22 вывода из исходного устройства 12. Закодированные видео данные могут также (или альтернативно) сохраняться на запоминающее устройство 36 для более позднего доступа устройством 14 назначения или другими устройствами, для декодирования и/или воспроизведения.
[0061] Устройство 14 назначения включает в себя интерфейс 28 ввода, видео декодер 30, и устройство 32 отображения. В некоторых случаях интерфейс 28 ввода может включать в себя приемник и/или модем. Интерфейс 28 ввода из устройства 14 назначения может принять закодированные видео данные по линии связи 16. Закодированные видео данные, переданные по линии связи 16, или предоставленные на запоминающем устройстве 36, могут включать в себя множество элементов синтаксиса, генерируемых видео кодером 20, для использования видео декодером, таким как видео декодер 30, при декодировании видео данных. Такие элементы синтаксиса могут быть включены с закодированными видео данными, переданными на коммуникационном носителе, сохранены на запоминающем носителе, или сохранены на файловом сервере.
[0062] Устройство 32 отображения может быть интегрированным с, или быть внешним к устройству 14 назначения. В некоторых примерах устройство 14 назначения может включать в себя интегрированное устройство отображения и также быть сконфигурированным, чтобы соединяться с внешним устройством отображения. В других примерах устройство 14 назначения может быть устройством отображения. Вообще, устройство 32 отображения отображает декодированные видео данные пользователю, и может содержать любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED), или другой тип устройства отображения.
[0063] Видео кодер 20 и видео декодер 30 могут работать согласно стандарту сжатия видео, такому как развивающийся стандарт высокоэффективного кодирования видео (HEVC), и могут соответствовать тестовой модели HEVC (HM). Альтернативно, видео кодер 20 и видео декодер 30 могут работать согласно другим составляющим собственность стандартам или стандартам промышленности, таким как Стандарт ITU-T H.264, альтернативно названный MPEG-4, Часть 10, Усовершенствованное видео кодирование (AVC), или расширениям таких стандартов, например, расширениям по кодированию видео с множественными видами (MVC) или масштабируемому кодированию видео (SVC). Способы настоящего раскрытия, однако, не ограничены никаким конкретным стандартом кодирования. Другие примеры стандартов сжатия видео включают в себя MPEG-2 и ITU-T H.263.
[0064] Хотя не показано на ФИГ. 1, в некоторых аспектах видео кодер 20 и видео декодер 30 могут каждый интегрироваться с аудио кодером и декодером, и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексор - демультиплексор, или другое аппаратное обеспечение и программное обеспечение, обрабатывать кодирование как аудио, так и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах, блоки MUX-DEMUX могут соответствовать протоколу ITU H.223 мультиплексора, или другим протоколам, таким как протокол дейтаграмм пользователя (UDP).
[0065] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера, например, как один или более микропроцессоров, цифровые сигнальные процессоры (DSPs), специализированные интегральные схемы (ASICs), программируемые пользователем вентильные матрицы (FPGAs), дискретная логика, программное обеспечение, аппаратное обеспечение, программно-аппаратные средства или любые их комбинации. Когда способы реализованы частично в программном обеспечении, устройство может сохранить инструкции для программного обеспечения в подходящем невременном считываемом компьютером носителе и выполнять инструкции в аппаратном обеспечении, используя один или более процессоров, чтобы выполнить способы настоящего раскрытия. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного кодера/декодера (кодек) в соответствующем устройстве.
[0066] В целом рабочая модель HM описывает, что видео кадр или картинка могут быть разделены на последовательность блоков дерева или наибольших единиц кодирования (LCU), которые включают в себя выборки как яркости так и цветности. Блок дерева имеет аналогичную цель как макроблок стандарта H.264. Вырезка включает в себя множество последовательных блоков дерева в порядке кодирования. Видео кадр или картинка могут быть разделены на одну или более вырезок. Каждый блок дерева может быть разделен на единицы кодирования (CUs) согласно квадродереву. Например, блок дерева, в качестве корневого узла квадродерева, может быть разделен на четыре дочерних узла, и каждый дочерний узел может в свою очередь быть родительским узлом и быть разделен еще на четыре дочерних узла. Заключительный, неразделенный дочерний узел, в качестве листового узла квадродерева, содержит узел кодирования, то есть закодированный блок видео. Данные синтаксиса, ассоциированные с закодированным потоком битов, могут определить максимальное количество раз, сколько блок дерева может быть разделен, и может также определить минимальный размер узлов кодирования.
[0067] CU включает в себя узел кодирования и единицы предсказания (единицы PU), и единицы преобразования (TUs), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен быть квадратным по форме. Размер CU может ранжироваться от 8×8 пикселей до размера блока дерева с максимумом 64×64 пикселей или более. Каждая CU может содержать одну или более единиц PU и одну или более единиц TU. Данные синтаксиса, ассоциированные с CU, могут описывать, например, разделение CU в одну или более единиц PU. Режимы разделения могут отличаться между тем, является ли CU закодированной в режиме пропуска или прямом режиме, закодированной в режиме внутреннего предсказания или режиме внешнего предсказания. Единицы PU могут быть разделены, чтобы быть неквадратными по форме. Данные синтаксиса, ассоциированные с CU, могут также описывать, например, разделение CU в одну или более единиц TU согласно квадродереву. TU может быть квадратной или неквадратной по форме.
[0068] Стандарт HEVC обеспечивает преобразования согласно единицам TU, которые могут быть различными для различных единиц CU. Единицы TU типично имеют размеры на основании размера единиц PU в пределах заданной CU, определенной для разделенной LCU, хотя это может не всегда иметь место. Единицы TU типично имеют тот же размер или меньший, что единицы PU. В некоторых примерах остаточные выборки, соответствующие CU, могут быть подразделены на меньшие блоки, используя структуру квадродерева, известную как "остаточное квадродерево" (RQT). Листовые узлы RQT могут упоминаться как единицы преобразования (TUs). Значения пиксельной разности, ассоциированные с единицами TU, могут быть преобразованы, чтобы сформировать коэффициенты преобразования, которые могут быть квантованы.
[0069] Вообще, PU включает в себя данные, относящиеся к процессу предсказания. Например, когда PU является закодированной во внутреннем режиме, PU может включать в себя данные, описывающие режим внутреннего предсказания для PU. В качестве другого примера, когда PU является закодированной во внешнем режиме, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения для PU, могут описывать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, пиксельную точность в одну четверть или пиксельную точность в одну восьмую), опорную картинку, на которую вектор движения указывает, и/или список опорных картинок (например, Список 0 или Список 1) для вектора движения.
[0070] Вообще, TU используется для процессов квантования и преобразования. Заданная CU, имеющая одну или более единиц PU, может также включать в себя одну или более единиц преобразования (TU). Следуя предсказанию, видео кодер 20 может вычислить остаточные значения, соответствующие PU. Остаточные значения содержат значения пиксельной разности, которые могут быть преобразованы в коэффициенты преобразования, квантованы и сканированы, используя единицы TU, чтобы сформировать преобразованные в последовательную форму коэффициенты преобразования для энтропийного кодирования. Настоящее раскрытие типично использует термин "блок видео", чтобы ссылаться на узел кодирования единицы CU. В некоторых конкретных случаях настоящее раскрытие может также использовать термин "блок видео", чтобы ссылаться на блок дерева, то есть LCU, или CU, которая включает в себя узел кодирования и единицы PU и TU.
[0071] Видео последовательность типично включает в себя последовательность видео кадров или картинок. Группа картинок (GOP) обычно содержит последовательность из одной или более видео картинок. GOP может включать данные синтаксиса в заголовок GOP, заголовок одной или более картинок или в другое место, которое описывает множество картинок, включенных в GOP. Каждая вырезка картинки может включать в себя данные синтаксиса вырезки, которые описывают режим кодирования для соответствующей вырезки. Видео кодер 20 типично оперирует над блоками видео в пределах индивидуальных видео вырезок, чтобы закодировать видео данные. Блок видео может соответствовать узлу кодирования в пределах CU. Блоки видео могут иметь фиксированный или переменный размеры, и могут отличаться по размеру согласно указанному стандарту кодирования.
[0072] В качестве примера, HM поддерживает предсказание в PU различных размеров. Предполагая, что размер конкретной CU равен 2N×2N, HM поддерживает внутреннее предсказание в размерах PU 2N×2N или N×N, и внешнее предсказание в симметричных размерах PU 2N×2N, 2N×N, N×2N, или N×N. HM также поддерживает асимметричное разделение для внешнего предсказания в размерах PU 2N×nU, 2N×nD, nL×2N, и nR×2N. При асимметричном разделении одно направление CU не разделяется, в то время как другое направление разделяется на 25% и 75%. Часть CU, соответствующая 25%-ому разделению, обозначена «n», с последующей индикацией «верхний» «нижний», «левый, или «правый». Таким образом, например, «2N×nU» относится к 2N×2N CU, которая разделена горизонтально с 2N×0,5N PU сверху и 2N×1,5N PU внизу.
[0073] В настоящем раскрытии «N×N» и «N на N» могут использоваться взаимозаменяемо, чтобы ссылаться на пиксельные измерения блока видео в терминах вертикального и горизонтального измерений, например, 16×16 пикселей или 16 на 16 пикселей. Вообще, блок 16×16 имеет 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогично, блок N×N обычно имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целочисленное значение. Пиксели в блоке могут быть размещены в рядах и колонках. Кроме того, блоки не обязательно должны иметь то же количество пикселей в горизонтальном направлении, как в вертикальном направлении. Например, блоки могут содержать N×M пикселей, где М не обязательно равно N.
[0074] После кодирования с внутренним предсказанием или внешним предсказанием, используя единицы PU в CU, видео кодер 20 может вычислить остаточные данные для единиц TU в CU. Единицы PU могут содержать пиксельные данные в пространственной области (также называемой пиксельной областью), и единицы TU могут содержать коэффициенты в области преобразования после применения преобразования, такого как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет преобразование, или концептуально подобное преобразование, к остаточным видео данным. Остаточные данные могут соответствовать пиксельным разностям между пикселями незакодированной картинки и значениями предсказания, соответствующих единицам PU. Видео кодер 20 может сформировать единицы TU, включающие в себя остаточные данные для CU, и затем преобразовать единицы TU, чтобы сформировать коэффициенты преобразования для CU.
n
[0075] После любого преобразования, чтобы сформировать коэффициенты преобразования, видео кодер 20 может выполнить квантование коэффициентов преобразования. Квантование вообще относится к процессу, в котором коэффициенты преобразования квантуются, чтобы возможно уменьшить объем данных, использованных для представления коэффициентов, обеспечивая дальнейшее сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение может быть округлено в меньшую сторону к m-битовому значению во время квантования, где больше, чем m.
[0076] В некоторых примерах видео кодер 20 может использовать заранее заданный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования, чтобы сформировать преобразованный в последовательную форму вектор, который может быть энтропийно кодирован. В других примерах видео кодер 20 может выполнить адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы сформировать одномерный вектор, видео кодер 20 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному кодированию с переменной длиной кода (CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), основанному на синтаксисе контекстно-адаптивному двоичному арифметическому кодированию (SBAC), энтропийному кодированию с разделением интервала вероятности (PIPE) или другой методологии энтропийного кодирования. Видео кодер 20 может также энтропийно кодировать элементы синтаксиса, ассоциированные с закодированными видео данными, для использования видео декодером 30 при декодировании видео данных.
[0077] Чтобы выполнить CABAC, видео кодер 20 может назначить контекст в пределах контекстной модели символу, который должен быть передан. Контекст может относиться к тому, например, являются ли соседние значения символа ненулевыми или нет. Чтобы выполнить CAVLC, видео кодер 20 может выбрать код с переменной длиной слова для символа, который должен быть передан. Кодовые слова в VLC могут быть построены таким образом, что относительно более короткие коды соответствуют более вероятным символам, в то время как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может достигнуть экономии битов, например, используя кодовые слова равной длины для каждого символа, который должен быть передан. Определение вероятности может быть основано на контексте, назначенном на символ.
[0078] Видео кодер 20 может также послать данные синтаксиса, такие как основанные на блоке данные синтаксиса, основанные на кадре данные синтаксиса, и основанные на GOP данные синтаксиса, к видео декодеру 30, например, в заголовке кадра, заголовке блока, заголовке вырезки, или заголовке GOP. Данные синтаксиса GOP могут описывать множество кадров в соответствующей GOP, и данные синтаксиса кадра могут указывать режим кодирования/предсказания, использованный для соответствующего кадра.
[0079] Кроме того, видео кодер 20 может декодировать закодированные картинки, например, посредством обратного квантования и обратного преобразования остаточных данных, и объединить остаточные данные с данными предсказания. В этом способе видео кодер 20 может моделировать процесс декодирования, выполненный видео декодером 30. Как видео кодер 20 так и видео декодер 30 поэтому будут иметь доступ к по существу одним и тем же декодированным картинкам для использования в предсказании между картинками.
[0080] Вообще, видео декодер 30 может выполнить процесс декодирования, который является инверсией процесса кодирования, выполняемого видео кодером. Например, видео декодер 30 может выполнить энтропийное декодирование, используя инверсию способов энтропийного кодирования, используемых видео кодером, чтобы энтропийно кодировать квантованные видео данные. Видео декодер 30 может далее обратно квантовать видео данные, используя инверсию способов квантования, используемых видео кодером 20, и может выполнить инверсию преобразования, используемого видео кодером 20, чтобы сформировать коэффициенты преобразования, которые квантованы. Видео декодер 30 может затем применить результирующие остаточные блоки к смежным опорным блокам (внутреннее предсказание) или опорным блокам от другой картинки (внешнее предсказание), чтобы сформировать блок видео для возможного отображения. Видео декодер 30 может быть сконфигурирован, проинструктирован, управляем или предписан выполнять инверсию различных процессов, выполненных видео кодером 20, на основании элементов синтаксиса, предоставленных видео кодером 20 с закодированными видео данными в потоке битов, принятом видео декодером 30.
[0081] В некоторых примерах видео кодер 20 и видео декодер 30 могут использовать способы для кодирования видео с множественными видами, например, кодирования видео данных, включающих в себя два или более вида. В таких примерах видео кодер 20 может закодировать поток битов, который включает в себя закодированные видео данные для двух или более видов, и видео декодер 30 может декодировать закодированные видео данные, чтобы обеспечить два или более вида, например, на устройство 32 отображения. В некоторых примерах видео декодер 30 может обеспечить множественные виды видео данных, чтобы разрешить устройству 32 отображения отобразить 3D видео. В некоторых примерах видео кодер 20 и видео декодер 30 могут соответствовать 3D-HEVC - расширению стандарта HEVC, например, в котором используются кодирование множественных видов или процессы кодирования множественных видов плюс глубина. Расширение HEVC для процессов кодирования 3D-HEVC в настоящее время находится в развитии и, как теперь предложено, использует кодирование множественных видов или процессы кодирования множественных видов плюс глубина.
[0082] 3DV расширение HEVC может упоминаться основанное на HEVC 3DV или 3D-HEVC. 3D-HEVC базируется, по меньшей мере частично, на решениях, предложенных в Schwarz et al, “Description of 3D Video Coding Technology Proposal by Fraunhofer HHI (HEVC compatible configuration A), ISO/IEC JTC1/SC29/WG11, Doc. MPEG11/M22570, Geneva, Switzerland, November/December 2011, в дальнейшем «m22570» и Schwarz et al, “Description of 3D Video Coding Technology Proposal by Fraunhofer HHI (HEVC compatible configuration B), ISO/IEC JTC1/SC29/WG11, Doc. MPEG11/M22571, Geneva, Switzerland, November/December 2011, в дальнейшем "m22571". Справочное описание программного обеспечения для 3D-HEVC доступно в Schwarz et al, “Test Model under Consideration for HEVC based 3D video coding,” ISO/IEC JTC1/SC29/WG11 MPEG2011/N12559, San Jose, USA, Feb. 2012. Справочное программное обеспечение, а именно, версия 3.0 HTM доступна, на 21 мая 2013, по адресу: <https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-3.0/>.
[0083] Кодирование множественных видов или 3D видео кодирование может вовлекать кодирование двух или более видов текстуры и/или видов, включая компоненты текстуры и глубины. В некоторых примерах видео данные, закодированные видео кодером 20 и декодированные видео декодером 30, включают в себя две или более картинок в любой заданный момент времени, то есть в пределах «единицы доступа», или данные, из которых две или более картинок в любой заданный момент времени могут быть выведены.
[0084] В некоторых примерах устройство, например, видео источник 18, может генерировать эти две или более картинок, например, используя две или более пространственно смещенных камеры, или другие устройства захвата видео, чтобы захватить общую сцену. Две картинки одной и той же сцены, захваченной одновременно, или почти одновременно, с немного различающихся горизонтальных позиций, могут быть использованы для формирования трехмерного эффекта. В некоторых примерах видео источник 18 (или другой компонент исходного устройства 12) может использовать информацию глубины или информацию диспарантности, чтобы генерировать вторую (или другую дополнительную) картинку и второй (или другой дополнительный) вид в заданный момент времени из первой картинки первого вида в этот заданный момент времени. В этом случае вид в пределах единицы доступа может включать в себя компонент текстуры, соответствующий первому виду, и компонент глубины, который может использоваться с компонентом текстуры, чтобы генерировать второй вид. Информация глубины или диспарантности может быть определена устройством захвата видео, захватывающим первый вид, например, основанные на камере параметры или другую информацию, известную относительно конфигурации устройства захвата видео и захвата видео данных для первого вида. Информация глубины или диспарантности может дополнительно или альтернативно быть вычислена, например, видео источником 18 или другим компонентом исходного устройства 12 из параметров камеры и/или видео данных в первом виде.
[0085] Чтобы представить 3D видео, устройство 32 отображения может одновременно, или почти одновременно, показывать две картинки, ассоциированные с различными видами общей сцены, которые были захвачены одновременно или почти одновременно. В некоторых примерах пользователь устройства 14 назначения может носить активные очки, чтобы быстро и попеременно закрывать левую и правую линзы, и устройство 32 отображения может быстро переключаться между левым видом и правым видом в синхронизации с активными очками. В других примерах устройство 32 отображения может показать два вида одновременно, и пользователь может носить пассивные очки, например, с поляризованными линзами, которые фильтруют виды, чтобы вынудить надлежащие виды пройти через глаза пользователя. В других примерах устройство 32 отображения может содержать автостереоскопический дисплей, который не требует, чтобы очки для пользователя чувствовали эффект 3D.
[0086] В случае кодирования множественных видов, например, в 3D-HEVC, предсказание между картинками может включать в себя предсказание текущего блока видео, например, PU, от другого блока видео на временно различной картинке, то есть от другой единицы доступа в качестве текущей картинки, так же как предсказание от другой картинки в той же самой единице доступа в качестве текущей картинки, но ассоциированной с другим видом, чем текущая картинка. В последнем случае внешнее предсказание может упоминаться как кодирование между видами. При кодировании картинки небазового вида, например, зависимого вида, картинка из той же единицы доступа, но другого вида, например, из опорного вида, может быть добавлена в список опорных картинок. Опорная картинка между видами может быть помещена в любую позицию списка опорных картинок, как имеет место с любой опорной картинкой с внешним предсказанием (например, временной или между видами).
[0087] При кодировании множественных видов имеются два вида векторов предсказания. Один является вектором движения, указывающим на блок во временной опорной картинке, и соответствующее внешнее предсказание упоминается как предсказание с компенсацией движения (MCP). Другим типом вектора предсказания является вектор диспарантности, который указывает на блок на картинке в той же самой текущей картинке единицы доступа, но другого вида. С вектором диспарантности соответствующее внешнее предсказание упоминается как предсказание с компенсацией диспарантности (DCP).
[0088] В некоторых примерах видео кодер 20 и видео декодер 30 могут использовать способы для масштабируемого кодирования видео, например, кодирование потока битов высококачественного видео, который также содержит один или более потоков битов поднабора. Поток битов видео поднабора может быть выведен посредством отбрасывания пакетов из большего потока битов высококачественного видео, чтобы уменьшить полосу пропускания, требуемую для потока битов поднабора. Поток битов поднабора может предоставить более низкое пространственное разрешение (меньший экран), более низкое временное разрешение (более низкую частоту кадров), или сигнал видео пониженного качества. Различные потоки битов могут упоминаться как уровни и подуровни. Масштабируемое кодирование видео может включать в себя определение или конструирование точек операции, когда уровни представлены в различных организациях. В некоторых примерах видео кодер 20 и видео декодер 30 могут соответствовать расширению масштабируемого кодирования видео стандарта кодирования видео, такого как HEVC.
[0089] Масштабируемое кодирование видео может включать в себя временную масштабируемость для уровней с различными разрешениями. Для масштабируемого кодирования видео GOP может включать в себя так называемую ключевую картинку, и все картинки, которые расположены в порядке вывода/отображения между этой ключевой картинкой и предыдущей ключевой картинкой. Ключевая картинка может быть закодирована с регулярными или нерегулярными интервалами, и может быть или внутренне кодированной или внешне кодированной с использованием предыдущей ключевой картинки в качестве ссылки для предсказания с компенсацией движения. Неключевые картинки могут быть иерархически предсказаны из картинок с более низкими временными уровнями, и ключевая картинка может иметь самый низкий временный уровень.
[0090] Масштабируемое кодирование видео может также включать в себя предсказание между уровнями для пространственной масштабируемости и масштабируемости отношения сигнала к шуму (SNR), на основании текстуры, остатка и движения. Пространственная масштабируемость может быть обобщена до любого отношения разрешений между двумя уровнями. Масштабируемость SNR может реализоваться масштабируемостью грубой степени детализации (CGS), масштабируемостью средней степени детализации (MDS), или масштабируемостью мелкого зерна (FGS). Два пространственных или уровня CGS могут принадлежать уровням различной зависимости, в то время как два уровня MDS могут быть в уровне одной и той же зависимости. Масштабируемое кодирование видео может обеспечить способы предсказания между уровнями, которые могут быть использованы, чтобы уменьшить избыточность между уровнями. Они в общем называются как предсказание текстуры между уровнями, предсказание остатка между уровнями, и предсказание движения между уровнями.
[0091] Видео кодер 20 генерирует поток битов для приема и/или поиска видео декодером 30. Поток битов может включать в себя закодированные данные, например, закодированные видео данные и информацию синтаксиса, и может упоминаться как закодированный поток битов. Видео кодер 20 может организовать видео данные в потоке битов в единицы уровня абстракции сети (NAL), каждая из которых может быть по существу пакетом с целым количеством байтов. Видео кодер 20, интерфейс 22 вывода, другой компонент исходного устройства 12, или другое устройство могут объединять в кадр или инкапсулировать единицы NAL в пакеты транспортного протокола системы, например, пакеты интернет-протокола (IP) или пакеты транспортного протокола в реальном времени (RTP), для передачи через линию связи 16 или сохранения в запоминающем устройстве 36.
[0092] Единицы NAL могут включать в себя единицы NAL уровня кодирования видео (VCL) и единицы NAL не-VCL. Единицы NAL VCL включают в себя закодированные видео данные, которые, как описано выше, могут включать в себя множество уровней и/или видов. Единицы NAL не-VCL могут включать в себя любую ассоциированную дополнительную информацию, такую как информация синтаксиса, использованная для помощи видео декодеру 30 при декодировании и/или отображении видео картинок, представленных закодированными видео данными, или для обеспечения устойчивости к ошибкам.
[0093] Информация синтаксиса, предоставленная видео кодером 20, может включать в себя наборы параметров, такие как PPSs, SPSs и VPSs, как описано выше. В некоторых примерах видео кодер 20 может обеспечить наборы параметров через канал, который несет единицы NAL VCL, к которым они применяются, например, перед единицами NAL VCL, к которым они применяются с помощью единиц NAL не-VCL, что может упоминаться как передача наборов параметров "внутри диапазона». В других примерах видео кодер 20 может обеспечить наборы параметров видео декодеру 30 через другой транспортный механизм, например, «вне диапазона», что может быть более надежным чем видео канал непосредственно. В других примерах видео кодер 20 и/или видео декодер 30 могут быть трудно кодируемыми с наборами параметров.
[0094] Как описано выше, видео декодер 30 может сохранить наборы параметров в соответствующих структурах данных для каждого типа набора параметров, например, таблице PPS, включающей в себя множество PPS, таблице SPS, включающей в себя множество SPS, и таблице VPS, включающей в себя множество VPS, каждый набор параметров в одной из структур данных включает в себя различные значения для набора параметров. Видео декодер 30 может активировать один или более наборов параметров каждого типа в любой заданный момент, чтобы декодировать закодированные видео данные, например, посредством копирования данных набора параметров в соответствующие структуры данных декодирования, и применения этих данных в структурах декодирования, чтобы декодировать закодированные видео данные.
[0095] Видео декодер 30 может активировать наборы параметров, чтобы декодировать видео данные одной или более единиц NAL VCL в ответ на обращение к ним, прямо или косвенно, в одной или более единиц NAL VCL, например, в заголовке вырезки единицы NAL VCL. Как описано выше, каждый набор параметров может включать в себя ID, на который можно также сослаться в другом наборе параметров (например, на ID VPS ссылаются в SPS и на ID SPS ссылаются в PPS), или в пределах заголовка вырезки или в другом месте в пределах единицы NAL VCL. Видео декодер 30 может активировать PPS на основании ссылки на его ID PPS в заголовке вырезки или в другом месте в пределах единицы NAL VCL, активировать SPS на основании ссылки на его ID SPS в активированном PPS, и активировать VPS на основании ссылки на его ID VPS в активированном SPS.
[0096] Информация синтаксиса, которую видео кодер 20 предоставляет видео декодеру 30, может также включать в себя сообщение дополнительной информации расширения (SEI). Некоторые сообщения SEI является уровнем последовательности (например, относящиеся к закодированной группе картинок (GOP) или другой последовательности закодированных видео картинок), в то время как другие могут относится к конкретной закодированной картинке. Сообщения SEI типично передаются с конкретной закодированной картинкой. Таким образом, чтобы извлечь сообщение SEI, видео декодер обычно должен извлекать закодированную картинку, которая включает в себя сообщение SEI. Одно или более сообщений SEI могут быть включены в единицу NAL не-VCL , которая может упоминаться как единица NAL SEI.
[0097] Набор единиц NAL в указанной форме может упоминаться как единица доступа. Декодирование каждой единицы доступа видео декодером 30 может привести к одной или более декодированным картинкам или кадрам. В случае кодирования видео с множественными видами декодирование каждой единицы доступа видео декодером 30 может привести к двум или более картинкам, или кадрам, ассоциированным с соответствующими видами в тот же (или по существу тот же) момент времени. В случае масштабируемого кодирования видео каждая единица доступа может включать в себя множество уровней и/или подуровней видео данных для единственной картинки или кадра. Единица доступа, генерируемая видео кодером 20, может включать в себя одну или более единиц NAL VCL, и одну или более единиц NAL не-VCL, например, единицы NAL SEI, которые содержат информацию синтаксиса, например, сообщения SEI, используемые видео декодером, чтобы декодировать видео данные в пределах единиц NAL VCL единицы доступа.
[0098] Как описано выше, сообщения SEI, включенные в закодированный поток битов видео кодером 20, могут включать в себя, в качестве примеров, сообщение SEI активных наборов параметров и сообщение SEI периода буферизации. Согласно предложениям о стандарте HEVC, SPS, в дополнение к тому, чтобы быть активированным, посредством обращения к нему в PPS, может быть активирован посредством обращения к нему в сообщении SEI периода буферизации. В таких примерах видео кодер 20 может закодировать сообщение SEI периода буферизации таким образом, что оно включает в себя ID SPS для SPS, который должен быть активирован. Видео декодер 30 активирует SPS, ассоциированный с ID SPS, в декодированном сообщении SEI периода буферизации.
[0099] Дополнительно, согласно HEVC WD8, видео кодер 20 может закодировать сообщение SEI активных наборов параметров, чтобы указывать в настоящее время активный VPS и в настоящее время активный SPS, например, посредством включения VPS и ID SPS для в настоящее время активного VPS и SPS в сообщение SEI активных наборов параметров. Согласно HEVC WD8, видео декодер 30 не активирует VPS и SPS посредством VPS и SPS, на которые ссылаются в сообщении SEI активных наборов параметров. Вместо этого видео кодер 20 может включать сообщение SEI активных наборов параметров в закодированный поток битов, чтобы указывать видео декодеру 30, какие наборы параметров видео декодер должны в настоящее время быть активными для декодирования видео данных, и таким образом позволять видео декодеру подтвердить надлежащую операцию декодирования.
[0100] Вообще, сообщение SEI активных наборов параметров, определенное посредством HEVC WD8, указывает, какой VPS является активным и какой SPS является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров, например, в пределы которого включено сообщение SEI активных наборов параметров. Сообщение SEI активных наборов параметров может также предоставить другую информацию. Согласно HEVC WD8, сообщение SEI активных наборов параметров предшествует, в порядке декодирования, первой части видео данных, например, первой единице NAL VCL, в единице доступа, например, в единице NAL не-VCL, которая предшествует первой единице NAL VCL в единице доступа.
[0101] Синтаксис и семантика сообщения SEI активных наборов параметров в спецификации HVEC WD8 являются следующими:
active_parameter_sets(payloadSize) {
Дескриптор
active_vps_id
u(4)
<u>active_seq_param_set_id</u>
<u>ue(v)</u>
active_param_set_sei_extension_flag
u(1)
}
[0102] active_vps_id указывает VPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров.
[0103] active_seq_param_set_id указывает идентификатор единственного SPS, который является активным для единиц NAL VCL единицы доступа, ассоциированных с сообщением SEI активных наборов параметров. Значение active_seq_param_set_id может быть в диапазоне от 0 до 31, включительно.
[0104] active_param_set_sei_extension_flag когда равняется 0, указывает, что никакие дополнительные данные не следуют в сообщении SEI активных наборов параметров. Имеется требование соответствия потока битов, что значение active_param_set_sei_extension_flag должно быть равным 0. Значение 1 для active_param_set_sei_extension_flag сохранено для будущего использования ITU-T | ISO/IEC. Декодеры должны игнорировать значение active_param_set_sei_extension_flag в сообщении SEI активных наборов параметров и должны игнорировать все данные, которые следуют в сообщении SEI активных наборов параметров после значения 1 для active_param_set_sei_extension_flag.
[0105] Как описано выше, в некоторых примерах согласно настоящему описанию, видео кодер 20 может включать множественные ID SPS в сообщение SEI таким образом, что множественные активные наборы SPS (некоторые из которых могут упоминаться как наборы SPS активного уровня) могут быть указаны. В некоторых примерах, вместо единственного ID SPS, заданного посредством HEVC WD8, видео кодер 20 может включать множественные ID SPS в сообщение SEI активных наборов параметров. Видео кодер 20 может указывать множественные активные наборы SPS, каждый из которых может использоваться видео декодером 30, чтобы декодировать один или более уровней и/или видов, чтобы облегчить кодирование видео с множественными видами, 3DV, или масштабируемое кодирование видео. В примерах, в которых видео кодер 20 включает множественные ID SPS в сообщение SEI активных наборов параметров, это сообщение SEI активных наборов параметров указывает, какой VPS является активным и какие наборы SPS являются активными для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров.
[0106] В различных примерах согласно настоящему описанию, описанному здесь и описанному в дальнейшем, предполагается, что все наборы SPS совместно используют одно и то же пространство значений для их ID SPS и различные уровни или виды могут совместно использовать наборы SPS. Если различные уровни или виды совместно не используют наборы SPS, то ID уровня или ID вида также должен быть сообщен, или ID уровня или ID вида может быть неявно выведен в дополнение к ID SPS, чтобы идентифицировать SPS. Например, если SPS применяется только к базовому уровню или базовому виду, ID уровня или ID вида может быть неявно выведен как равный 0. Соответственно, видео кодировщик может вывести ID уровня на основании иерархической позиции уровня или вида относительно других уровней или видов.
[0107] Один пример синтаксиса и семантики сообщения SEI активных наборов параметров, которое может быть предоставлено видео кодером 20, чтобы указывать множественные наборы SPS согласно способам настоящего раскрытия, являются следующими:
active_parameter_sets(payloadSize) {
Дескриптор
active_vps_id
u(4)
<u>active_seq_param_set_id</u>
<u>ue(v)</u>
<u>bit_equal_to_one</u>
<u>f(1)</u>
<u>num_additional_sps_ids_minus1</u>
<u>ue(v)</u>
<u>for(i=0; i<=num_additional_sps_ids_minus1; i++)</u>
<u>additional_active_sps_id[I]</u>
<u>ue(v)</u>
<u>active_param_set_sei_extension2_flag</u>
<u>u(1)</u>
}
[0108] active_vps_id указывает VPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров.
[0109] active_seq_param_set_id указывает идентификатор одного SPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI. Значение active_seq_param_set_id может быть в диапазоне от 0 до 31, включительно.
[0110] bit_equal_to_one равен 1. Этот элемент синтаксиса всегда равен единице для обратной совместимости.
[0111] num_additional_sps_ids_minus1 плюс 1 задает количество дополнительных наборов SPS (которые могут также упоминаться как наборы SPS активного уровня), которые являются активными для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI. Значение num_additional_sps_ids_minus1 может быть в диапазоне от 0 до 30, включительно.
[0112] additional_active_sps_id [i] задает идентификатор i-го дополнительного SPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров. Значение additional_active_sps_id [i] может быть в диапазоне от 0 до 31, включительно.
[0113] active_param_set_sei_extension2_flag, когда равняется 0, указывает, что никакие дополнительные данные не следуют в сообщении SEI активных наборов параметров. Имеется требование соответствия потока битов, что значение active_param_set_sei_extension2_flag должно быть равным 0. Значение 1 для active_param_set_sei_extension2_flag сохранено для будущего использования ITU-T | ISO/IEC. Декодеры должны игнорировать значение active_param_set_sei_extension2_flag в сообщении SEI активных наборов параметров и должны игнорировать все данные, которые следуют в сообщении SEI активных наборов параметров после значения 1 для active_param_set_sei_extension2_flag.
[0114] В качестве другого примера, синтаксис и семантика сообщения SEI активных наборов параметров, которое может быть предоставлено видео кодером 20 согласно способам настоящего раскрытия и в основной спецификации HEVC и в расширении спецификации HEVC, например, для масштабируемого кодирования множественных видов, 3DV, или масштабируемого кодирования видео, могут быть следующими:
active_parameter_sets(payloadSize) {
Дескриптор
active_vps_id
u(4)
<u>num_sps_ids_minus1</u>
<u>ue(v)</u>
<u>for(i=0; i<=num_sps_ids_minus1; i++)</u>
<u>active_sps_id[i]</u>
<u>ue(v)</u>
active_param_set_sei_extension_flag
u(1)
}
[0115] active_vps_id идентифицирует VPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров.
[0116] num_sps_ids_minus1 плюс 1 задает количество наборов SPS (некоторые из которых могут также упоминаться как наборы SPS активного уровня), которые являются активными для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров. Значение num_sps_ids_minus1 может быть в диапазоне от 0 до 31, включительно.
[0117] active_sps_id [i] задает идентификатор i-го SPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI. Значение active_sps_id [i] может быть в диапазоне от 0 до 31, включительно.
[0118] active_param_set_sei_extension_flag, когда равняется 0, указывает, что никакие дополнительные данные не следуют в сообщении SEI активных наборов параметров. Имеется требование соответствия потока битов, что значение active_param_set_sei_extension_flag должно быть равным 0. Значение 1 для active_param_set_sei_extension_flag сохранено для будущего использования ITU-T|ISO/IEC. Декодеры должны игнорировать значение active_param_set_sei_extension_flag в сообщении SEI активных наборов параметров и должны игнорировать все данные, которые следуют в сообщении SEI активных наборов параметров после значения 1 для active_param_set_sei_extension_flag.
[0119] В вышеупомянутых примерах, в которых видео кодер 20 обеспечивает сообщение SEI активных наборов параметров, которое указывает активный VPS и один или более активных наборов SPS, активация наборов параметров может быть той же самой как в HEVC WD8. Например, видео декодер 30 может активировать PPS на основании ID PPS в заголовке вырезки, предоставленном в закодированном потоке битов видео кодером 20. Видео декодер 30 может далее активировать один или более наборов SPS, на основании ID SPS в таким образом активированном PPS, или предоставленном видео кодером 20 сообщении SEI периода буферизации, и может активировать VPS на основании ID VPS в активированном SPS.
[0120] В других примерах, в которых кодер 20 обеспечивает сообщение SEI, которое указывает активный VPS и один или более активных наборов SPS, видео декодер 30 может активировать VPS и/или один или более наборов SPS на основании VPS и/или наборов SPS, на которые ссылаются в сообщении SEI. В таких примерах сообщение SEI не только указывает активный VPS и активные наборы SPS, но также и активирует их. Соответственно, в таких примерах, активация VPS и наборов SPS изменена по сравнению с таковым в HEVC WD8.
[0121] Например, видео кодер 20 может обеспечить сообщение SEI активных наборов параметров, которое указывает активный VPS и один или более активных наборов SPS, и видео декодер 30 может активировать VPS и/или один или более наборов SPS на основании того, что на них ссылались в сообщении SEI. Кроме того, в таких примерах ID SPS может быть удален из сообщения SEI периода буферизации, то есть видео кодер 20 может закодировать сообщение SEI периода буферизации таким образом, что оно исключает любой ID SPS. В таких примерах видео кодер 20 может закодировать поток битов таким образом, что, для каждой единицы доступа, которая включает в себя сообщение SEI периода буферизации, должно также быть сообщение SEI активных наборов параметров, и сообщение SEI активных наборов параметров должно быть первым сообщением SEI в первой единице NAL SEI единицы доступа.
[0122] Синтаксис и семантика сообщения SEI периода буферизации, которое может быть предоставлено видео кодером 20 согласно способам, в которых ID SPS удален из сообщения SEI периода буферизации, следующие:
[0123] Изменением в синтаксисе и семантике сообщения SEI периода буферизации относительно HEVC WD8 является удаление элемента синтаксиса seq_parameter_set_id.
[0124] Пример синтаксиса и семантики сообщения SEI активных наборов параметров, которое может быть предоставлено видео кодером 20 согласно способам, в которых сообщение SEI активных наборов параметров активирует VPS и один или более наборов SPS, и ID SPS удален из сообщения SEI периода буферизации, является следующим:
active_parameter_sets(payloadSize) {
Дескриптор
active_vps_id
u(4)
<u>active_seq_param_set_id</u>
<u>ue(v)</u>
<u>bit_equal_to_one</u>
<u>f(1)</u>
<u>num_additional_sps_ids_minus1</u>
<u>ue(v)</u>
<u>for(i=0; i<=num_additional_sps_ids_minus1; i++)</u>
<u>additional_active_sps_id[i]</u>
<u>ue(v)</u>
<u>active_param_set_sei_extension2_flag</u>
<u>u(1)</u>
}
[0125] active_vps_id указывает VPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров.
[0126] active_seq_param_set_id указывает идентификатор одного SPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI. Значение active_seq_param_set_id может быть в диапазоне от 0 до 31, включительно.
[0127] bit_equal_to_one равен 1.
[0128] num_additional_sps_ids_minus1 плюс 1 задает количество дополнительных наборов SPS (которые могут также упоминаться как наборы SPS активного уровня), которые являются активными для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI. Значение num_additional_sps_ids_minus1 может быть в диапазоне от 0 до 30, включительно.
[0129] additional_active_sps_id [i] задает идентификатор i-го дополнительного SPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров. Значение additional_active_sps_id [i] может быть в диапазоне от 0 до 31, включительно.
[0130] active_param_set_sei_extension2_flag когда равняется 0, указывает, что никакие дополнительные данные не следуют в сообщении SEI активных наборов параметров. Имеется требование соответствия потока битов, что значение active_param_set_sei_extension2_flag должно быть равным 0. Значение 1 для active_param_set_sei_extension2_flag сохранено для будущего использования ITU-T|ISO/IEC. Декодеры должны игнорировать значение active_param_set_sei_extension2_flag в сообщении SEI активных наборов параметров и должны игнорировать все данные, которые следуют в сообщении SEI активных наборов параметров после значения 1 для active_param_set_sei_extension2_flag.
[0131] В качестве другого примера, синтаксис и семантика сообщения SEI активных наборов параметров, которое может быть предоставлено видео кодером 20 согласно способам настоящего раскрытия и в основной спецификации HEVC и в расширении спецификации HEVC, например, для масштабируемого кодирования множественных видов, 3DV, или масштабируемого кодирования видео, согласно способам, в которых сообщение SEI активных наборов параметров активирует VPS и один или более наборов SPS, и SPS, ID удален из сообщения SEI периода буферизации, могут быть следующими:
active_parameter_sets(payloadSize) {
Дескриптор
active_vps_id
u(4)
<u>num_sps_ids_minus1</u>
<u>ue(v)</u>
<u>for(i=0; i<=num_sps_ids_minus1; i++)</u>
<u>active_sps_id[i]</u>
<u>ue(v)</u>
active_param_set_sei_extension_flag
u(1)
}
[0132] active_vps_id идентифицирует VPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров.
[0133] num_sps_ids_minus1 плюс 1 задает количество наборов SPS (некоторые из которых могут также упоминаться как наборы SPS активного уровня), которые являются активными для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI активных наборов параметров. Значение num_sps_ids_minus1 может быть в диапазоне от 0 до 31, включительно.
[0134] active_sps_id [i] задает идентификатор i-го SPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI. Значение active_sps_id [i] может быть в диапазоне от 0 до 31, включительно.
[0135] active_param_set_sei_extension_flag когда равняется 0, указывает, что никакие дополнительные данные не следуют в сообщении SEI активных наборов параметров. Имеется требование соответствия потока битов, что значение active_param_set_sei_extension_flag должно быть равным 0. Значение 1 для active_param_set_sei_extension_flag сохранено для будущего использования ITU-T|ISO/IEC. Декодеры должны игнорировать значение active_param_set_sei_extension_flag в сообщении SEI активных наборов параметров и должны игнорировать все данные, которые следуют в сообщении SEI активных наборов параметров после значения 1 для active_param_set_sei_extension_flag.
[0136] В других примерах, вместо сообщения SEI активных наборов параметров, видео кодер 20 обеспечивает сообщение SEI периода буферизации, которое указывает активный VPS и один или более активных наборов SPS, и видео декодер 30 может активировать VPS и/или один или более наборов SPS на основании того, что на них ссылаются в сообщении SEI периода буферизации. В таких примерах сообщение SEI активных наборов параметров может быть удалено, например, видео кодер 20 может закодировать поток битов таким образом, что единица доступа, включающая в себя сообщение SEI периода буферизации, которое активирует PPS и один или более наборов SPS, не включает в себя сообщения SEI активных наборов параметров, предоставляющее информацию синтаксиса к видео декодеру 30 для декодирования видео данных единицы доступа. Кроме того, вместо единственного ID SPS и отсутствия ID VPS, как определено в HEVC WD8, сообщение SEI периода буферизации может включать в себя множество ID SPS, так же как ID VPS.
[0137] Один пример синтаксиса и семантики сообщения SEI периода буферизации, которое может быть предоставлено видео кодером 20, чтобы активировать VPS и один или более наборов SPS, является следующим:
buffering_period(payloadSize) {
Дескрип-тор
<u>video_parameter_set_id</u>
<u>u(4)</u>
<u>num_sps_ids_minus1</u>
<u>ue(v)</u>
<u>for(i=0; i<=num_sps_ids_minus1; i++)</u>
<u>active_sps_id [i]</u>
<u>ue(v)</u>
if(!sub_pic_cpb_params_present_flag)
alt_cpb_params_present_flag
u(1)
if(NalHrdBpPresentFlag) {
for(SchedSelIdx=0;SchedSelIdx<=cpb_cnt_minus1; SchedSelIdx++) {
initial_cpb_removal_delay[SchedSelIdx]
u(v)
initial_cpb_removal_delay_offset[SchedSelIdx]
u(v)
if( sub_pic_cpb_params_present_flag | |alt_cpb_params_present_flag) {
initial_alt_cpb_removal_delay[SchedSelIdx]
u(v)
initial_alt_cpb_removal_delay_offset[SchedSelIdx]
u(v)
}
}
}
if(VclHrdBpPresentFlag) {
for( SchedSelIdx=0; SchedSelIdx<=cpb_cnt_minus1; SchedSelIdx++) {
initial_cpb_removal_delay[SchedSelIdx]
u(v)
initial_cpb_removal_delay_offset[SchedSelIdx]
u(v)
if(sub_pic_cpb_params_present_flag||rap_cpb_params_present_flag) {
initial_alt_cpb_removal_delay[SchedSelIdx]
u(v)
initial_alt_cpb_removal_delay_offset[SchedSelIdx]
u(v)
}
}
}
}
[0138] Семантика для тех элементов синтаксиса, которые не упомянуты ниже, является той же как в HEVC WD8.
[0139] active_vps_id идентифицирует VPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI периода буферизации.
[0140] num_sps_ids_minus1 плюс 1 задает количество наборов SPS (некоторые из которых могут также упоминаться как активные наборы параметров последовательности уровня), которые являются активными для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI периода буферизации. Значение num_sps_ids_minus1 может быть в диапазоне от 0 до 31, включительно.
[0141] active_sps_id [i] задает идентификатор i-го SPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI периода буферизации. Значение active_sps_id [i] может быть в диапазоне от 0 до 31, включительно.
[0142] Другой пример синтаксиса и семантики сообщения SEI периода буферизации, которое может быть предоставлено видео кодером 20, чтобы активировать VPS и один или более наборов SPS, является следующим:
buffering_period(payloadSize) {
Дескриптор
<u>video_parameter_set_id</u>
<u>u(4)</u>
seq_parameter_set_id
ue(v)
<u>num_addtional_sps_ids</u>
<u>ue(v)</u>
<u>for(i=0; i<num_additional_sps_ids; i++)</u>
<u>sps_id_additional[i]</u>
<u>ue(v)</u>
if(!sub_pic_cpb_params_present_flag)
alt_cpb_params_present_flag
u(1)
if(NalHrdBpPresentFlag) {
for(SchedSelIdx=0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++) {
initial_cpb_removal_delay[SchedSelIdx]
u(v)
initial_cpb_removal_delay_offset[SchedSelIdx]
u(v)
if(sub_pic_cpb_params_present_flag||alt_cpb_params_present_flag) {
initial_alt_cpb_removal_delay[SchedSelIdx]
u(v)
initial_alt_cpb_removal_delay_offset[SchedSelIdx]
u(v)
}
}
}
if(VclHrdBpPresentFlag) {
for(SchedSelIdx=0; SchedSelIdx <= cpb_cnt_minus1; SchedSelIdx++) {
initial_cpb_removal_delay[SchedSelIdx]
u(v)
initial_cpb_removal_delay_offset[SchedSelIdx]
u(v)
if(sub_pic_cpb_params_present_flag| |rap_cpb_params_present_flag) {
initial_alt_cpb_removal_delay[SchedSelIdx]
u(v)
initial_alt_cpb_removal_delay_offset[SchedSelIdx]
u(v)
}
}
}
}
[0143] Семантика для тех элементов синтаксиса, которые не упомянуты ниже, является такой же как в HEVC WD8.
[0144] video_parameter_set_id идентифицирует VPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI периода буферизации.
[0145] num_additional_sps_ids задает количество дополнительных наборов SPS (которые могут также упоминаться как наборы SPS активного уровня), которые являются активными для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI периода буферизации. Значение num_additional_sps_ids может быть в диапазоне от 0 до 31, включительно.
[0146] sps_id_additional [i] задает идентификатор i-го дополнительного SPS, который является активным для единиц NAL VCL единицы доступа, ассоциированной с сообщением SEI периода буферизации. Значение sps_id_additional [i] может быть в диапазоне от 0 до 31, включительно.
[0147] Первые примерные синтаксис и семантика сообщения SEI периода буферизации, использованные для активизации PPS и одного или более наборов SPS, могут использоваться, например, в спецификации расширения, например, HEVC, для множественных видов масштабируемого кодирования видео. Вторые примерные синтаксис и семантика сообщения SEI периода буферизации, использованные для активизации PPS и одного или более наборов SPS, могут использоваться, например, или в основной спецификации или в спецификации расширения, например, HEVC. В некоторых примерах элементы синтаксиса num_addtional_sps_ids и sps_id_additional [i] вторых примерных синтаксиса и семантики сообщения SEI периода буферизации присутствуют только в спецификации расширения, и не присутствуют в основной спецификации, например, HEVC. В некоторых примерах в основной спецификации значение элемента синтаксиса num_addtional_sps_ids второго примера обязано быть равным 0. В примерах, в которых эти элементы синтаксиса не присутствуют в основной спецификации, или новое сообщение SEI периода буферизации может быть необходимо в расширениях, или новый другой тип сообщения SEI может быть необходим, чтобы передать дополнительный ID SPS.
[0148] В примерах согласно этому раскрытию, в которых VPS и один или более наборов SPS активированы видео декодером 30 на основании того, что на них ссылаются в сообщении SEI, например, таком как примеры, описанные выше относительно сообщения SEI активных наборов параметров и сообщения SEI периода буферизации, активация, согласно некоторым примерам, может быть следующей. Полезные данные необработанной последовательности битов SPS (RBSP) включают в себя параметры, на которые могут ссылаться один или более RBSPs PPS, или одну или более единиц NAL SEI, содержащих сообщение SEI, например, сообщение SEI активных наборов параметров или периода буферизации. Каждый RBSP SPS, например, сохраненный в таблице или другой структуре данных наборов SPS, первоначально считают не активным в начале операции процесса декодирования. Самое большее один RBSP SPS можно считать активным в любой заданный момент для конкретного уровня или вида во время операции процесса декодирования, и активация любого конкретного RBSP SPS приводит к деактивации ранее активного RBSP SPS (если имеется) для конкретного уровня или вида.
[0149] Когда конкретный RBSP SPS, с конкретным значением ID SPS (например, значением seq_parameter_set_id) не является уже активным, и на него ссылаются посредством активации PPS RBSP, например, используя это значение ID SPS, или на него ссылаются посредством единицы NAL SEI, содержащей сообщение SEI, например, используя это значение ID SPS, он активируется для конкретного уровня или вида как идентифицированный посредством ID уровня или ID вида, включенных в единицы NAL VCL единицы доступа, содержащей сообщение SEI или единицы NAL VCL, которые ссылаются на PPS RBSP. Сообщение SEI может быть сообщением SEI активных наборов параметров или сообщением SEI периода буферизации, как описано выше. Этот RBSP SPS называют активным RBSP SPS для конкретного уровня или вида, пока он не деактивирован активацией другого RBSP SPS для того же самого уровня или вида. Видео кодер 20 может обеспечить RBSP SPS с этим конкретным значением ID SPS, например, значением seq_parameter_set_id, к декодеру 30 до процесса декодирования и активации SPS. Например, кодер может обеспечить SPS посредством включения в по меньшей мере одну единицу доступа с TemporalId равным 0, если SPS не предоставлен декодеру 30 через внешнее средство. Активированный RBSP SPS для конкретного уровня или вида должен остаться активным для конкретного уровня для всей закодированной видео последовательности.
[0150] Любая единица NAL SPS, содержащая значение ID SPS, например, значение seq_parameter_set_id, для активного RBSP SPS для конкретного уровня или вида для закодированной видео последовательности, должна иметь тот же контент как таковой из активного RBSP SPS для уровня или вида для закодированной видео последовательности, если только она не следует за последней единицей доступа закодированной видео последовательности и не предшествует первой единице NAL VCL и первой единице NAL SEI, содержащей сообщение SEI, например, сообщение SEI активных наборов параметров или периода буферизации, когда присутствует, другой закодированной видео последовательности.
[0151] VPS RBSP включает в себя параметры, на которые могут ссылаться один или более RBSP SPS или, согласно способам настоящего раскрытия, одна или более единиц NAL SEI, содержащих сообщение SEI. Сообщение SEI может быть сообщением SEI активных наборов параметров или сообщением SEI периода буферизации, как описано выше. Каждый RBSP VPS первоначально считают не активным в начале операции процесса декодирования. Самое большее один RBSP VPS считают активным в любой заданный момент во время операции процесса декодирования, и активация любого конкретного RBSP VPS приводит к деактивации ранее активного RBSP VPS (если имеется).
[0152] Когда RBSP VPS с конкретным значением ID VPS (например, значением video_parameter_set_id) не является уже активным, и на него ссылаются посредством активации RBSP SPS, например, используя это значение ID VPS, или, согласно способам настоящего раскрытия, упомянутой единицей NAL SEI, содержащей сообщение SEI, например, используя это значение ID VPS, он активируется. Как описано выше, сообщение SEI может быть сообщение SEI активных наборов параметров или периода буферизации, в качестве примеров. RBSP VPS с конкретным значением ID VPS называют активным RBSP VPS, пока он не будет деактивирован активацией другого RBSP VPS. RBSP VPS с этим конкретным значением ID VPS должен быть доступным для видео декодера 30 до его активации и включен в по меньшей мере одну единицу доступа с TemporalId равным 0, если только VPS не будет предоставлен видео декодеру 30 через внешнее средство. Активированный RBSP VPS должен остаться активным для всей закодированной видео последовательности. Любая единица NAL VPS, содержащая значение ID VPS, например, значение video_parameter_set_id, для активного RBSP VPS для закодированной видео последовательности, должна иметь тот же контент, как таковой активных RBSP VPS для закодированной видео последовательности, если только она не следует за последней единицей доступа закодированной видео последовательности и не предшествует первой единице NAL VCL и первой единице NAL набора параметров последовательности другой закодированной видео последовательности.
[0153] Видео кодер 20 и видео декодер 30 каждый может быть реализован как любая из множества подходящих схем кодера или декодера, когда применимо, таких как один или более микропроцессоров, цифровые сигнальные процессоры (DSPs), специализированные интегральные схемы (ASICs), программируемые пользователем вентильные матрицы (FPGAs), дискретная логическая схема, программное обеспечение, аппаратное обеспечение, программно-аппаратные средства или любые их комбинации. Каждый из видео кодера 20 и видео декодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного видео кодера/декодера (кодек). Устройство, включающее в себя видео кодер 20 и/или видео декодер 30, может содержать интегральную схему, микропроцессор, и/или устройство беспроводной связи, такое как сотовый телефон.
[0154] ФИГ. 2 является блок-схемой, иллюстрирующей примерную конфигурацию видео кодера 20, который может реализовать способы для активации наборов параметров и индикацию того, какие наборы параметров являются активными для кодирования видео согласно этому раскрытию. Видео кодер 20 может выполнить внутреннее и внешнее кодирование блоков видео в пределах видео вырезок. Внутреннее кодирование полагается на пространственное предсказание, чтобы уменьшить или удалить пространственную избыточность в видео в пределах заданного видео кадра или картинки. Внешнее кодирование полагается на временное предсказание, чтобы уменьшить или удалить временную избыточность в видео в пределах смежных кадров или картинок видео последовательности. Внутренний режим (I режим) может относиться к любому из нескольких пространственных основанных режимов сжатия. Внешние режимы, такие как однонаправленное предсказание (P режим) или bi-предсказание (B режим), могут относиться к любому из нескольких основанных на времени режимов сжатия.
[0155] В примере на ФИГ. 2 видео кодер 20 включает в себя модуль 35 разделения, модуль 41 обработки предсказания, память 64 опорных картинок, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования, и модуль 56 энтропийного кодирования. Модуль 41 обработки предсказания включает в себя модуль 42 оценки движения, модуль 44 компенсации движения и модуль 46 обработки внутреннего предсказания. Для реконструкции блока видео видео кодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обработки обратного преобразования и сумматор 62. Фильтр удаления блочности (не показан на ФИГ. 2) может также быть включен, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Если желательно, фильтр удаления блочности типично может фильтровать выходной сигнал сумматора 62. Дополнительные фильтры контура (в контуре или после контура) могут также использоваться в дополнение к фильтру удаления блочности.
[0156] Как показано на ФИГ. 2, видео кодер 20 принимает видео данные, и модуль 35 разделения разделяет данные в блоки видео. Это разделение может также включать в себя разделение на вырезки, мозаичные элементы, или другие большие блоки, а также разделение блока видео, например, согласно структуре квадродерева единиц LCU и CU. Примерная конфигурация видео кодера 20, иллюстрированная на ФИГ. 2, в общем иллюстрирует компоненты, которые кодируют блоки видео в пределах видео вырезки, которая должны быть закодирована. Вырезка может быть разделена на множественные блоки видео (и возможно на наборы блоков видео, называемых мозаичные элементы).
[0157] Модуль 41 обработки предсказания может выбрать один из множества возможных режимов кодирования, таких как один из множества режимов внутреннего кодирования или один из множества внешних режимов кодирования, для текущего блока видео, на основании результатов ошибок (например, скорость кодирования и уровень искажения). Модуль 41 обработки предсказания может выдать результирующий внутренне или внешне кодированный блок к сумматору 50, чтобы генерировать остаточные данные блока, и к сумматору 62, чтобы восстановить закодированный блок для использования в качестве опорной картинки.
[0158] Модуль 46 обработки внутреннего предсказания в пределах блока 41 обработки предсказания может выполнить кодирование с внутренним предсказанием текущего блока видео относительно одного или более соседних блоков в том же самом кадре или вырезке как и текущий блок, который должен быть закодирован, чтобы обеспечить пространственное сжатие. Модуль 42 оценки движения и модуль 44 компенсации движения в пределах блока 41 обработки предсказания выполняют кодирование с внешним предсказанием текущего блока видео относительно одного или более предсказывающих блоков в одной или более опорных картинок, чтобы обеспечить временное сжатие.
[0159] Модуль 42 оценки движения может быть сконфигурирован, чтобы определить режим внешнего предсказания для видео вырезки согласно заранее определенному шаблону для видео последовательности. Заранее определенный шаблон может определять видео вырезки в последовательности как P вырезки, B вырезки или вырезки GPB. Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированными, но иллюстрированы отдельно в концептуальных целях. Оценка движения, выполняемая модулем 42 оценки движения, является процессом генерирования векторов движения, которые оценивают движение для блоков видео. Вектор движения, например, может указывать смещение единицы PU блока видео в пределах текущего видео кадра или картинки относительно предсказывающего блока в пределах опорной картинки.
[0160] Предсказывающий блок является блоком, который обнаруживают, как близко соответствующий PU блока видео, который должен быть закодирован, в терминах пиксельной разности, которая может быть определена суммой абсолютных разностей (SAD), суммой разностей квадратов (SSD), или другими метриками разности. В некоторых примерах видео кодер 20 может вычислить значения для суб-целочисленных пиксельных позиций опорных картинок, сохраненных в памяти 64 опорных картинок. Например, видео кодер 20 может интерполировать значения пиксельных позиций с одной четвертью, пиксельных позиций с одной восьмой, или других фракционных пиксельных позиций опорной картинки. Поэтому модуль 42 оценки движения может выполнить поиск движения относительно полных пиксельных позиций и фракционных пиксельных позиций и вывести вектор движения с фракционной пиксельной точностью.
[0161] Модуль 42 оценки движения вычисляет вектор движения для PU блока видео во внешне кодированной вырезке, сравнивая позицию PU с позицией предсказывающего блока опорной картинки. Опорная картинка может быть выбрана из первого списка опорных картинок (Список 0) или второго списка опорных картинок (Список 1), каждый из которых идентифицирует одну или более опорных картинок, сохраненных в памяти 64 опорных картинок. Модуль 42 оценки движения посылает вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.
[0162] Компенсация движения, выполняемая модулем 44 компенсации движения, может вовлечь извлечение или генерирование предсказывающего блока на основании вектора движения, определенного посредством оценки движения, возможно выполняя интерполяцию до суб-пиксельной точности. После приема вектора движения для PU текущего блока видео модуль 44 компенсации движения может определить местонахождение предсказывающего блока, на который вектор движения указывает в одном из списков опорных картинок. Видео кодер 20 формирует остаточный блок видео посредством вычитания пиксельных значений предсказывающего блока из пиксельных значений текущего закодированного блока видео, формируя значения пиксельной разности. Значения пиксельной разности формируют остаточные данные для блока, и могут включать в себя компоненты разности как яркости так и цветности. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания.
[0163] Модуль 44 компенсации движения может также генерировать элементы синтаксиса, ассоциированные с блоками видео и видео вырезкой, для использования видео декодером 30 при декодировании блоков видео видео вырезки. Например, модуль 44 компенсации движения может генерировать наборы параметров и сообщения SEI согласно способам настоящего раскрытия. В других примерах модуль 42 оценки движения, модуль 46 обработки внутреннего предсказания, модуль 41 обработки предсказания, и/или другой компонент видео кодера 20 может генерировать наборы параметров, сообщения SEI, и другую информацию синтаксиса, описанную здесь согласно способам настоящего раскрытия.
[0164] Модуль 46 обработки внутреннего предсказания может внутренне предсказывать текущий блок, как альтернатива внешнему предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как описано выше. В частности, модуль 46 обработки внутреннего предсказания может определить режим внутреннего предсказания для использования, чтобы закодировать текущий блок. В некоторых примерах модуль 46 обработки внутреннего предсказания может закодировать текущий блок, используя различные режимы внутреннего предсказания, например, во время отдельных проходов кодирования, и модуль 46 обработки внутреннего предсказания (или модуль выбора режима (не показан), в некоторых примерах) может выбрать соответствующий режим внутреннего предсказания для использования из протестированных режимов. Например, модуль 46 обработки внутреннего предсказания может вычислить значения «скорость передачи - искажение», используя анализ «скорость передачи - искажение» для различных протестированных режимов внутреннего предсказания, и выбрать режим внутреннего предсказания, имеющий лучшие характеристики «скорость передачи - искажение» среди протестированных режимов. Анализ «скорость передачи - искажение» вообще определяет величину искажения (или ошибку) между закодированным блоком и первоначальным, незакодированным блоком, который был закодирован, чтобы сформировать закодированный блок, так же как частоту следования битов (то есть количество битов), использованную для формирования закодированного блока. Модуль 46 обработки внутреннего предсказания может вычислить отношения из искажений и скоростей передачи для различных закодированных блоков, чтобы определить, какой режим внутреннего предсказания показывает лучшее значение «скорость передачи - искажение» для блока.
[0165] В любом случае после выбора режима внутреннего предсказания для блока модуль 46 обработки внутреннего предсказания может предоставить информацию, указывающую выбранный режим внутреннего предсказания для блока, к модулю 56 энтропийного кодирования. Модуль 56 энтропийного кодирования может закодировать информацию, указывающую выбранный режим внутреннего предсказания. Видео кодер 20 может включать данные конфигурации в переданный поток битов. Данные конфигурации могут включать в себя множество таблиц индексов режима внутреннего предсказания, и множество модифицированных таблиц индексов режима внутреннего предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, и индикации самого вероятного режима внутреннего предсказания, таблицу индекса режима внутреннего предсказания, и модифицированную таблицу индекса режима внутреннего предсказания, чтобы использовать для каждого из контекстов.
[0166] После того, как модуль 41 обработки предсказания генерирует предсказывающий блок для текущего блока видео или с помощью внешнего предсказания или с помощью внутреннего предсказания, видео кодер 20 формирует остаточный блок видео, вычитая предсказывающий блок из текущего блока видео. Остаточные видео данные в остаточном блоке могут быть включены в одну или более единиц TU и паны к модулю 52 обработки преобразования. Модуль 52 обработки преобразования преобразовывает остаточные видео данные в остаточные коэффициенты преобразования, используя преобразование, такие как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование. Модуль 52 обработки преобразования может преобразовать остаточные видео данные из пиксельной области в область преобразования, такую как частотная область.
[0167] Модуль 52 обработки преобразования может послать результирующие коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы дополнительно уменьшить частоту следования битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть модифицирована, регулируя параметр квантования. В некоторых примерах модуль 54 квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Альтернативно, модуль 56 энтропийного кодирования может выполнить сканирование.
[0168] После квантования модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнить контекстно-адаптивное кодирование с переменной длиной кода (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разделением интервала вероятности (PIPE) или другую методологию или способ энтропийного кодирования. После энтропийного кодирования модулем 56 энтропийного кодирования закодированный поток битов может быть передан к видео декодеру 30 или заархивирован для более поздней передачи или извлечения видео декодером 30. Модуль 56 энтропийного кодирования может также энтропийно кодировать вектора движения, другую информацию движения, и другие элементы синтаксиса для текущей видео закодированной вырезки.
[0169] Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области для более позднего использования в качестве опорного блока опорной картинки. Модуль 44 компенсации движения может вычислить опорный блок, добавляя остаточный блок к предсказывающему блоку одной из опорных картинок в пределах одного из списков опорных картинок. Модуль 44 компенсации движения может также применить один или более фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования при оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания со скомпенсированным движением, сформированному модулем 44 компенсации движения, чтобы сформировать опорный блок для хранения в памяти 64 опорных картинок. Опорный блок может использоваться модулем 42 оценки движения и модулем 44 компенсации движения как опорный блок, чтобы внутренне предсказать блок в последующем видео кадре или картинке.
[0170] Как описано выше, модуль 44 компенсации движения, модуль 42 оценки движения, модуль 46 обработки внутреннего предсказания, модуль 41 обработки предсказания, и/или другой компонент видео кодера 20 могут генерировать информацию синтаксиса, используемую видео декодером 30, чтобы декодировать видео данные, закодированные видео кодером 20. Информация синтаксиса может включать в себя наборы параметров, такие как наборы VPS, SPS и PPS. Информация синтаксиса может также включать в себя сообщения SEI, сконфигурированные согласно способам настоящего раскрытия, такие как сообщения SEI активных наборов параметров и сообщения SEI периода буферизации, сконфигурированные согласно способам, описанным в настоящем описании. Модуль 56 энтропийного кодирования может закодировать сообщения SEI или иначе включить сообщения SEI как часть закодированного потока битов.
[0171] В этом способе видео кодер 20 на ФИГ. 2 представляют пример видео кодера, конфигурируемого, чтобы закодировать поток битов, который включает в себя видео данные и информацию синтаксиса для кодирования видео данных, в котором информация синтаксиса содержит сообщение SEI единицы доступа, в котором сообщение SEI указывает множество наборов SPS и один VPS для декодирования видео данных единицы доступа, и закодировать видео данные единицы доступа на основании упомянутых множества наборов SPS и VPS, указанных в сообщении SEI.
[0172] Видео кодер 20 на ФИГ. 2 также представляют пример видео кодера, конфигурируемого, чтобы закодировать поток битов, который включает в себя видео данные и информацию синтаксиса для декодирования видео данных, в котором информация синтаксиса содержит сообщение SEI, и в котором сообщение SEI указывает один или более наборов SPS и VPS, и кодировать видео данные на основании одного или более наборов SPS и VPS, указанных в сообщении SEI. Видео кодер 20 может закодировать поток битов, чтобы включать сообщение SEI таким образом, что видео декодер активирует один или более наборов SPS и VPS для декодирования видео данных в ответ на индикацию одного или более наборов SPS и VPS в сообщении SEI.
[0173] Видео кодер 20 кодирует сообщение SEI, чтобы заставить видео декодер 30 активировать наборы параметров или указать видео декодеру 30, какие наборы параметров являются активными. Видео кодер 20 также кодирует видео данные на основании одного или более наборов SPS и VPS, указанных в сообщении SEI. Например, видео кодер 20 может закодировать видео данные, используя конкретные значения для изменений параметров, и затем может выбрать наборы параметров для использования видео декодером 30 при декодировании видео данных на основании значений параметров, использованных для кодирования видео данных. Видео кодер 20 может затем кодировать одно или более сообщений SEI, чтобы заставить видео декодер 30 активировать наборы параметров, или указывать видео декодеру 30, какие наборы параметров являются активными.
[0174] ФИГ. 3 является блок-схемой, иллюстрирующей пример видео декодера 30, который может реализовать способы для активации наборов параметров и индикации того, какие наборы параметров являются активными для кодирования видео согласно этому раскрытию. В примере на ФИГ. 3, видео декодер 30 включает в себя модуль 80 энтропийного декодирования, модуль 81 обработки предсказания, модуль 86 обратного квантования, модуль 88 обработки обратного преобразования, сумматор 90 и память 92 опорных картинок. Модуль 81 обработки предсказания включает в себя модуль 82 компенсации движения и модуль 84 обработки внутреннего предсказания. Видео декодер 30, в некоторых примерах, может выполнить проход декодирования, в целом обратный к проходу кодирования, описанному относительно видео кодера 20 на ФИГ. 2.
[0175] Во время процесса декодирования видео декодер 30 принимает закодированный видео поток битов, который представляет блоки видео закодированной видео вырезки, и ассоциированную информацию синтаксиса, например, элементы синтаксиса, от видео кодера 20. Модуль 80 энтропийного декодирования из видео декодера 30 энтропийно декодирует поток битов, чтобы генерировать квантованные коэффициенты, вектора движения, другую информацию движения, и другую информацию синтаксиса. Модуль 80 энтропийного декодирования направляет информацию движения и другие элементы синтаксиса к модулю 81 обработки предсказания. Видео декодер 30 может принять информацию синтаксиса на уровне вырезки видео и/или уровне блока видео, в качестве примеров.
[0176] Когда видео вырезка закодирована как внутренне кодированная (I) вырезка, модуль 84 обработки внутреннего предсказания из модуля 81 обработки предсказания могут генерировать данные предсказания для блока видео текущей видео вырезки на основании сигнализированного режима внутреннего предсказания и данных от ранее декодированных блоков текущего кадра или картинки. Когда видео кадр закодирован как внешне кодированная (то есть B, P или GPB) вырезка, модуль 82 компенсации движения из модуля 81 обработки предсказания формирует предсказывающие блоки для блока видео текущей видео вырезки на основании вектора движения и других элементов синтаксиса, принятых от модуля 80 энтропийного декодирования. Предсказывающие блоки могут быть сформированы из одной из опорных картинок в пределах одного из списков опорных картинок. Видео декодер 30 может построить списки опорных кадров, Список 0 и Список 1, используя способы конструирования по умолчанию, на основании опорных картинок, сохраненных в памяти 92 опорных картинок.
[0177] Модуль 82 компенсации движения определяет информацию предсказания для блока видео текущей видео вырезки, синтаксически разбирая вектора движения и другую информацию синтаксиса, и использует информацию предсказания, чтобы сформировать предсказывающие блоки для текущего декодируемого блока видео. Например, модуль 82 компенсации движения использует часть принятой информации синтаксиса, чтобы определить режим предсказания (например, внутреннее или внешнее предсказание), использованный для кодирования блоков видео вырезки видео, тип вырезки внешнего предсказания (например, B вырезка, P вырезка, или вырезка GPB), информацию конструирования для одного или более списков опорных картинок для вырезки, вектора движения для каждого внешне кодированного блока видео вырезки, статус внешнего предсказания для каждого внешне кодированного блока видео вырезки, и другую информацию, чтобы декодировать блоки видео в текущей видео вырезке.
[0178] Модуль 82 компенсации движения может также выполнить интерполяцию на основании фильтров интерполяции. Модуль 82 компенсации движения может использовать фильтры интерполяции, которые используются видео кодером 20 во время кодирования блоков видео, чтобы вычислить интерполированные значения для суб-целочисленных пикселей опорных блоков. В этом случае модуль 82 компенсации движения может определить фильтры интерполяции, используемые видео кодером 20, из принятых элементов синтаксиса, и использовать фильтры интерполяции, чтобы сформировать предсказывающие блоки.
[0179] Модуль 86 обратного квантования обратно квантует, то есть деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов, и декодированные модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видео кодером 20 для каждого блока видео в видео вырезке, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено. Модуль 88 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование, или концептуально подобный процесс обратного преобразования, к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области.
[0180] После того, как модуль 82 компенсации движения генерирует предсказывающий блок для текущего блока видео на основании вектора движения и других элементов синтаксиса, видео декодер 30 формирует декодированный блок видео, суммируя остаточные блоки от модуля 88 обработки обратного преобразования с соответствующими предсказывающими блоками, генерируемыми модулем 82 компенсации движения. Сумматор 90 представляет компонент или компоненты, которые выполняют эту операцию суммирования. Если желательно, фильтр удаления блочности может также быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блочности. Другие фильтры контура (или в контуре кодирования или после контура кодирования) могут также быть использованы для сглаживания пиксельных переходов, или чтобы иначе улучшить качество видео. Декодированные блоки видео в заданном кадре или картинке затем сохраняют в памяти 92 опорных картинок, которая хранит опорные картинки, используемые для последующей компенсации движения. Память 92 опорных картинок также хранит декодированное видео для более позднего представления на устройстве отображения, таком как устройство 32 отображения на ФИГ. 1.
[0181] Согласно способам настоящего раскрытия, модуль 80 энтропийного декодирования может декодировать, например, энтропийно декодировать, закодированный поток битов, который включает в себя видео данные и информацию синтаксиса. Информация синтаксиса может включать в себя одно или более сообщений SEI, таких как сообщения SEI активных наборов параметров и периода буферизации, как описано в настоящем описании. Модуль 81 обработки предсказания, например, модуль 82 компенсации движения и/или модуль 84 внутреннего предсказания, может активировать один или более наборов параметров, например, VPS и один или более наборов SPS, на основании то, что на них ссылаются в по меньшей мере одном из сообщений SEI. В других примерах сообщение SEI может указывать, какие наборы параметров, например, какой VPS и один или более наборов SPS, являются активными, модулю 81 обработки предсказания, например, модулю 82 компенсации движения и/или модулю 84 внутреннего предсказания. В любом случае модуль 81 обработки предсказания, например, модуль 82 компенсации движения и/или модуль 84 внутреннего предсказания, может использовать наборы активных параметров для декодирования видео данных в пределах закодированного потока битов.
[0182] В этом способе видео декодер 30 на ФИГ. 3 представляют пример видео декодера, конфигурируемого, чтобы декодировать поток битов, который включает в себя видео данные и информацию синтаксиса для декодирования видео данных, при этом информация синтаксиса содержит сообщение SEI единицы доступа, в котором сообщение SEI указывает множество наборов SPS и VPS для декодирования видео данных единицы доступа, и декодировать видео данные единицы доступа на основании множества наборов SPS и VPS, указанных в сообщении SEI.
[0183] Видео декодер 30 также представляет пример видео декодера, конфигурируемого, чтобы декодировать поток битов, который включает в себя видео данные и информацию синтаксиса для декодирования видео данных, в котором информация синтаксиса содержит сообщение SEI, и в котором сообщение SEI указывает один или более наборов SPS и VPS, активировать один или более наборов SPS и VPS для декодирования видео данных на основании индикации одного или более наборов SPS и VPS в сообщении SEI, и декодировать видео данные на основании одного или более активированных наборов SPS и активированного VPS.
[0184] ФИГ. 4 является блок-схемой, иллюстрирующей примерный набор устройств, которые являются частью сети 100. В этом примере сеть 10 включает в себя устройства 104A, 104B маршрутизации (устройства 104 маршрутизации) и устройство 106 транскодирования. Устройства 104 маршрутизации и устройство 106 транскодирования предназначены, чтобы представить небольшое количество устройств, которые могут явиться частью сети 100. Другие сетевые устройства, такие как коммутаторы, центры, шлюзы, брандмауэры, мосты, и другие такие устройства могут также быть включены в пределы сети 100. В некоторых примерах сетевые устройства, которые способны понимать медиа, то есть так называемые осведомленные о медиа элементы сети (MANE), могут реализовать или использовать один или более способов сигнализации набора параметров, описанных здесь. Кроме того, дополнительные сетевые устройства могут быть обеспечены вдоль сетевого пути между серверным устройством 102 и клиентским устройством 108. Серверное устройство 102 может соответствовать исходному устройству 12 (ФИГ. 1), в то время как клиентское устройство 108 может соответствовать устройству 14 назначения (ФИГ. 1), в некоторых примерах.
[0185] Обычно устройства 104 маршрутизации реализуют один или более протоколов маршрутизации, чтобы обмениваться сетевыми данными через сеть 100. В некоторых примерах устройства 104 маршрутизации могут конфигурироваться, чтобы выполнить операции кэша или промежуточных (прокси-) устройств. Поэтому в некоторых примерах устройства 104 маршрутизации могут упоминаться как прокси-устройства. Обычно устройства 104 маршрутизации выполняют протоколы маршрутизации, чтобы обнаружить маршруты через сеть 100. Выполняя такие протоколы маршрутизации, устройство маршрутизации 104B может обнаружить маршрут сети от себя к серверному устройству 102 через устройство маршрутизации 104A.
[0186] Способы настоящего раскрытия могут быть реализованы сетевыми устройствами, такими как устройства 104 маршрутизации и устройство 106 транскодирования, но также и могут быть реализованы клиентским устройством 108. В этом способе устройства маршрутизации 104, устройство 106 транскодирования и клиентское устройство 108 представляют примеры устройств, конфигурируемых, чтобы выполнить способы настоящего раскрытия, включая кодирование потока битов, который включает в себя видео данные и информацию синтаксиса для кодирования видео данных, при этом информация синтаксиса содержит сообщение SEI для единицы доступа видео данных, в котором сообщение SEI указывает множество наборов SPS и VPS, активацию одного или более наборов SPS и VPS для кодирования видео данных единицы доступа на основании индикации одного или более наборов SPS и VPS в сообщении SEI, и/или кодирования видео данных единицы доступа на основании множества наборов SPS и VPS, указанных в сообщении SEI. Кроме того, исходное устройство 12 и устройство 14 назначения на ФИГ. 1, видео кодер 20, показанный на ФИГ. 2 и видео декодер 30, показанный на ФИГ. 3, являются также примерными устройствами, которые могут конфигурироваться, чтобы выполнить способы настоящего раскрытия, включая кодирование потока битов, который включает в себя видео данные и информацию синтаксиса для кодирования видео данных, в котором информация синтаксиса содержит сообщение SEI для единицы доступа видео данных, при этом сообщение SEI указывает множество наборов SPS и VPS, активацию одного или более наборов SPS и VPS для кодирования видео данных единицы доступа на основании индикации одного или более наборов SPS и VPS в сообщении SEI, и/или кодирования видео данных единицы доступа на основании множества наборов SPS и VPS, указанных в сообщении SEI. Другие элементы сети, такие как MANE, могут также использовать способы настоящего раскрытия, чтобы улучшить связь или доставку видео данных на другие устройства.
[0187] ФИГ. 5 является блок-схемой, иллюстрирующей примерный способ для кодирования потока битов, чтобы включать в себя сообщение дополнительной информации расширения (SEI), которое указывает видео декодеру набор активных параметров видео (VPS) и множество активных наборов параметров последовательности (SPSs) для того, чтобы декодировать закодированные видео данные в потоке битов. Согласно примеру на ФИГ. 5, видео кодер, например, видео кодер 20 на ФИГ. 2, кодирует видео данные, например, единицы доступа, на основании VPS и множества наборов SPS (120). Видео данные могут содержать множество уровней, например, для масштабируемого кодирования видео. Видео данные могут дополнительно или альтернативно содержать множество видов, например, для кодирования 3D видео или множественных видов. Каждый из множества наборов SPS может быть ассоциирован с, например, использован для кодирования, видео данными соответствующего одного или более из множества уровней и/или видов.
[0188] Видео кодер может поддерживать наборы VPS, SPS и другие наборы параметров в структурах данных, и активировать наборы параметров для кодирования видео данных в способе, подобном описанному здесь относительно видео декодера, например, видео декодера 30, и декодировать видео данные. В других примерах видео кодер не обязательно поддерживает и активирует набор параметров в способе, подобном видео декодеру. В некоторых примерах видео кодер кодирует видео данные согласно значениям параметра или параметрам настройки, которые соответствуют наборам параметров, например, VPS и наборам SPS, поддерживаемым видео декодером и, в этом способе, видео кодер кодирует видео данные согласно наборам параметров.
[0189] Согласно примеру согласно ФИГ. 5, видео кодер может дополнительно, например, после кодирования видео данных, кодировать сообщение SEI с ID VPS и множеством ID SPS, чтобы указать, например, видео декодеру активный VPS и наборы SPS для декодирования видео данных единицы доступа (122). В некоторых примерах сообщение SEI является сообщением SEI активных наборов параметров. В других примерах сообщение SEI является другим сообщением SEI, таким как сообщение SEI периода буферизации. Видео кодер включает закодированное сообщение SEI и закодированные видео данные в закодированный поток битов, например, который должен быть предоставлен видео декодеру 30 (124). В некоторых примерах видео кодер может включать закодированные видео данные в единицы NAL VCL единицы доступа, и включать сообщение SEI в единицы NAL SEI единицы доступа.
[0190] ФИГ. 6 является блок-схемой, иллюстрирующей примерный способ для декодирования потока битов, который включает в себя сообщение SEI, которое указывает активный VPS и множество активных наборов SPS для декодирования видео данных потока битов. Согласно примерному способу согласно ФИГ. 6, видео декодер, например, видео декодер 30 на ФИГ. 3, принимает закодированный поток битов, включающий в себя закодированные видео данные и сообщение SEI (130). Закодированный поток битов может содержать множество единиц доступа, каждая из которых может включать в себя видео данные, например, в одной или более единиц NAL VCL, и одно или более сообщений SEI, например, в одной или более единиц NAL SEI.
[0191] Видео данные могут содержать множество уровней, например, для масштабируемого кодирования видео. Видео данные могут дополнительно или альтернативно содержать множество видов, например, для кодирования 3D видео или множественных видов. Сообщение SEI может быть сообщением SEI активных наборов параметров, или другим сообщением SEI, таким как сообщение SEI периода буферизации.
[0192] Согласно примерному способу согласно ФИГ. 6, видео декодер декодирует видео данные единицы доступа на основании активного VPS и множества активных наборов SPS для единицы доступа (132). Каждый из множества наборов SPS может быть ассоциирован с, например, использован для декодирования, видео данными соответствующего одного или более из множества уровней и/или видов. Видео декодер также декодирует сообщение SEI (134). Сообщение SEI может включать в себя ID VPS, который указывает активный VPS для декодирования видео данных единицы доступа. Сообщение SEI может также включать в себя множество ID SPS, которые указывают активные наборы SPS для того, чтобы декодировать множество уровней и/или видов единицы доступа. Видео декодер может использовать эти индикации VPS и наборов SPS в сообщении SEI, например, чтобы подтвердить, что надлежащие VPS и SPS были или используются для декодирования видео данных единицы доступа.
[0193] ФИГ. 7 является блок-схемой, иллюстрирующей примерный способ для кодирования потока битов, чтобы включать сообщение SEI, которое указывает видео декодеру VPS и один или более наборов SPS, которые должны быть активированы видео декодером для декодирования видео данных потока битов. Согласно примерному способу согласно ФИГ. 7, видео кодер, например, видео кодер 20 на ФИГ. 3, кодирует видео данные, например, единицы доступа, на основании VPS и одного или более наборов SPS (140). Видео данные могут содержать множество уровней, например, для масштабируемого кодирования видео. Видео данные могут дополнительно или альтернативно содержать множество видов, например, для кодирования 3D видео или множественных видов. Каждый из множества наборов SPS может быть ассоциирован с, например, использован для кодирования, видео данными соответствующего одного или более из множества уровней и/или видов.
[0194] Согласно примеру согласно ФИГ.7, видео кодер может дополнительно, например, после кодирования видео данных, кодировать сообщение SEI с ID VPS и одним или более ID SPS, чтобы заставить видео декодер активировать VPS и один или более наборов SPS для декодирования видео данных единицы доступа (142). В некоторых примерах сообщение SEI является сообщением SEI активных наборов параметров. В других примерах сообщение SEI является другим сообщением SEI, таким как сообщение SEI периода буферизации.
[0195] Видео кодер включает закодированное сообщение SEI и закодированные видео данные в закодированный поток битов, например, который должен быть предоставлен видео декодеру 30 (144). В некоторых примерах видео кодер может включать закодированные видео данные в единицы NAL VCL единицы доступа, и включать сообщение SEI в единицы NAL SEI единицы доступа. В примерах, в которых сообщение SEI, основанное на том, какие видео декодер активирует наборы параметров, чтобы декодировать видео данные единицы доступа, является сообщением SEI активных наборов параметров, видео кодер может закодировать сообщение SEI периода буферизации для единицы доступа таким образом, что оно исключает любой ID SPS. Дополнительно, в примерах, в которых сообщение SEI является сообщением SEI активных наборов параметров, видео кодер может закодировать поток битов таким образом, что каждая единица доступа, которая включает в себя сообщение SEI периода буферизации, также включает в себя сообщение SEI активных наборов параметров, которое является первым сообщением SEI в первой единице NAL SEI единицы доступа. В примерах, в которых сообщение SEI, основанное на том, какие видео декодер активирует наборы параметров, чтобы декодировать видео данные единицы доступа, является сообщением SEI периода буферизации, видео кодер может генерировать закодированный поток битов, например, единицу доступа в пределах потока битов, чтобы исключить любые сообщения SEI активных наборов параметров.
[0196] ФИГ. 8 является блок-схемой, иллюстрирующей примерный способ для декодирования потока битов, который включает в себя сообщение SEI, и формирования VPS и одного или более наборов SPS для декодирования видео данных потока битов, на основании ссылки на VPS и один или более наборов SPS в сообщении SEI. Согласно примерному способу согласно ФИГ. 8 видео декодер, например, видео декодер 30 на ФИГ. 3, принимает закодированный поток битов, включая закодированные видео данные и сообщение SEI (150). Закодированный поток битов может содержать множество единиц доступа, каждая из которых может включать в себя видео данные, например, в одной или более единиц NAL VCL, и одно или более сообщений SEI, например, в одной или более единиц NAL SEI.
[0197] Видео данные могут содержать множество уровней, например, для масштабируемого кодирования видео. Видео данные могут дополнительно или альтернативно содержать множество видов, например, для кодирования 3D видео или множественных видов. Сообщение SEI может быть сообщением SEI активных наборов параметров, или другим сообщением SEI, таким как сообщение SEI периода буферизации.
[0198] Согласно примерному способу согласно ФИГ. 8, видео декодер декодирует сообщение (152) SEI. Сообщение SEI может быть включено в пределах одной из единиц доступа, и таким образом ассоциировано с этой единицей доступа. Видео декодер затем активирует VPS и один или более наборов SPS на основании VPS и одного или более наборов SPS, на которые ссылаются в сообщении SEI, например, на основании включения VPS и ID SPS VPS и наборов SPS в сообщение (154) SEI. Видео декодер затем декодирует видео данные единицы доступа на основании активного VPS и одного или более активных наборов SPS для единицы доступа (156). В примерах, в которые сообщение SEI включает в себя множество ID SPS, каждый из множества наборов SPS, на который ссылаются, может быть ассоциирован с, например, использован для декодирования, видео данными соответствующего одного или более из множества уровней и/или видов.
[0199] Должно быть признано, что в зависимости от примера, некоторые действия или события любого из способов, описанных здесь, могут быть выполнены в иной последовательности, могут быть добавлены, слиты, или не учтены в целом (например, не все описанные действия или события необходимы для практической реализации способов). Кроме того, в некоторых примерах действия или события могут быть выполнены одновременно, например, с помощью многопотоковой обработки, обработки прерываний, или множественных процессоров, а не последовательно.
[0200] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратных средствах, или любой их комбинации. Если реализованы в программном обеспечении, функции могут быть сохранены на или переданы как одна или более инструкций или код по считываемому компьютером носителю и выполнены основанным на аппаратном обеспечении блоком обработки. Считываемый компьютером носитель может включать в себя считываемый компьютером запоминающий носитель, который соответствует материальному носителю, такому как запоминающие носители данных или коммуникационные носители, включая любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. В этом способе считываемый компьютером носитель вообще может соответствовать (1) материальным считываемым компьютером запоминающим носителям, которые являются невременными, или (2) коммуникационному носителю, такому как сигнал или несущая. Запоминающие носители данных могут быть любым доступным носителем, к которому может получить доступ один или более компьютеров или один или более процессоров, чтобы извлечь инструкции, код и/или структуры данных для реализации способов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0201] Посредством примера, а не ограничения, такие считываемые компьютером запоминающие носители могут содержать RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптических дисках, накопитель на магнитных дисках, или другие магнитные запоминающие устройства, флэш-память, или любой другой носитель, который может быть использован для хранения желаемого программного кода в форме инструкций или структур данных, и к которому может получить доступ компьютер. Кроме того, любое соединение должным образом называют считываемым компьютером носителем. Например, если инструкции переданы от вебсайта, сервера, или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, цифровую абонентскую линию (DSL), или беспроводные технологии, такие как инфракрасное, радио- и микроволновое излучение, то эти коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL, или беспроводные технологии такие как инфракрасное, радио- и микроволновое излучение, включены в определение носителя. Нужно подразумевать, однако, что считываемые компьютером запоминающие носители и запоминающие носители данных не включают в себя соединения, несущие, сигналы, или другие переходные носители, но вместо этого направлены на невременные материальные запоминающие носители. Диск и диск, как используется здесь, включают в себя компакт-диск (компакт-диск), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискета и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитно, в то время как диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеупомянутого должны также быть включены в понятие считываемого компьютером носителя.
[0202] Инструкции могут быть выполнены одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASICs), программируемые пользователем логические массивы (FPGAs), или другая эквивалентная интегрированная или дискретная логическая схема. Соответственно, термин "процессор", как используется здесь, может относиться к любой предшествующей структуре или любой другой структуре, подходящей для реализации способов, описанных здесь. Кроме того, в некоторых аспектах функциональные возможности, описанные здесь, могут быть предоставлены в пределах специализированного аппаратного обеспечения и/или программных модулей, конфигурируемых для кодирования и декодирования, или соединенных в объединенный кодек. Кроме того, способы могли быть полностью реализованы в одной или более схемах или логических элементах.
[0203] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или устройств, включая беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, микропроцессорный набор). Различные компоненты, модули, или блоки описаны в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, конфигурируемых, чтобы выполнить раскрытые способы, но не обязательно потребовать реализации различными блоками аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или предоставлены коллекцией взаимодействующих блоков аппаратного обеспечения, включая один или более процессоров как описано выше, в соединении с подходящим программным обеспечением и/или программно-аппаратными средствами.
[0204] Были описаны различные примеры. Эти и другие примеры находятся в рамках следующей формулы изобретения.