КОДИРОВАНИЕ НАБОРОВ ПАРАМЕТРОВ И ЗАГОЛОВКОВ ЕДИНИЦ NAL ДЛЯ КОДИРОВАНИЯ ВИДЕО
ENCODING OF PARAMETER SETS AND NAL UNIT HEADERS FOR VIDEO ENCODING

[0001] Данная заявка испрашивает приоритет:
предварительной заявки США с порядковым №61/586,777, поданной 14 января 2012 г.;
предварительной заявки США с порядковым №61/587,070, поданной 16 января 2012 г.;
предварительной заявки США с порядковым №61/588,629, поданной 19 января 2012 г.;
предварительной заявки США с порядковым №61/637,195, поданной 23 апреля 2012 г.; и
предварительной заявки США с порядковым №61/637,774, поданной 24 апреля 2012 г., каждая из которых полностью включена в этот документ путем ссылки.
ОБЛАСТЬ ТЕХНИКИ
[0002] Данное раскрытие изобретения относится к кодированию видео.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут встраиваться в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового прямого вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), переносные или настольные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, видеоигровые устройства, игровые приставки, сотовые или спутниковые радиотелефоны, так называемые "смартфоны", устройства для видеоконференцсвязи, устройства для потокового видео и т.п. Цифровые видеоустройства реализуют методики кодирования видео, например описанные в стандартах, заданных MPEG-2, MPEG-4, H.263 ITU-T, H.264/MPEG-4 ITU-T, часть 10, Улучшенное кодирование видео (AVC), стандартом Высокоэффективного кодирования видео (HEVC), в настоящее время находящимся в разработке, и расширениях таких стандартов. Последний вариант предстоящего стандарта HEVC доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/7_Geneva/wg11/JCTVC-G1103-v3.zip. Видеоустройства могут эффективнее передавать, принимать, кодировать, декодировать и/или хранить цифровую видеоинформацию с помощью реализации таких методик кодирования видео.
[0004] Методики кодирования видео включают в себя пространственное (внутри (intra) изображения) предсказание и/или временное (между (inter) изображениями) предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям. Для блочного кодирования видео слайс (вырезка) видео (например, видеокадр или часть видеокадра) может разбиваться на видеоблоки, которые также могут называться блоками дерева, единицами кодирования (CU) и/или узлами кодирования. Видеоблоки в слайсе с внутренним кодированием (I) изображения кодируются с использованием пространственного предсказания относительно опорных выборок (отсчетов) в соседних блоках в том же изображении. Видеоблоки в слайсе с внешним кодированием (P или B) изображения могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в том же изображении или временное предсказание относительно опорных выборок в других опорных изображениях. Изображения могут называться кадрами, а опорные изображения могут называться опорными кадрами.
[0005] Пространственное или временное предсказание приводит к блоку с предсказанием для блока, который должен быть кодирован. Остаточные данные представляют собой разности пикселей между исходным блоком, который должен быть кодирован, и блоком с предсказанием. Блок с внешним кодированием кодируется в соответствии с вектором движения, который указывает на блок опорных выборок, образующих блок с предсказанием, и остаточными данными, указывающими разность между кодированным блоком и блоком с предсказанием. Блок с внутренним кодированием кодируется в соответствии с режимом внутреннего кодирования и остаточными данными. Для дополнительного сжатия остаточные данные могут быть преобразованы из области пикселей в область преобразования, что приводит к остаточным коэффициентам преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, организованные первоначально в двумерный массив, можно сканировать для создания одномерного вектора коэффициентов преобразования, и может применяться энтропийное кодирование для достижения еще большего сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В целом данное раскрытие изобретения описывает методики для кодирования наборов параметров и единиц уровня абстракции сети (NAL) для кодирования видео. Эти методики могут применяться к одноуровневым кодированным данным, например двумерным видеоданным, а также к видеоданным масштабируемого кодирования видео (SVC) и видеоданным многовидового кодирования видео (MVC). Таким образом, наборы параметров и единицы NAL могут быть взаимно совместимы между различными типами видеоданных. Например, кодировщик видео, такой как видеокодер или видеодекодер, может кодировать набор параметров видео (VPS), который задает параметры для одного или более уровней видеоданных. Уровни могут соответствовать, например, уровням SVC (имеющим различные частоты кадров, пространственные разрешения и/или уровни качества) и/или видам в данных MVC (например, последовательностям изображений сцены, захваченных с различных ракурсов камер относительно горизонтальной оси).
[0007] В одном примере способ кодирования видеоданных включает в себя кодирование набора параметров видео (VPS) для одного или более уровней видеоданных, при этом каждый из одного или более уровней видеоданных ссылается на VPS, и кодирование одного или более уровней видеоданных основываясь по меньшей мере частично на VPS.
[0008] В другом примере устройство для кодирования видеоданных включает в себя кодировщик видео, например видеокодер или видеодекодер, который конфигурируется для кодирования набора параметров видео (VPS) для одного или более уровней видеоданных, при этом каждый из одного или более уровней видеоданных ссылается на VPS, и кодирования одного или более уровней видеоданных основываясь по меньшей мере частично на VPS.
[0009] В другом примере устройство для кодирования видеоданных включает в себя средство для кодирования набора параметров видео (VPS) для одного или более уровней видеоданных, при этом каждый из одного или более уровней видеоданных ссылается на VPS, и средство для кодирования одного или более уровней видеоданных основываясь по меньшей мере частично на VPS.
[0010] В другом примере считываемый компьютером носитель информации содержит сохраненные на нем инструкции, которые при исполнении побуждают процессор кодировать набор параметров видео (VPS) для одного или более уровней видеоданных, при этом каждый из одного или более уровней видеоданных ссылается на VPS, и кодировать один или более уровней видеоданных основываясь по меньшей мере частично на VPS.
[0011] Подробности одного или более примеров излагаются на прилагаемых чертежах и в описании ниже. Другие признаки, цели и преимущества станут очевидны из описания, чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0012] Фиг. 1 - блок-схема, иллюстрирующая примерную систему кодирования и декодирования видео, которая может использовать методики для кодирования наборов параметров и единиц уровня абстракции сети (NAL) для одного или более уровней видеоданных.
[0013] Фиг. 2 - блок-схема, иллюстрирующая пример видеокодера 20, который может реализовать методики для кодирования наборов параметров и единиц NAL для одного или более уровней видеоданных.
[0014] Фиг. 3 - блок-схема, иллюстрирующая пример видеодекодера 30, который может реализовать методики для кодирования наборов параметров и единиц NAL для одного или более уровней видеоданных.
[0015] Фиг. 4 - концептуальная схема, иллюстрирующая примерный шаблон предсказания MVC.
[0016] Фиг. 5 - концептуальная схема, иллюстрирующая набор параметров видео (VPS) и различные наборы параметров уровней (LPS).
[0017] Фиг. 6 - концептуальная схема, иллюстрирующая примерный группирующий набор параметров (GPS) и взаимосвязи GPS с другими наборами параметров и заголовками слайсов.
[0018] Фиг. 7 - блок-схема последовательности операций, иллюстрирующая примерный способ для кодирования видеоданных в соответствии с методиками из данного раскрытия изобретения.
[0019] Фиг. 8 - блок-схема последовательности операций, иллюстрирующая примерный способ для декодирования видеоданных в соответствии с методиками из данного раскрытия изобретения.
[0020] Фиг. 9 - блок-схема последовательности операций, иллюстрирующая примерный способ кодирования видеоданных основываясь по меньшей мере частично на числе временных уровней, которые сигнализированы в VPS.
[0021] Фиг. 10 - блок-схема последовательности операций, иллюстрирующая примерный способ кодирования видеоданных основываясь по меньшей мере частично на числе изображений, которые должны быть переупорядочены на одном или более уровнях, и изображений, которые должны быть сохранены в буфер декодированных изображений.
[0022] Фиг. 11 - блок-схема последовательности операций, иллюстрирующая примерный способ кодирования видеоданных основываясь по меньшей мере частично на параметрах гипотетического эталонного декодера (HRD), сигнализированных в VPS.
[0023] Фиг. 12 - блок-схема последовательности операций, иллюстрирующая примерный способ кодирования видеоданных основываясь по меньшей мере частично на данных расширения, сигнализированных в VPS.
ПОДРОБНОЕ ОПИСАНИЕ
[0024] Вообще данное раскрытие изобретения описывает кодирование видеоданных с использованием набора параметров видео (VPS). Видеоданные можно категоризировать иерархически как включающие в себя множество уровней, последовательность изображений на заданном уровне, изображение в последовательности, слайсы в изображении и блоки (например, макроблоки или единицы дерева кодирования) в слайсе. Наборы параметров последовательности (SPS) могут использоваться для сигнализации нечасто меняющихся параметров для последовательности изображений, а наборы параметров изображения (PPS) могут использоваться для сигнализации нечасто меняющихся параметров для отдельных изображений.
[0025] В соответствии с методиками из данного раскрытия изобретения VPS может сигнализировать нечасто меняющиеся параметры для множества последовательностей между соответствующими уровнями. То есть VPS может включать в себя параметры для набора совмещенных во времени последовательностей разных уровней. Разные уровни могут включать в себя, например, разные виды для многовидовых видеоданных, разные уровни качества, разные уровни пространственного разрешения, масштабируемые во времени уровни (то есть уровни, допускающие разные частоты кадров), и т.п. Таким образом, один VPS может предоставляться для множества разных уровней, так что VPS сигнализирует параметры, которые являются общими для каждого из соответствующих уровней (например, соответствующие последовательности на соответствующих уровнях). Битовый поток может считаться включающим в себя каждый из множества уровней, и соответствующие уровни могут образовывать соответствующие битовые субпотоки. Кроме того, битовый субпоток может соответствовать сочетанию двух или более уровней.
[0026] Данное раскрытие изобретения описывает различные примеры данных, которые могут включаться в VPS. Такие данные в некоторых примерах могут включать в себя указание числа подуровней (например, максимальное число подуровней) на соответствующих уровнях. Например, VPS может включать в себя данные, которые сигнализируют число временных уровней и/или максимальное число временных уровней (например, идентификатор наивысшего временного уровня).
[0027] В качестве другого примера VPS дополнительно или в качестве альтернативы может включать в себя данные, практически аналогичные любым данным, ранее сигнализированным в SPS (то есть сигнализированным в традиционных SPS). Таким образом, когда последовательности двух или более уровней битового потока включают в себя практически аналогичные или идентичные параметры, кодировщик видео может кодировать VPS для сигнализации параметров для последовательностей тех уровней вместо избыточного кодирования таких данных в соответствующих SPS для различных последовательностей между разными уровнями.
[0028] VPS дополнительно или в качестве альтернативы может включать в себя данные, задающие информацию о применимости видео (VUI), например информацию о представлении видео, параметры гипотетического эталонного декодера (HRD) и/или информацию об ограничении битового потока. Информация об ограничении битового потока может включать в себя ограничения по диапазону векторов движения, размеру буфера декодированных изображений (DPB) (например, в показателях числа изображений, которые должны быть сохранены с помощью DPB), числу переупорядочиваемых кадров (то есть указание числа кадров, которые должны быть переупорядочены из порядка декодирования в порядок отображения), кодированным размерам блоков (например, макроблоков (MB) или единиц дерева кодирования) и кодированным размерам изображений. VPS может дополнительно предоставлять данные для одного или более расширений VPS, так что VPS может расширяться будущими стандартами или расширениями к предстоящему стандарту HEVC.
[0029] Фиг. 1 - блок-схема, иллюстрирующая примерную систему 10 кодирования и декодирования видео, которая может использовать методики для кодирования наборов параметров и единиц уровня абстракции сети (NAL) для одного или более уровней видеоданных. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое предоставляет кодированные видеоданные, которые позднее должны быть декодированы устройством-адресатом 14. В частности, устройство-источник 12 предоставляет видеоданные устройству-адресату 14 посредством считываемого компьютером носителя 16. Устройство-источник 12 и устройство-адресат 14 могут быть выполнены в виде любого из широкого диапазона устройств, включающего в себя настольные компьютеры, блокнотные (то есть переносные) компьютеры, планшетные компьютеры, телевизионные приставки, телефонные трубки, например, так называемые "интеллектуальные" телефоны, так называемые "интеллектуальные" планшеты, телевизоры, камеры, устройства отображения, цифровые мультимедийные проигрыватели, игровые приставки, устройство для потокового видео или т.п. В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут быть оборудованы для беспроводной связи.
[0030] Устройство-адресат 14 может принимать кодированные видеоданные, которые должны быть декодированы, посредством считываемого компьютером носителя 16. Считываемый компьютером носитель 16 может быть выполнен в виде любого типа носителя или устройства, допускающего перемещение кодированных видеоданных от устройства-источника 12 к устройству-адресату 14. В одном примере считываемый компьютером носитель 16 может быть выполнен в виде средства связи, чтобы дать устройству-источнику 12 возможность передавать кодированные видеоданные непосредственно к устройству-адресату 14 в реальном масштабе времени. Кодированные видеоданные могут модулироваться в соответствии со стандартом связи, например протоколом беспроводной связи, и передаваться устройству-адресату 14. Средство связи может быть выполнено в виде любого средства беспроводной или проводной связи, например радиочастотного (RF) спектра или одной или более физических линий передачи. Средство связи может образовывать часть пакетной сети, например локальной сети, региональной сети или глобальной сети, такой как Интернет. Средство связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для упрощения связи от устройства-источника 12 к устройству-адресату 14.
[0031] В некоторых примерах кодированные данные могут выводиться из интерфейса 22 вывода в запоминающее устройство. Аналогичным образом к кодированным данным можно обращаться из запоминающего устройства с помощью интерфейса ввода. Запоминающее устройство может включать в себя любой из ряда распределенных или локально доступных носителей информации, например жесткий диск, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое запоминающее устройство либо любые другие подходящие цифровые носители информации для хранения кодированных видеоданных. В дополнительном примере запоминающее устройство может соответствовать файловому серверу или другому промежуточному запоминающему устройству, которое может хранить кодированное видео, сформированное устройством-источником 12. Устройство-адресат 14 может обращаться к сохраненным видеоданным из запоминающего устройства посредством потоковой передачи или загрузки. Файловый сервер может быть любым типом сервера, допускающим хранение кодированных видеоданных и передачу тех кодированных видеоданных устройству-адресату 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), FTP-сервер, сетевые устройства хранения (NAS) или локальный накопитель на дисках. Устройство-адресат 14 может обращаться к кодированным видеоданным посредством любого стандартного информационного соединения, включая Интернет-соединение. Это соединение может включать в себя радиоканал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.п.) или сочетание их обоих, которое подходит для обращения к кодированным видеоданным, сохраненным на файловом сервере. Передача кодированных видеоданных из запоминающего устройства может быть потоковой передачей, загрузкой или их сочетанием.
[0032] Методики из данного раскрытия изобретения не обязательно ограничиваются беспроводными приложениями или настройками. Методики могут применяться к кодированию видео в поддержку любого из ряда мультимедийных приложений, таких как эфирные телевизионные передачи, кабельные телевизионные передачи, спутниковые телевизионные передачи, передачи потокового видео по Интернету, например динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носителе информации, декодирование цифрового видео, сохраненного на носителе информации, или других приложений. В некоторых примерах система 10 может конфигурироваться для поддержки однонаправленной или двунаправленной передачи видео для поддержки таких приложений, как потоковая передача видео, воспроизведение видео, телевизионное вещание и/или видеотелефония.
[0033] В примере из фиг. 1 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20 и интерфейс 22 вывода. Устройство-адресат 14 включает в себя интерфейс 28 ввода, видеодекодер 30 и устройство 32 отображения. В соответствии с данным раскрытием изобретения видеокодер 20 в устройстве-источнике 12 может конфигурироваться для применения методик для кодирования наборов параметров и единиц NAL для одного или более уровней видеоданных. В других примерах устройство-источник и устройство-адресат могут включать в себя другие компоненты или компоновки. Например, устройство-источник 12 может принимать видеоданные из внешнего источника 18 видео, например внешней камеры. Также устройство-адресат 14 может взаимодействовать с внешним устройством отображения вместо включения в себя встроенного устройства отображения.
[0034] Проиллюстрированная система 10 из фиг. 1 является всего лишь одним примером. Методики для кодирования наборов параметров и единиц NAL для одного или более уровней видеоданных могут выполняться любым устройством кодирования и/или декодирования цифрового видео. Хотя методики из данного раскрытия изобретения выполняются, как правило, устройством кодирования видео, методики также могут выполняться видеокодером/декодером, обычно называемым "кодеком". Кроме того, методики из данного раскрытия изобретения также могут выполняться препроцессором видео. Устройство-источник 12 и устройство-адресат 14 являются всего лишь примерами таких устройств кодирования, в которых устройство-источник 12 формирует кодированные видеоданные для передачи устройству-адресату 14. В некоторых примерах устройства 12, 14 могут работать практически симметричным образом, так что каждое из устройств 12, 14 включает в себя компоненты кодирования и декодирования видео. Поэтому система 10 может поддерживать однонаправленную или двунаправленную передачу видео между видеоустройствами 12, 14, например для потоковой передачи видео, воспроизведения видео, телевизионного вещания или видеотелефонии.
[0035] Источник 18 видео в устройстве-источнике 12 может включать в себя устройство видеозахвата, например видеокамеру, видеоархив, содержащий ранее захваченное видео, и/или интерфейс источника видеосигнала для приема видео от поставщика видеоконтента. В качестве дополнительной альтернативы источник 18 видео может формировать данные на основе компьютерной графики в качестве исходного видео, или сочетание "реального" видео, архивного видео и сформированного компьютером видео. В некоторых случаях, если источником 18 видео является видеокамера, то устройство-источник 12 и устройство-адресат 14 могут образовывать так называемые камерофоны или видеотелефоны. Однако, как упоминалось выше, описанные в данном раскрытии изобретения методики могут быть применимы к кодированию видео в целом и могут применяться к беспроводным и/или проводным приложениям. В каждом случае захваченное, предварительно захваченное или сформированное компьютером видео может кодироваться видеокодером 20. Кодированная видеоинформация затем может выводиться с помощью интерфейса 22 вывода на считываемый компьютером носитель 16.
[0036] Считываемый компьютером носитель 16 может включать в себя кратковременные носители, например беспроводную широковещательную или проводную сетевую передачу, или носители информации (то есть долговременные носители информации), например жесткий диск, флеш-накопитель, компакт-диск, цифровой видеодиск, диск Blu-ray или другие считываемые компьютером носители. В некоторых примерах сетевой сервер (не показан) может принимать кодированные видеоданные от устройства-источника 12 и предоставлять кодированные видеоданные устройству-адресату 14, например, посредством сетевой передачи. Аналогичным образом вычислительное устройство из оборудования по производству носителей, например оборудования по штамповке оптических дисков, может принять кодированные видеоданные от устройства-источника 12 и произвести диск, содержащий кодированные видеоданные. Поэтому в различных примерах считываемый компьютером носитель 16 может подразумеваться включающим в себя один или более считываемых компьютером носителей различных видов.
[0037] Интерфейс 28 ввода в устройстве-адресате 14 принимает информацию со считываемого компьютером носителя 16. Информация со считываемого компьютером носителя 16 может включать в себя синтаксическую информацию, заданную видеокодером 20, которая также используется видеодекодером 30, которая включает в себя синтаксические элементы, которые описывают характеристики и/или обработку блоков и других кодированных единиц, например GOP. Устройство 32 отображения отображает пользователю декодированные видеоданные и может быть выполнено в виде любого из ряда устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.
[0038] Видеокодер 20 и видеодекодер 30 могут работать в соответствии с неким стандартом кодирования видео, например стандартом Высокоэффективного кодирования видео (HEVC), в настоящее время находящимся в разработке, и могут соответствовать Экспериментальной модели HEVC (HM). В качестве альтернативы видеокодер 20 и видеодекодер 30 могут работать в соответствии с другими собственными или промышленными стандартами, например стандартом H.264 ITU-T, в качестве альтернативы называемым MPEG-4, часть 10, Улучшенное кодирование видео (AVC), или расширениями таких стандартов. Однако методики в данном раскрытии изобретения не ограничиваются никаким конкретным стандартом кодирования. Другие примеры стандартов кодирования видео включают в себя MPEG-2 и H.263 ITU-T. Хотя и не показано на фиг. 1, в некоторых особенностях видеокодер 20 и видеодекодер 30 могут быть объединены со звуковым кодером и декодером и могут включать в себя подходящие модули мультиплексирования-демультиплексирования или другие аппаратные средства и программное обеспечение, чтобы справляться с кодированием звука и видео в общем потоке данных или в отдельных потоках данных. Если применимо, то модули мультиплексирования-демультиплексирования могут соответствовать протоколу мультиплексора H.223 ITU или другим протоколам, например протоколу дейтаграмм пользователя (UDP).
[0039] Стандарт H.264/MPEG-4 (AVC) ITU-T был сформулирован Экспертной группой в области кодирования видео (VCEG) ITU-T вместе с Экспертной группой по движущимся изображениям (MPEG) ISO/IEC как результат коллективного сотрудничества, известного как Объединенная команда по видео (JVT). В некоторых особенностях описанные в данном раскрытии изобретения методики могут применяться к устройствам, которые в целом соответствуют стандарту H.264. Стандарт H.264 описывается Исследовательской группой ITU-T в Рекомендации H.264 ITU-T, Улучшенное кодирование видео для универсальных аудиовизуальных служб, датирован мартом 2005 года и в этом документе может называться стандартом H.264 или спецификацией H.264 либо стандартом или спецификацией H.264/AVC. Объединенная команда по видео (JVT) продолжает работать над расширениями к H.264/MPEG-4 AVC.
[0040] Видеокодер 20 и видеодекодер 30 могут быть реализованы в виде любой из ряда подходящих схем кодера, например одного или более микропроцессоров, цифровых процессоров сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их сочетаний. Когда методики реализуются частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем, неизменяемом со временем считываемом компьютером носителе и исполнять инструкции на аппаратных средствах, использующих один или более процессоров, для выполнения методик из данного раскрытия изобретения. Каждый из видеокодера 20 и видеодекодера 30 может включаться в один или более кодеров или декодеров, любой из которых может встраиваться как часть объединенного кодера/декодера (кодека) в соответствующем устройстве.
[0041] JCT-VC работает над развитием стандарта HEVC. Работа по стандартизации HEVC основываются на развивающейся модели устройства кодирования видео, называемой Экспериментальной моделью HEVC (HM). HM предполагает несколько дополнительных возможностей у устройств кодирования видео по сравнению с существующими устройствами, соответствующими, например, H.264/AVC ITU-T. Например, тогда как H.264 предоставляет девять режимов кодирования с внутренним предсказанием, HM может предоставить целых тридцать три режима кодирования с внутренним предсказанием.
[0042] Вообще, рабочая модель HM описывает, что видеокадр или изображение можно разделить на последовательность блоков дерева или наибольших единиц кодирования (LCU), которые включают в себя выборки яркости и цветности. Синтаксические данные в битовом потоке могут задавать размер для LCU, которая является наибольшей единицей кодирования в показателях числа пикселей. Слайс включает в себя некоторое число последовательных блоков дерева в порядке кодирования. Видеокадр или изображение может разбиваться на один или более слайсов. Каждый блок дерева можно разделить на единицы кодирования (CU) в соответствии с квадродеревом. Обычно структура данных квадродерева включает в себя один узел на CU, причем корневой узел соответствует блоку дерева. Если CU разделяется на четыре суб-CU, то узел, соответствующий CU, включает в себя четыре листа, каждый из которых соответствует одной из суб-CU.
[0043] Каждый узел в структуре данных квадродерева может предоставлять синтаксические данные для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывающий, разделяется ли соответствующая узлу CU на суб-CU. Синтаксические элементы для CU можно задать рекурсивно, и они могут зависеть от того, разделяется ли CU на суб-CU. Если CU больше не разделяется, то она называется листовой CU. В данном раскрытии изобретения четыре суб-CU в листовой CU также будут называться листовыми CU, даже если отсутствует явное разделение исходной листовой CU. Например, если CU с размером 16x16 больше не разделяется, то четыре суб-CU 8x8 также будут называться листовыми CU, хотя CU 16×16 никогда не разделялась.
[0044] CU имеет сходную с макроблоком из стандарта H.264 цель за исключением того, что CU не имеет отличия в размере. Например, блок дерева можно разделить на четыре дочерних узла (также называемых суб-CU), и каждый дочерний узел, в свою очередь, может быть родительским узлом и разделяться на четыре других дочерних узла. Конечный, неразделенный дочерний узел, называемый листом квадродерева, содержит узел кодирования, также называемый листовой CU. Синтаксические данные, ассоциированные с кодированным битовым потоком, могут задавать максимальное число раз, которое можно делить блок дерева, называемое максимальной глубиной CU, а также могут задавать минимальный размер узлов кодирования. Соответственно, битовый поток также может задавать наименьшую единицу кодирования (SCU). Данное раскрытие изобретения использует термин "блок", чтобы ссылаться на любой из CU, PU или TU применительно к HEVC, или аналогичные структуры данных применительно к другим стандартам (например, макроблоки и их субблоки в H.264/AVC).
[0045] CU включает в себя узел кодирования и единицы предсказания (PU) и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен иметь квадратную форму. Размер CU может варьироваться от 8x8 пикселей до размера блока дерева с максимальным числом 64x64 пикселей или больше. Каждая CU может содержать одну или более PU и одну или более TU. Синтаксические данные, ассоциированные с CU, могут описывать, например, разбиение CU на одну или более PU. Режимы разбиения могут отличаться между тем, кодируется ли CU в режиме пропуска или в прямом режиме, режиме внутреннего предсказания или режиме внешнего предсказания. PU могут разбиваться, чтобы иметь неквадратную форму. Синтаксические данные, ассоциированные с CU, также могут описывать, например, разбиение CU на одну или более TU в соответствии с квадродеревом. TU может иметь квадратную или неквадратную (например, прямоугольную) форму.
[0046] Стандарт HEVC допускает преобразования в соответствии с TU, которые могут отличаться для разных CU. TU обычно имеют размер на основе размера PU в данной CU, заданной для разделенной LCU, хотя это не всегда может быть так. TU обычно имеют такой же размер или меньше, чем PU. В некоторых примерах остаточные выборки, соответствующие CU, можно подразделить на меньшие единицы, используя структуру квадродерева, известную как "остаточное квадродерево" (RQT). Листы RQT могут называться единицами преобразования (TU). Значения разности пикселей, ассоциированные с TU, можно преобразовать для создания коэффициентов преобразования, которые можно квантовать.
[0047] Листовая CU может включать в себя одну или более единиц предсказания (PU). Обычно PU представляет пространственную область, соответствующую всей или части соответствующей CU, и может включать в себя данные для извлечения опорной выборки для PU. Кроме того, PU включает в себя данные, связанные с предсказанием. Например, когда PU кодируется во внутреннем режиме, данные для PU могут включаться в остаточное квадродерево (RQT), которое может включать в себя данные, описывающие режим внутреннего предсказания для TU, соответствующей PU. В качестве другого примера, когда PU кодируется во внешнем режиме, PU может включать в себя данные, задающие один или более векторов движения для PU. Данные, задающие вектор движения для PU, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность в одну четверть пикселя или точность в одну восьмую пикселя), опорное изображение, на которое указывает вектор движения, и/или список опорных изображений (например, Список 0, Список 1 или Список C) для вектора движения.
[0048] Листовая CU, имеющая одну или более PU, также может включать в себя одну или более единиц преобразования (TU). Единицы преобразования могут быть точно определены с использованием RQT (также называемого структурой квадродерева TU), как обсуждалось выше. Например, флаг разделения может указывать, разделяется ли листовая CU на четыре единицы преобразования. Затем каждую единицу преобразования можно дальше разделить на дополнительные суб-TU. Когда TU больше не разделяется, она может называться листовой TU. Как правило, для внутреннего кодирования все листовые TU, принадлежащие листовой CU, совместно используют один и тот же режим внутреннего предсказания. То есть один и тот же режим внутреннего предсказания применяется, как правило, для вычисления предсказанных значений для всех TU в листовой CU. Для внутреннего кодирования видеокодер может вычислять остаточное значение для каждой листовой TU, используя режим внутреннего предсказания, в качестве разности между частью CU, соответствующей TU, и исходным блоком. TU не обязательно ограничивается размером PU. Таким образом, TU могут быть больше или меньше PU. Для внутреннего кодирования PU может соотноситься с соответствующей листовой TU для одной и той же CU. В некоторых примерах максимальный размер листовой TU может соответствовать размеру соответствующей листовой CU.
[0049] Кроме того, TU в листовых CU также могут ассоциироваться с соответствующими структурами данных квадродерева, называемыми остаточными квадродеревьями (RQT). То есть листовая CU может включать в себя квадродерево, указывающее, как листовая CU разбивается на TU. Корневой узел квадродерева TU, как правило, соответствует листовой CU, тогда как корневой узел квадродерева CU, как правило, соответствует блоку дерева (или LCU). TU в RQT, которые не разделяются, называются листовыми TU. Вообще, данное раскрытие изобретения использует термины "CU" и "TU", чтобы ссылаться на листовую CU и листовую TU соответственно, пока не указано иное.
[0050] Видеопоследовательность, как правило, включает в себя последовательность видеокадров или изображений. Группа изображений (GOP), как правило, содержит последовательность из одного или более видеоизображений. GOP может включать в себя синтаксические данные в заголовке GOP, заголовке одного или более изображений или где-либо в другом месте, которые описывают число изображений, включенных в GOP. Каждый слайс изображения может включать в себя синтаксические данные слайса, которые описывают режим кодирования для соответствующего слайса. Видеокодер 20 обычно действует на видеоблоки в отдельных слайсах видео, чтобы кодировать видеоданные. Видеоблок может соответствовать узлу кодирования в CU. Видеоблоки могут иметь фиксированные или изменяющиеся размеры и могут отличаться по размеру в соответствии с точно определенным стандартом кодирования.
[0051] В качестве примера 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" ссылается на CU 2N×2N, которая разбивается горизонтально с PU 2N×0,5N сверху и PU 2N×1,5N снизу.
[0052] В данном раскрытии изобретения "N×N" и "N на N" могут использоваться взаимозаменяемо, чтобы ссылаться на размеры пикселя видеоблока в показателях вертикального и горизонтального размеров, например 16×16 пикселей или 16 на 16 пикселей. Обычно блок 16×16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Также блок N×N, как правило, имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целое значение. Пиксели в блоке могут располагаться в строках и столбцах. Кроме того, блокам не обязательно иметь такое же число пикселей в горизонтальном направлении, как и в вертикальном направлении. Например, блоки могут содержать N×M пикселей, где M не обязательно равно N.
[0053] После кодирования с внутренним предсказанием или внешним предсказанием, использующего PU в CU, видеокодер 20 может вычислить остаточные данные для TU в CU. PU могут содержать синтаксические данные, описывающие способ или режим формирования данных пикселя с предсказанием в пространственной области (также называемой областью пикселей), а TU могут содержать коэффициенты в области преобразования после применения преобразования, например дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлет-преобразования или концептуально сходного преобразования к остаточным видеоданным. Остаточные данные могут соответствовать разностям пикселей между пикселями некодированного изображения и значениями предсказания, соответствующими PU. Видеокодер 20 может образовать TU, включающие в себя остаточные данные для CU, а затем преобразовать TU для создания коэффициентов преобразования для CU.
[0054] После любых преобразований для создания коэффициентов преобразования видеокодер 20 может выполнить квантование коэффициентов преобразования. Квантование в целом относится к процессу, в котором коэффициенты преобразования квантуются, чтобы уменьшить по возможности объем данных, используемый для представления коэффициентов, обеспечивая дополнительное сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение во время квантования можно округлить в меньшую сторону до m-битового значения, где n больше m.
[0055] После квантования видеокодер может сканировать коэффициенты преобразования, создавая одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть предназначено для помещения коэффициентов с большей энергией (и поэтому с меньшей частотой) впереди массива и помещения коэффициентов с меньшей энергией (и поэтому большей частотой) сзади массива. В некоторых примерах видеокодер 20 может использовать предопределенный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования для создания сериализованного вектора, который можно энтропийно кодировать. В других примерах видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для образования одномерного вектора видеокодер 20 может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивным кодированием с переменной длиной (CAVLC), контекстно-адаптивным двоичным арифметическим кодированием (CABAC), синтаксическим контекстно-адаптивным двоичным арифметическим кодированием (SBAC), энтропийным кодированием с разбиением на интервалы вероятности (PIPE) или другой методологией энтропийного кодирования. Видеокодер 20 также может энтропийно кодировать синтаксические элементы, ассоциированные с кодированными видеоданными для использования видеодекодером 30 при декодировании видеоданных.
[0056] Для выполнения CABAC видеокодер 20 может назначить контекст в рамках контекстной модели символу, который должен быть передан. Контекст может относиться, например, к тому, являются ли соседние значения символа ненулевыми. Для выполнения CAVLC видеокодер 20 может выбрать код переменной длины для символа, который должен быть передан. Кодовые слова при VLC могут быть построены так, что относительно более короткие коды соответствуют более вероятным символам, тогда как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может добиться экономии битов по сравнению, например, с использованием кодовых слов равной длины для каждого символа, который должен быть передан. Определение вероятности может основываться на контексте, назначенном символу.
[0057] В соответствии с методиками из данного раскрытия изобретения кодировщик видео, например видеокодер 20 или видеодекодер 30, может конфигурироваться для кодирования набора параметров видео (VPS) для одного или более уровней видеоданных и кодирования одного или более уровней видеоданных основываясь по меньшей мере частично на VPS. Таблицы 2 и 5, подробнее описанные ниже, включают в себя примерные наборы синтаксических элементов в VPS. Каждый из одного или более уровней видеоданных может ссылаться на VPS, то есть на один и тот же VPS. Другими словами, VPS может применяться ко всем уровням общего набора видеоданных, например, всем уровням SVC и/или всем видам в видеоданных MVC.
[0058] VPS может включать в себя различные категории информации. Например, VPS может включать в себя описание счетчика измерений выборок (SDCD). То есть для каждого измерения кодировщик видео может сигнализировать набор индексов. Возможные измерения включают в себя cnt_p: число уровней приоритета, содержащихся в кодированной видеопоследовательности; cnt_d: сколько разных уровней зависимости в битовом потоке, несколько уровней с одинаковыми пространственным разрешением и битовой глубиной могут принадлежать разным уровням зависимости; cnt_t: сколько временных уровней в битовом потоке; cnt_q: максимальное число уровней качества для любого уровня зависимости в битовом потоке; и cnt_v: максимальное число видов. Настройки битовой глубины могут включать в себя 8-битовую или 12-битовую и могут отличаться для разной составляющей цвета. Форматы дискретизации цветности могут включать в себя 4:0:0, 4:2:0 и 4:4:4.
[0059] VPS также может включать в себя отображение индекса выборки на характеристики. Если для каждого измерения указатель характеристик не равен индексу, меняющемуся от 0 до счетчика измерений выборок минус 1, то можно ввести цикл для точного определения указателя характеристик для каждого индекса характеристик. Отображение для каждого индекса зависимости может включать в себя специфическое пространственное разрешение со специфическим значением битовой глубины и специфическим форматом выборки цветности. Отметим, что это можно было бы пропустить, если бы на декодере всегда имелась фиксированная справочная таблица, например, 0 может соответствовать 4:2:0, 1 может соответствовать 4:4:4 и 2 может соответствовать 4:0:0. Отображение дополнительно или в качестве альтернативы может включать в себя: для каждого временного индекса/id- специфическую частоту кадров или среднюю частоту кадров; для каждого индекса вида - специфический id вида; для каждого индекса битовой глубины - пару специфических значений битовой глубины для яркости и цветности; и для каждого формата дискретизации цветности -специфический указатель формата дискретизации цветности.
[0060] VPS также может включать в себя параметры управления и флаги разрешения/запрета инструментов, например следующие: pcm_bit_depth_luma_minus1, pcm_bit_depth_chroma_minus1, loop_filter_across_slice_flag, pcm_loop_filter_disable_flag, temporal_id_nesting_flag, один или более связанных с фрагментом синтаксических элементов, chroma_pred_from_luma_enabled_flag, sample_adaptive_offset_enabled_flag, adaptive_loop_filter_enabled_flag и inter_4×4_enabled_flag.
[0061] VPS также может включать в себя одно или более описаний рабочих точек. Рабочие точки, как правило, описывают подмножество общего числа видов в видеоданных, включенных в битовый поток. Рабочая точка может включать в себя конкретное число видов, намеченных для вывода, а также другие виды, которые могут использоваться для ссылки при декодировании, выводе или том и другом. Битовый поток может включать в себя одну или более рабочих точек, описанных с помощью описаний рабочих точек. Описания рабочих точек могут включать в себя информацию, задающую число максимальных рабочих точек, зависимость между разными уровнями или видами, профиль и уровень для каждой рабочей точки, битрейт (частота следования битов) для каждой рабочей точки, зависимость между рабочими точками для каждой рабочей точки, другие ограничения для каждой рабочей точки, информации о применимости видео (VUI) или части VUI, и/или VUI или части VUI для каждого уровня или вида. Дополнительно или в качестве альтернативы описания рабочих точек могут включать в себя для каждой рабочей точки представление единицы уровня абстракции сети (NAL) уровня кодирования видео (VCL) рабочей точки. В некоторых примерах представление единицы NAL VCL рабочей точки может включать в себя три возможных выбора для каждого измерения: (1) специфическое значение индекса: например, для пространственного разрешения - битовая глубина для формата дискретизации цветности; (2) диапазон значения индекса: например, для временных уровней - от 0 до id наивысшего временного уровня, для уровней качества - от 0 до id наивысшего уровня качества; или (3) список значений индекса, например, для видов - список значений индексов вида.
[0062] В некоторых примерах VPS может включать в себя данные, указывающие максимальное число временных уровней среди уровней битового потока. То есть видеокодер 20 и/или видеодекодер 30 может конфигурироваться для кодирования VPS, включающего в себя данные, указывающие максимальное число временных уровней для соответствующего битового потока. Например, видеокодер 20 может определить максимальное число временных уровней и кодировать VPS для включения в него данных, представляющих определенное максимальное число временных уровней, тогда как видеодекодер 30 может декодировать VPS для определения максимального числа временных уровней. Видеокодер 20 и видеодекодер 30 также могут кодировать видеоданные битового потока на основе определенного максимального числа временных уровней. Например, максимальное число временных уровней может влиять на число временных идентификаторов, которые нужны для представления различных временных уровней. В качестве другого примера максимальное число временных уровней может влиять на способ, которым видеокодер 20 и видеодекодер 30 кодируют идентификаторы опорных изображений, например, с использованием значений счетчика последовательности изображения (POC).
[0063] В качестве еще одного примера видеокодер 20 и видеодекодер 30 могут конфигурироваться для кодирования данных конкретного временного уровня с использованием только опорных данных вплоть до и включая тот же временной уровень. Другими словами, видеокодер 20 и видеодекодер 30 могут конфигурироваться, чтобы избегать кодирования данных конкретного временного уровня с использованием опорных данных более высокого временного уровня. Таким образом, видеодекодер 30 может быть уверен в точном декодировании видеоданных данного набора временных уровней даже после извлечения битового субпотока. То есть, если выполняется извлечение битового субпотока, то некоторые временные уровни выше наивысшего уровня извлеченного битового субпотока не будут доступны для ссылки. С помощью кодирования данных каждого временного уровня только со ссылкой на данные уровней на текущем уровне или ниже можно избежать ошибок, которые в противном случае могли бы произойти вследствие зависимости данных на конкретном уровне от данных с более высокого уровня, который был бы утрачен в результате извлечения битового субпотока.
[0064] В некоторых примерах VPS дополнительно или в качестве альтернативы включает в себя данные, указывающие любое или оба из числа изображений, которые должны быть переупорядочены на одном или более уровнях битового потока, и/или числа изображений, которые должны быть сохранены в буфер декодированных изображений (DPB). Как отмечалось выше, такие данные могут называться информацией об ограничении битового потока. Соответственно, устройство-адресат 14 может определить возможности видеодекодера 30 и использовать информацию об ограничении битового потока для определения, подходит ли соответствующий битовый поток для декодирования видеодекодером 30, или следует ли устройству-адресату 14 выбрать альтернативный контент (например, от поставщика сетевого контента, предполагая, что доступно несколько версий контента).
[0065] Кроме того, видеокодер 20 и видеодекодер 30 могут использовать информацию об ограничении битового потока во время кодирования видеоданных. Например, видеокодер 20 может гарантировать, что информация об ограничении битового потока не нарушается. То есть, предполагая, что информация об ограничении битового потока указывает, что нужно сохранить не более N изображений в DPB, видеокодер 20 может гарантировать, что не более N изображений включается в любое сочетание одного или более списков опорных изображений в любой момент времени. В качестве другого примера, предполагая, что информация о переупорядочении изображений указывает, что изображение нужно сдвинуть не более чем на M изображений, видеокодер 20 может гарантировать, что никакое изображение не сдвигается более чем на M изображений. Сдвиг изображений этим способом обычно соответствует разности между порядком декодирования и порядком отображения изображения. Видеодекодер 30 также может использовать такую информацию во время кодирования, например, для выполнения управления DPB, например очистки DPB. Видеокодер 20 и видеодекодер 30 также могут использовать информацию об ограничении битового потока, например максимальное число изображений, которые должны быть сохранены в DPB, и/или число изображений, которые должны быть переупорядочены, при кодировании значений идентификаторов опорных изображений.
[0066] В некоторых примерах VPS дополнительно или в качестве альтернативы включает в себя данные, указывающие параметры гипотетического эталонного декодера (HRD). Параметры HRD включают в себя, например, данные, описывающие моменты, в которые данные нужно удалить из буфера кодированных изображений (CPB). В декодерах, например видеодекодере 30, CPB представляет собой буфер, в котором кодированные видеоданные хранятся до тех пор, пока данные не будут готовы для декодирования. Декодеры, например видеодекодер 30, также могут включать в себя буфер декодированных изображений (DPB), в котором хранятся декодированные видеоданные, например, для использования в качестве опорных данных для внешне предсказанных данных и для переупорядочения изображений из порядка декодирования в порядок отображения.
[0067] Параметры HRD могут включать в себя данные, указывающие, когда конкретные изображения нужно удалить из CPB и декодировать. Таким образом, видеокодер 20 может кодировать параметры HRD у VPS для указания, когда изображения можно удалить из CPB и декодировать, тогда как видеодекодер 30 может декодировать параметры HRD у VPS для определения, когда удалять изображения из CPB. Также видеокодер 20 и видеодекодер 30 могут кодировать изображения в соответствии с параметрами HRD, например, в порядке кодирования, указанном параметрами HRD. Таким образом, видеокодер 20 и/или видеодекодер 30 может конфигурироваться для кодирования VPS, включающего в себя параметры HRD, и кодирования видеоданных, соответствующих VPS, основываясь по меньшей мере частично на параметрах HRD.
[0068] VPS также может включать в себя данные расширения, указывающие, расширен ли VPS, например, чтобы предоставить данные для одного или более дополнительных инструментов кодирования. Такие инструменты кодирования могут быть инструментами, которые отличаются от инструментов в соответствующем стандарте кодирования видео, например H.264/AVC ITU-T или предстоящем стандарте HEVC. Кроме того, такие инструменты кодирования могут потребовать конфигурационные данные. Эти конфигурационные данные могут предоставляться в данных расширения VPS. Таким образом, при кодировании видеоданных с использованием таких инструментов кодирования видеокодер 20 и/или видеодекодер 30 могут кодировать VPS, указывающий, присутствуют ли данные расширения, и если это так, данные расширения VPS. Кроме того, когда присутствуют такие данные расширения, видеокодер 20 и/или видеодекодер 30 может исполнять соответствующие инструменты кодирования для кодирования видеоданных с использованием данных расширения.
[0069] Различные стандарты кодирования видео задают соответствующий синтаксис, семантику и процесс декодирования для безошибочных битовых потоков, любой из которых соответствует некоторому профилю или уровню. Стандарты кодирования видео, как правило, точно не определяют кодер, но в задачу кодера входит гарантирование того, что сформированные битовые потоки соответствую стандарту для декодера. Применительно к стандартам кодирования видео "профиль" соответствует подмножеству алгоритмов, свойств или инструментов и ограничений, которые к ним применяются. Как задано, например, стандартом H.264, "профиль" является подмножеством всего синтаксиса битового потока, который точно определяется стандартом H.264. "Уровень" соответствует ограничениям потребления ресурсов декодера, например, запоминающего устройства и вычисления декодера, которые относятся к разрешению изображений, битрейта и скорости обработки блоков. Профиль можно сигнализировать с помощью значения profile_idc (указатель профиля), тогда как уровень можно сигнализировать с помощью значения level_idc (указатель уровня). В соответствии с методиками из данного раскрытия изобретения информация о профиле и уровне может точно определяться в описаниях рабочих точек, которые обсуждались выше.
[0070] В некоторых примерах каждый уровень или вид в битовом потоке ссылается на набор параметров видео (VPS), и набор параметров многоуровневой последовательности (LPS) может быть активным для каждого уровня. LPS можно поддерживать как можно более легковесным путем ссылки на VPS при проектировании. LPS может включать в себя любую или всю обсуждаемую ниже информацию. LPS может включать в себя указание измерения выборки, которое для каждого измерения указывает индекс к каждому измерению. Например, если в VPS индекс к пространственному разрешению 0 назначается пространственной характеристике 320×240, а индекс к пространственному разрешению 1 назначается 640×480, и текущую уровню нужно назначить разрешение 640×480, то видеокодер 20 и/или видеодекодер 30 может кодировать синтаксический элемент значением 1 для текущего уровня. То есть видеокодер 20 может сигнализировать значение 1 для синтаксического элемента, чтобы точно определять разрешение 640×480, тогда как видеодекодер 30 на основе значения 1 для синтаксического элемента может определить, что текущий уровень с синтаксическим элементом, имеющим значение 1, имеет разрешение 640×480.
[0071] LPS также может включать в себя параметры управления и флаги разрешения/запрета инструментов. Например, параметры управления и флаги разрешения/запрета инструментов могут включать в себя pcm_bit_depth_luma_minus1, pcm_bit_depth_chroma_minus1, loop_filter_across_slice_flag, pcm_loop_filter_disable_flag, один или более связанных с фрагментом синтаксических элементов, chroma_pred_from_luma_enabled_flag, sample_adaptive_offset_enabled_flag, adaptive_loop_filter_enabled_flag и иерархию единиц кодирования (CU).
[0072] LPS может дополнительно включать в себя информацию о других типах наборов параметров, применяющихся к слайсу, группе слайсов, изображению или нескольким изображениям. Каждый из этих наборов параметров может ссылаться на специфический набор параметров изображения (PPS).
[0073] Кодировщик видео, например видеокодер 20 и видеодекодер 30, может конфигурироваться для удостоверения и/или определения, что PPS не ссылается на LPS или VPS. Таким образом, кодировщик видео может гарантировать, что каждый PPS битового потока не ссылается на LPS или VPS. Синтаксический анализ PPS может быть независимым. Когда PPS включает в себя один или более таких же синтаксических элементов, как и в VPS или LPS, синтаксические элементы PPS могут перезаписать элементы в VPS или LPS.
[0074] Кодировщик видео может дополнительно конфигурироваться для кодирования группирующего набора параметров (GPS), который группирует все наборы параметров. Кодировщик видео может кодировать множество разных групп в GPS, причем каждая имеет отдельные идентификаторы GPS (id). Каждая из групп в GPS может включать в себя разное сочетание наборов параметров. Таким образом, заголовку слайса нужно включать в себя только ссылку на соответствующий id GPS и не нужно включать в себя указание типа набора параметров. Предварительная заявка США с порядковым №61/590702, поданная 25 января 2012 г., также описывает методики, в которых группируются разные типы наборов параметров, и только ID у RBSP группирования набора параметров подробнее сигнализируется в заголовке слайса.
[0075] Как обсуждалось выше, кодировщик видео, например видеокодер 20 или видеодекодер 30, может конфигурироваться для кодирования набора параметров видео и/или группирующего набора параметров. Примеры набора параметров видео подробнее обсуждаются по отношению к фиг. 5, тогда как примеры группирующего набора параметров подробнее обсуждаются по отношению к фиг. 6.
[0076] Видеокодер 20 дополнительно может отправлять видеодекодеру 30 синтаксические данные, например блочные синтаксические данные, кадровые синтаксические данные и основанные на GOP синтаксические данные, например, в заголовке кадра, заголовке блока, заголовке слайса или заголовке GOP. Синтаксические данные GOP могут описывать число кадров в соответствующей GOP, а синтаксические данные кадра могут указывать режим кодирования/предсказания, используемый для кодирования соответствующего кадра.
[0077] Видеокодер 20 и видеодекодер 30 могут быть реализованы в виде любой из ряда подходящих схем кодера или декодера в соответствующих случаях, например, одного или более микропроцессоров, цифровых процессоров сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретных логических схемам, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их сочетаний. Каждый из видеокодера 20 и видеодекодера 30 может включаться в один или более кодеров или декодеров, любой из которых может встраиваться как часть объединенного видеокодера/декодера (кодека). Устройство, включающее в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, например сотовый телефон.
[0078] Фиг. 2 - блок-схема, иллюстрирующая пример видеокодера 20, который может реализовать методики для кодирования наборов параметров и единиц NAL для одного или более уровней видеоданных. Видеокодер 20 может выполнять внутреннее и внешнее кодирование видеоблоков в слайсах видео. Внутреннее кодирование опирается на пространственное предсказание, чтобы уменьшить или устранить пространственную избыточность в видео в данном видеокадре или изображении. Внешнее кодирование опирается на временное предсказание, чтобы уменьшить или устранить временную избыточность в видео в соседних кадрах или изображениях видеопоследовательности. Внутренний режим (I-режим) может относиться к любому из нескольких режимов пространственного кодирования. Внешние режимы, например однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим), могут относиться к любому из нескольких режимов временного кодирования.
[0079] Как показано на фиг. 2, видеокодер 20 принимает текущий видеоблок в видеокадре, который должен быть кодирован. В примере из фиг. 2 видеокодер 20 включает в себя модуль 40 выбора режима, запоминающее устройство 64 опорных изображений, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 40 выбора режима в свою очередь включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, модуль 46 внутреннего предсказания и модуль 48 разбиения. Для восстановления видеоблока видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Также может включаться фильтр уменьшения блочности (не показан на фиг. 2) для фильтрации границ блока, чтобы удалить артефакты блочности из восстановленного видео. При желании фильтр уменьшения блочности обычно фильтровал бы вывод сумматора 62. Также могут использоваться дополнительные фильтры (в цикле или после цикла) в дополнение к фильтру уменьшения блочности. Такие фильтры для краткости не показаны, но при желании могут фильтровать вывод сумматора 50 (в качестве фильтра в цикле).
[0080] Во время процесса кодирования видеокодер 20 принимает видеокадр или слайс, которые должны быть кодированы. Кадр или слайс можно разделить на несколько видеоблоков. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с внешним предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах, чтобы обеспечить временное предсказание. Модуль 46 внутреннего предсказания в качестве альтернативы может выполнять кодирование с внутренним предсказанием принятого видеоблока относительно одного или более соседних блоков в том же кадре или слайсе в качестве блока, который должен быть кодирован, чтобы обеспечить пространственное предсказание. Видеокодер 20 может выполнять несколько проходов кодирования, например, для выбора подходящего режима кодирования для каждого блока видеоданных.
[0081] Кроме того, модуль 48 разбиения может разбить блоки видеоданных на субблоки на основе оценки предыдущих схем разбиения в предыдущих проходах кодирования. Например, модуль 48 разбиения может сначала разбить кадр или слайс на LCU, и разбить каждую из LCU на суб-CU на основе анализа искажения в зависимости от скорости передачи (например, оптимизации искажения в зависимости от скорости передачи). Модуль 40 выбора режима дополнительно может создать структуру данных квадродерева, указывающую разбиение LCU на суб-CU. CU листа в квадродереве могут включать в себя одну или более PU и одну или более TU.
[0082] Модуль 40 выбора режима может выбрать один из режимов кодирования, внутренний или внешний, например, на основе ошибочных результатов и предоставляет результирующий блок с внутренним или внешним кодированием сумматору 50, чтобы сформировать данные остаточного блока, и сумматору 62, чтобы восстановить кодированный блок для использования в качестве опорного кадра. Модуль 40 выбора режима также предоставляет синтаксические элементы, например векторы движения, указатели внутреннего режима, информацию о разбиении и другую такую синтаксическую информацию, модулю 56 энтропийного кодирования.
[0083] Модуль 42 оценки движения и модуль 44 компенсации движения могут быть существенно объединены, но иллюстрируются отдельно с концептуальной целью. Оценка движения, выполняемая модулем 42 оценки движения, является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения может указывать, например, смещение PU видеоблока в текущем видеокадре или изображении относительно блока с предсказанием в опорном кадре (или другой кодированной единице) относительно текущего блока, кодируемого в текущем кадре (или другой кодированной единице). Блок с предсказанием является блоком, который признан точно совпадающим с блоком, который должен быть кодирован, в показателях разности пикселей, которая может определяться с помощью суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других показателей разности. В некоторых примерах видеокодер 20 может вычислять значения для положений субцелого пикселя в опорных изображениях, сохраненных в запоминающем устройстве 64 опорных изображений. Например, видеокодер 20 может интерполировать значения положений одной четверти пикселя, положений одной восьмой пикселя или других положений дробного пикселя в опорном изображении. Поэтому модуль 42 оценки движения может выполнить поиск движения относительно положений полного пикселя и положений дробного пикселя и вывести вектор движения с точностью до дробного пикселя.
[0084] Модуль 42 оценки движения вычисляет вектор движения для PU видеоблока в слайсе с внешним кодированием путем сравнения положения PU с положением блока с предсказанием в опорном изображении. Опорное изображение может выбираться из первого списка опорных изображений (Список 0) или второго списка опорных изображений (Список 1), каждый из которых идентифицирует одно или более опорных изображений, сохраненных в запоминающем устройстве 64 опорных изображений. Модуль 42 оценки движения отправляет вычисленный вектор движения модулю 56 энтропийного кодирования и модулю 44 компенсации движения.
[0085] Компенсация движения, выполняемая модулем 44 компенсации движения, может включать в себя выборку или формирование блока с предсказанием на основе вектора движения, определенного модулем 42 оценки движения. Снова в некоторых примерах модуль 42 оценки движения и модуль 44 компенсации движения могут быть объединены функционально. После приема вектора движения для PU текущего видеоблока модуль 44 компенсации движения может найти блок с предсказанием, на который указывает вектор движения, в одном из списков опорных изображений. Сумматор 50 образует остаточный видеоблок путем вычитания значений пикселей блока с предсказанием из значений пикселей текущего кодируемого видеоблока, образуя значения разности пикселей, которые обсуждаются ниже. Обычно модуль 42 оценки движения выполняет оценку движения относительно компонентов яркости, а модуль 44 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости, для компонентов цветности и компонентов яркости. Модуль 40 выбора режима также может формировать синтаксические элементы, ассоциированные с видеоблоками и слайсом видео, для использования видеодекодером 30 при декодировании видеоблоков в слайсе видео.
[0086] Модуль 46 внутреннего предсказания может внутренне предсказать текущий блок в качестве альтернативы внешнему предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как описано выше. В частности, модуль 46 внутреннего предсказания может определить режим внутреннего предсказания, чтобы использовать его для кодирования текущего блока. В некоторых примерах модуль 46 внутреннего предсказания может кодировать текущий блок с использованием различных режимов внутреннего предсказания, например, во время отдельных проходов кодирования, а модуль 46 внутреннего предсказания (или модуль 40 выбора режима в некоторых примерах) может выбирать подходящий режим внутреннего предсказания для использования из проверенных режимов.
[0087] Например, модуль 46 внутреннего предсказания может вычислить значения искажения в зависимости от скорости передачи, используя анализ искажения в зависимости от скорости передачи для различных проверенных режимов внутреннего предсказания, и выбрать режим внутреннего предсказания, имеющий наилучшие характеристики искажения в зависимости от скорости передачи среди проверенных режимов. Анализ искажения в зависимости от скорости передачи, как правило, определяет величину искажения (или ошибки) между кодированным блоком и исходным, некодированным блоком, который кодировался для создания кодированного блока, а также битрейт (то есть число битов), используемый для создания кодированного блока. Модуль 46 внутреннего предсказания может вычислить отношения из искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим внутреннего предсказания демонстрирует наилучшее значение искажения в зависимости от скорости передачи для блока.
[0088] После выбора режима внутреннего предсказания для блока модуль 46 внутреннего предсказания может предоставить модулю 56 энтропийного кодирования информацию, указывающую выбранный режим внутреннего предсказания для блока. Модуль 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего предсказания. Видеокодер 20 может включить в переданный битовый поток конфигурационные данные, которые могут включать в себя множество таблиц индексов режимов внутреннего предсказания и множество таблиц индексов измененных режимов внутреннего предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков и указания наиболее вероятного режима внутреннего предсказания, таблицы индексов режимов внутреннего предсказания и таблицы индексов измененного режима внутреннего предсказания для использования для каждого из контекстов.
[0089] Видеокодер 20 образует остаточный видеоблок путем вычитания данных предсказания от модуля 40 выбора режима из исходного кодируемого видеоблока. Сумматор 50 представляет собой компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 обработки преобразования применяет к остаточному блоку преобразование, например дискретное косинусное преобразование (DCT) или концептуально сходное преобразование, создавая видеоблок, содержащий значения остаточных коэффициентов преобразования. Модуль 52 обработки преобразования может выполнять и другие преобразования, которые концептуально сходны с DCT. Также могли бы использоваться вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований.
[0090] В любом случае модуль 52 обработки преобразования применяет преобразование к остаточному блоку, создавая блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из области значений пикселей в область преобразования, например частотную область. Модуль 52 обработки преобразования может отправить результирующие коэффициенты преобразования модулю 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования для дополнительного уменьшения битрейта. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования можно изменять путем регулирования параметра квантования. В некоторых примерах модуль 54 квантования затем может выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы сканирование может выполнить модуль 56 энтропийного кодирования.
[0091] После квантования модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), синтаксическое контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разбиением на интервалы вероятности (PIPE) или другую методику энтропийного кодирования. В случае контекстного энтропийного кодирования контекст может основываться на соседних блоках. После энтропийного кодирования с помощью модуля 56 энтропийного кодирования кодированный битовый поток может передаваться другому устройству (например, видеодекодеру 30) или архивироваться для последующей передачи или извлечения.
[0092] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование соответственно, чтобы восстановить остаточный блок в области пикселей, например, для последующего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислить опорный блок путем добавления остаточного блока к блоку с предсказанием в одном из кадров в запоминающем устройстве 64 опорных изображений. Модуль 44 компенсации движения также может применить один или более интерполирующих фильтров к восстановленному остаточному блоку, чтобы вычислить значения субцелых пикселей для использования при оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания с компенсированным движением, созданному модулем 44 компенсации движения, чтобы создать восстановленный видеоблок для сохранения в запоминающем устройстве 64 опорных изображений. Восстановленный видеоблок может использоваться модулем 42 оценки движения и модулем 44 компенсации движения в качестве опорного блока, чтобы внешне кодировать блок в последующем видеокадре.
[0093] Видеокодер 20 может дополнительно конфигурироваться для кодирования набора параметров видео (VPS), набора параметров уровня (LPS) и/или группирующего набора параметров в соответствии с методиками из данного раскрытия изобретения, а также набора параметров последовательности (SPS), набора параметров изображения (PPS), набора параметров адаптации (APS) или других таких структур сигнальных данных. Конкретнее, модуль 56 энтропийного кодирования может конфигурироваться для кодирования любой или всех этих структур данных. В случае, если параметры этих различных структур данных могут влиять на производительность кодирования, модуль 40 выбора режима может выбрать подходящие параметры и передать те параметры модулю 56 энтропийного кодирования для включения, например, в VPS. Другие параметры, например число временных уровней, число изображений, которые должны быть переупорядочены, и число изображений, которые должны быть сохранены в буфер декодированных изображений, могут выбираться пользователем, например администратором. В других примерах некоторые параметры, например параметры HRD, могут возникать в течение процесса кодирования.
[0094] Модуль 56 энтропийного кодирования может кодировать VPS для включения любого или всех различных типов данных, описанных данным раскрытием изобретения. Видеокодер 20 также может кодировать данные в соответствии с параметрами VPS. Конкретнее, видеокодер 20 может кодировать последовательности изображений из числа одного или более уровней видеоданных, которым соответствует VPS, в соответствии с параметрами VPS.
[0095] Таким образом, видеокодер 20 из фиг. 2 представляет пример видеокодера, сконфигурированного для кодирования набора параметров видео (VPS) для одного или более уровней видеоданных, при этом каждый из одного или более уровней видеоданных ссылается на VPS, и кодирования одного или более уровней видеоданных основываясь по меньшей мере частично на VPS.
[0096] Кодирование VPS, хотя в целом и описано по отношению к видеокодеру, может выполняться другими устройствами, например информированным о среде сетевым элементом (MANE). MANE может соответствовать сетевому элементу между устройством-источником (например, устройством-источником 12 из фиг. 1) и устройством-адресатом (например, устройством-адресатом 14). MANE может конфигурироваться для кодирования VPS в соответствии с методиками из данного раскрытия изобретения. MANE может формировать VPS, используя данные с другими структурами данных, принятые MANE, например, наборы параметров последовательности.
[0097] Фиг. 3 - блок-схема, иллюстрирующая пример видеодекодера 30, который может реализовать методики для кодирования наборов параметров и единиц NAL для одного или более уровней видеоданных. В примере из фиг. 3 видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 внутреннего предсказания, модуль 76 обратного квантования, модуль 78 обратного преобразования, запоминающее устройство 82 опорных изображений и сумматор 80. Запоминающее устройство 82 опорных изображений также может называться "буфером декодированных изображений" или DPB. Видеодекодер 30 в некоторых примерах может выполнять проход декодирования, в целом обратный по отношению к проходу кодирования, описанному по отношению к видеокодеру 20 (фиг. 2). Модуль 72 компенсации движения может формировать данные предсказания на основе векторов движения, принятых от модуля 70 энтропийного декодирования, тогда как модуль 74 внутреннего предсказания может формировать данные предсказания на основе указателей режима внутреннего предсказания, принятых от модуля 70 энтропийного декодирования.
[0098] Во время процесса декодирования видеодекодер 30 принимает от видеокодера 20 битовый поток кодированного видео, который представляет собой видеоблоки кодированного слайса видео и ассоциированные синтаксические элементы. Модуль 70 энтропийного декодирования в видеодекодере 30 энтропийно декодирует битовый поток, чтобы сформировать квантованные коэффициенты, векторы движения или указатели режима внутреннего предсказания, и другие синтаксические элементы. Модуль 70 энтропийного декодирования перенаправляет векторы движения и другие синтаксические элементы в модуль 72 компенсации движения. Видеодекодер 30 может принять синтаксические элементы на уровне слайса видео и/или уровне видеоблока.
[0099] Когда слайс видео кодируется в виде слайса с внутренним кодированием (I), модуль 74 внутреннего предсказания может сформировать данные предсказания для видеоблока текущего слайса видео на основе сигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр кодируется в виде слайса с внешним кодированием (то есть, B, P или GPB), модуль 72 компенсации движения создает блоки с предсказанием для видеоблока текущего слайса видео на основе векторов движения и других синтаксических элементов, принятых от модуля 70 энтропийного декодирования. Блоки с предсказанием могут создаваться из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может построить списки опорных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе опорных изображений, сохраненных в запоминающем устройстве 82 опорных изображений.
[0100] Модуль 72 компенсации движения определяет информацию предсказания для видеоблока текущего слайса видео путем синтаксического анализа векторов движения и других синтаксических элементов и использует информацию предсказания для создания блоков с предсказанием для текущего декодируемого видеоблока. Например, модуль 72 компенсации движения использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков в слайсе видео, типа слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных изображений для слайса, векторов движения для каждого видеоблока с внешним кодированием в слайсе, состояния внешнего предсказания для каждого видеоблока с внешним кодированием в слайсе и другой информации для декодирования видеоблоков в текущем слайсе видео.
[0101] Модуль 72 компенсации движения также может выполнить интерполяцию на основе интерполирующих фильтров. Модуль 72 компенсации движения может использовать интерполирующие фильтры, которые использовались видеокодером 20 во время кодирования видеоблоков, чтобы вычислить интерполированные значения для субцелых пикселей опорных блоков. В этом случае модуль 72 компенсации движения может определить интерполирующие фильтры, используемые видеокодером 20, из принятых синтаксических элементов и использовать интерполирующие фильтры для создания блоков с предсказанием.
[0102] Модуль 76 обратного квантования обратно квантует, то есть деквантует, квантованные коэффициенты преобразования, предоставленные в битовом потоке и декодированные модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра QPY квантования, вычисленного видеодекодером 30 для каждого видеоблока в слайсе видео, чтобы определить степень квантования, а также степень обратного квантования, которое следует применить. Модуль 78 обратного преобразования применяет к коэффициентам преобразования обратное преобразование, например обратное DCT, обратное целочисленное преобразование или концептуально сходный процесс обратного преобразования, чтобы создать остаточные блоки в области пикселей.
[0103] После того, как модуль 72 компенсации движения сформирует блок с предсказанием для текущего видеоблока на основе векторов движения и других синтаксических элементов, видеодекодер 30 образует декодированный видеоблок путем суммирования остаточных блоков от модуля 78 обратного преобразования с соответствующими блоками с предсказанием, сформированными модулем 72 компенсации движения. Сумматор 90 представляет собой компонент или компоненты, которые выполняют эту операцию суммирования. При желании также можно применить фильтр уменьшения блочности для фильтрации декодированных блоков, чтобы удалить артефакты блочности. Другие фильтры цикла (либо в цикле кодирования, либо после цикла кодирования) также могут использоваться для сглаживания переходов пикселей или иного повышения качества видео. Декодированные видеоблоки в заданном кадре или изображении затем сохраняются в запоминающем устройстве 82 опорных изображений, которое хранит опорные изображения, используемые для последующей компенсации движения. Запоминающее устройство 82 опорных изображений также хранит декодированное видео для последующего представления на устройстве отображения, например устройстве 32 отображения из фиг. 1.
[0104] В соответствии с методиками из данного раскрытия изобретения видеодекодер 30 может декодировать набор параметров видео (VPS), набор параметров уровня (LPS) и/или группирующий набор параметров в соответствии с методиками из данного раскрытия изобретения, а также набор параметров последовательности (SPS), набор параметров изображения (PPS), набор параметров адаптации (APS) или другие такие структуры сигнальных данных. Конкретнее, модуль 70 энтропийного декодирования может конфигурироваться для декодирования любой или всех этих структур данных. В результате декодирования этих различных структур данных модуль 70 энтропийного декодирования может определить параметры, которые должны быть использованы для декодирования соответствующих видеоданных. Например, видеодекодер 30 может декодировать соответствующие последовательности видеоданных одного или более уровней, используя параметры декодированного VPS.
[0105] Хотя и не показано на фиг. 3, видеодекодер 30 дополнительно может включать в себя буфер кодированных изображений (CPB). CPB обычно предоставлялся бы перед модулем 70 энтропийного декодирования. В качестве альтернативы CPB может соединяться с модулем 70 энтропийного декодирования для временного хранения или с выводом модуля 70 энтропийного декодирования для хранения энтропийно декодированных данных, пока такие данные нужно декодировать. Обычно CPB хранит кодированные видеоданные, пока кодированные видеоданные нужно декодировать, например, как указано параметрами HRD, которые видеодекодер 30 может извлечь из декодированного VPS. Также другие элементы видеодекодера 30 могут конфигурироваться для декодирования видеоданных с использованием, например, VPS. Например, видеодекодер 30 может декодировать временные идентификаторы для изображений различных временных уровней, данные, указывающие число изображений, которые должны быть переупорядочены и/или сохранены в запоминающем устройстве 82 опорных изображений (представляющем DPB).
[0106] Кроме того, видеодекодер 30 может включать в себя дополнительные модули обработки для обработки видеоданных в соответствии с различными инструментами кодирования, предоставленными расширениями стандарта кодирования видео. В качестве альтернативы существующие элементы видеодекодера 30, показанные на фиг. 3, могут конфигурироваться для исполнения инструментов кодирования из таких расширений. Модуль 70 энтропийного декодирования может конфигурироваться для декодирования данных расширения VPS и предоставления таких данных расширения модулям, сконфигурированным для исполнения инструментов кодирования, предоставленных расширениями.
[0107] Таким образом, видеодекодер 30 из фиг. 3 представляет пример видеодекодера, сконфигурированного для кодирования набора параметров видео (VPS) для одного или более уровней видеоданных, при этом каждый из одного или более уровней видеоданных ссылается на VPS, и кодирования одного или более уровней видеоданных основываясь по меньшей мере частично на VPS.
[0108] Декодирование VPS, хотя в целом и описано по отношению к видеодекодеру, может выполняться другими устройствами, например информированным о среде сетевым элементом (MANE). MANE может конфигурироваться для декодирования VPS в соответствии с методиками из данного раскрытия изобретения. MANE дополнительно может формировать данные других наборов параметров, например один или более наборов параметров последовательности, используя данные в VPS. Таким образом, MANE может предусматривать обратную совместимость с предшествующими стандартами, например H.264/AVC ITU-T.
[0109] Фиг. 4 - концептуальная схема, иллюстрирующая примерный шаблон предсказания MVC. Многовидовое кодирование видео (MVC) является расширением H.264/AVC ITU-T. Аналогичная методика может применяться к HEVC. В примере из фиг. 4 иллюстрируется восемь видов (имеющих ID видов с "S0" по "S7"), и для каждого вида иллюстрируется двенадцать положений во времени (с "T0" по "T11"). То есть каждая строка на фиг. 4 соответствует виду, тогда как каждый столбец указывает положение во времени.
[0110] На фиг. 4 показана типичная структура предсказания MVC (включающая внешнее предсказание изображения в каждом виде и межвидовое предсказание) для многовидового кодирования видео, где предсказания указываются стрелками, причем указываемый объект использует указывающий объект для ссылки для предсказания. В MVC межвидовое предсказание опирается на компенсацию диспаратности/движения, которая может использовать синтаксис компенсации движения H.264/AVC, но позволяет использовать изображение в другом виде в качестве опорного изображения.
[0111] Кодирование двух видов также могло бы поддерживаться MVC, и одно из преимуществ MVC состоит в том, что кодер MVC мог бы принимать больше двух видов в качестве входа трехмерного видео, а декодер MVC мог бы декодировать такое многовидовое представление. Поэтому любое средство визуализации с декодером MVC может конфигурироваться для приема трехмерного видеоконтента более чем с двумя видами.
[0112] Хотя MVC имеет так называемый основной вид, который является декодируемым декодерами H.264/AVC, и стереопара также могла бы поддерживаться MVC, одно преимущество MVC состоит в том, что оно могло бы поддерживать пример, который использует больше двух видов в качестве входа трехмерного видео и декодирует это трехмерное видео, представленное несколькими видами. Средство визуализации клиента, имеющего декодер MVC, может ожидать трехмерный видеоконтент с несколькими видами.
[0113] Типичный порядок декодирования MVC называется кодированием преимущественно по времени. Единица доступа может включать в себя кодированные изображения всех видов для одного выходного момента времени. Например, каждое из изображений момента T0 может включаться в общую единицу доступа, каждое из изображений момента T1 может включаться во вторую, общую единицу доступа, и так далее. Порядок декодирования не обязательно идентичен порядку вывода или отображения.
[0114] Кадры на фиг. 4 указываются на пересечении каждой строки и каждого столбца на фиг. 4, используя заштрихованный блок, включающий в себя букву, обозначающую, имеет ли соответствующий кадр внутреннее кодирование (то есть I-кадр) либо внешнее кодирование в одном направлении (то есть P-кадр) или в нескольких направлениях (то есть B-кадр). Вообще, предсказания указываются стрелками, где указываемый кадр использует указывающий объект для ссылки для предсказания. Например, P-кадр в виде S2 в положении T0 во времени предсказывается из I-кадра в виде S0 в положении T0 во времени.
[0115] Как и в случае кодирования видео с одиночным видом кадры в видеопоследовательности многовидового кодирования видео могут кодироваться с предсказанием относительно кадров в других положениях во времени. Например, b-кадр в виде S0 в положении T1 во времени имеет стрелку, указывающую на него от I-кадра в виде S0 в положении T0 во времени, указывая, что b-кадр предсказывается из I-кадра. Однако применительно к многовидовому кодированию видео кадры могут предсказываться между видами. То есть некий компонент вида может использовать компоненты вида в других видах для ссылки. В MVC, например, межвидовое предсказание реализуется, как если бы компонент вида в другом виде был ссылкой для внешнего предсказания. Возможные межвидовые ссылки сигнализируются в расширении набора параметров последовательности (SPS) MVC и могут изменяться процессом построения списка опорных изображений, который дает возможность гибкого упорядочения ссылок для внешнего предсказания или межвидового предсказания.
[0116] В расширении MVC в H.264/AVC в качестве примера межвидовое предсказание опирается на компенсацию диспаратности/движения, которая использует синтаксис компенсации движения H.264/AVC, но позволяет использовать изображение в другом виде в качестве опорного изображения. Кодирование двух видов может поддерживаться MVC, что обычно называется стереоскопическими видами. Одно из преимуществ MVC состоит в том, что кодер MVC мог бы принимать больше двух видов в качестве входа трехмерного видео, а декодер MVC мог бы декодировать такое многовидовое представление. Поэтому устройство визуализации с декодером MVC может ожидать трехмерный видеоконтент более чем с двумя видами.
[0117] В MVC межвидовое предсказание (IVP) разрешено среди изображений в одной и той же единице доступа (то есть с одинаковым моментом времени). Единица доступа, как правило, является единицей данных, включающей в себя все компоненты вида (например, все единицы NAL) для общего момента времени. Таким образом, в MVC межвидовое предсказание разрешено среди изображений в одной и той же единице доступа. При кодировании изображения в одном из неосновных видов изображение может добавляться в список опорных изображений, если оно находится в другом виде, но с таким же моментом времени (например, таким же значением POC и, соответственно, в той же единице доступа). Опорное изображение межвидового предсказания можно поместить в любое положение списка опорных изображений, как и любое опорное изображение внешнего предсказания.
[0118] Применительно к многовидовому кодированию видео существует два вида векторов движения. Один является обычными векторами движения, указывающими на временные опорные изображения, и соответствующий режим внешнего предсказания называется предсказанием с компенсированным движением (MCP). Другой является векторами диспаратности/движения, указывающими на изображения в другом виде, и соответствующий режим межвидового предсказания называется предсказанием с компенсированной диспаратностью (DCP).
[0119] В традиционном HEVC имеется два режима для предсказания параметров движения: один является режимом слияния, а другой является улучшенным предсказанием вектора движения (AMVP). В режиме слияния строится список кандидатов в параметры движения (опорные изображения и векторы движения), где кандидат может быть из пространственных или временных соседних блоков. Соседние в пространстве и во времени блоки могут образовывать список кандидатов, то есть набор кандидатов, из которого может выбираться информация предсказания движения. Соответственно, видеокодер 20 может кодировать параметры движения, выбранные в качестве информации предсказания движения, путем кодирования индекса в списке кандидатов. После того, как видеодекодер 30 декодировал индекс, в режиме слияния могут наследоваться все параметры движения соответствующего блока, куда указывает индекс.
[0120] В AMVP, соответственно и в традиционном HEVC, список кандидатов в предикторы векторов движения для каждой гипотезы движения выводится на основе кодированного опорного индекса. Этот список включает в себя векторы движения соседних блоков, которые ассоциируются с одинаковым опорным индексом, а также предиктор временного вектора движения, который выводится на основе параметров движения соседнего блока в совмещенном блоке во временном опорном изображении. Выбранные векторы движения сигнализируются путем передачи индекса в списке кандидатов. К тому же значения опорного индекса и разности векторов движения также сигнализируются.
[0121] Фиг. 4 предоставляет различные примеры межвидового предсказания. В примере из фиг. 4 кадры в виде S1 иллюстрируются как предсказываемые из кадров в других положениях во времени в виде S1, а также предсказываемые между видами из кадров в видах S0 и S2 в тех же положениях во времени. Например, b-кадр в виде S1 в положении T1 во времени предсказывается из каждого из B-кадров в виде S1 в положениях T0 и T2 во времени, а также b-кадров в видах S0 и S2 в положении T1 во времени.
[0122] В примере из фиг. 4 заглавная буква "B" и строчная буква "b" предназначены для указания разных иерархических взаимосвязей между кадрами, а не разных методологий кодирования. Вообще, кадры с заглавной "B" находятся относительно выше по иерархии предсказания, нежели кадры со строчной "b". Фиг. 4 также иллюстрирует изменения в иерархии предсказания, используя разные уровни штриховки, где кадры с большей величиной штриховки (то есть относительно более темные) находятся выше по иерархии предсказания, нежели кадры, имеющие меньше штриховки (то есть относительно более светлые). Например, все I-кадры на фиг. 4 иллюстрируются с полной штриховкой, тогда как P-кадры имеют отчасти более светлую штриховку, а B-кадры (и b-кадры со строчной буквой) имеют различные уровни штриховки относительно друг друга, но всегда светлее штриховки P-кадров и I-кадров.
[0123] Обычно иерархия предсказания имеет отношение к индексам порядка видов в том, что кадры относительно выше по иерархии предсказания следует декодировать перед декодированием кадров, которые находятся относительно ниже по иерархии, так что те кадры относительно выше по иерархии могут использоваться в качестве опорных кадров во время декодирования кадров относительно ниже по иерархии. Индекс порядка видов является индексом, который указывает порядок декодирования компонентов вида в единице доступа. Индексы порядка видов подразумеваются в расширении SPS MVC, которое точно определено Приложением H к H.264/AVC (поправка MVC). В SPS для каждого индекса i сигнализируется соответствующий view_id. В некоторых примерах декодирование компонентов вида должно придерживаться возрастающего порядка индекса порядка видов. Если представляются все виды, то индексы порядка видов находятся в последовательном порядке от 0 до num_views_minus_1.
[0124] Таким образом, кадры, используемые в качестве опорных кадров, могут декодироваться перед декодированием кадров, которые кодируются со ссылкой на опорные кадры. Индекс порядка видов является индексом, который указывает порядок декодирования компонентов вида в единице доступа. Для каждого индекса i порядка видов сигнализируется соответствующий view_id. Декодирование компонентов вида придерживается возрастающего порядка индексов порядка видов. Если представляются все виды, то набор индексов порядка видов может содержать последовательно упорядоченный набор от нуля до полного числа видов, меньшего на единицу.
[0125] Для некоторых кадров на равных уровнях иерархии порядок декодирования относительно друг друга может не иметь значения. Например, I-кадр в виде S0 в положении T0 во времени используется в качестве опорного кадра для P-кадра в виде S2 в положении T0 во времени, который, в свою очередь, используется в качестве опорного кадра для P-кадра в виде S4 в положении T0 во времени. Соответственно, I-кадр в виде S0 в положении T0 во времени следует декодировать перед P-кадром в виде S2 в положении T0 во времени, который следует декодировать перед P-кадром в виде S4 в положении T0 во времени. Однако между видами S1 и S3 порядок декодирования не имеет значения, поскольку виды S1 и S3 не опираются друг на друга для предсказания, а вместо этого предсказываются только из видов, которые выше по иерархии предсказания. Кроме того, вид S1 можно декодировать перед видом S4 при условии, что вид S1 декодируется после видов S0 и S2.
[0126] Таким образом, иерархическое упорядочение может использоваться для описания видов S0-S7. Пусть нотация SA>SB означает, что вид SA следует декодировать перед видом SB. Используя эту нотацию, в примере из фиг. 4 S0>S2>S4>S6>S7. Также по отношению к примеру из фиг. 4 S0>S1, S2>S1, S2>S3, S4>S3, S4>S5 и S6>S5. Возможен любой порядок декодирования для видов, который не нарушает эти требования. Соответственно, возможны многие разные порядки декодирования, только с некоторыми ограничениями.
[0127] В соответствии с методиками из данного раскрытия изобретения каждый из видов S0-S7 может считаться соответствующим уровнем соответствующего битового потока. Таким образом, VPS может описывать параметры битового потока, применимые к любому или всем видам S0-S7, хотя отдельные наборы параметров уровней могут предоставляться для любого или всех видов S0-S7. К тому же группирующий набор параметров может предоставляться для группы наборов параметров, так что слайсы в отдельных изображениях в видах S0-S7 могут просто ссылаться на идентификатор группирующего набора параметров.
[0128] Как показано на фиг. 4, компонент вида может использовать компоненты вида в других видах для ссылки. Это называется межвидовым предсказанием. В MVC межвидовое предсказание реализуется, как если бы компонент вида в другом виде был ссылкой для внешнего предсказания. Видеокодер 20 и видеодекодер 30 могут кодировать возможные межвидовые ссылки в расширении набора параметров последовательности (SPS) MVC (как показано в примере Таблицы 1). Видеокодер 20 и видеодекодер 30 дополнительно могут изменять возможные межвидовые ссылки путем исполнения процесса построения списка опорных изображений, который может сделать возможным гибкое упорядочение ссылок для внешнего предсказания или межвидового предсказания.
[0129] В расширении SPS MVC, показанном в Таблице 1, для каждого вида сигнализируется число видов, которое может использоваться для образования списка 0 опорных изображений и списка 1 опорных изображений. Взаимосвязь предсказания для опорного изображения, которое сигнализируется в расширении SPS MVC, может отличаться от взаимосвязи предсказания для неопорного изображения (сигнализированного в расширении SPS MVC) в том же виде.
[0130] Стандарты кодирования видео включают в себя H.261 ITU-T, MPEG-1 Visual ISO/IEC, H.262 ITU-T или MPEG-2 Visual ISO/IEC, H.263 ITU-T, MPEG-4 Visual ISO/IEC и H.264 ITU-T (также известный как MPEG-4 AVC ISO/IEC), включая его расширения Масштабируемого кодирования видео (SVC) и Многовидового кодирования видео (MVC).
[0131] К тому же имеется новый стандарт кодирования видео, а именно Высокоэффективное кодирование видео (HEVC), разрабатываемый Объединенной командой по кодированию видео (JCT-VC) из Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по движущимся изображениям (MPEG) ISO/IEC. Последний рабочий вариант (WD) HEVC, в дальнейшем называемый WD4 HEVC, доступен по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/6_Torino/wg11/JCTVC-F803-v3.zip, обозначенный как WD4d1 HEVC.
[0132] Механизм набора параметров последовательности и изображения отделяет передачу нечасто меняющейся информации от передачи данных кодированного блока. Наборы параметров последовательности и изображения в некоторых применениях могут передаваться "вне полосы", используя надежный транспортный механизм. Полезная нагрузка необработанной последовательности байтов (RBSP) набора параметров изображения может включать в себя параметры, на которые могут ссылаться единицы уровня абстракции сети (NAL) кодированного слайса в одном или более кодированных изображениях. RBSP набора параметров последовательности может включать в себя параметры, на которые могут ссылаться одна или более RBSP набора параметров изображения или одна или более единиц NAL дополнительной информации расширения (SEI), содержащих сообщение SEI о периоде буферизации. RBSP набора параметров последовательности может включать в себя параметры, на которые могут ссылаться одна или более RBSP набора параметров изображения или одна или более единиц NAL SEI, содержащих сообщение SEI о периоде буферизации.
[0133] Набор параметров последовательности может включать в себя необязательный набор параметров, называемый информацией о применимости видео (VUI). VUI может включать в себя следующие три категории необязательной информации: информация о представлении видео, информация о гипотетическом эталонном декодере (HRD) и информация об ограничении битового потока. Информация о представлении видео включает в себя соотношение сторон, связанную с преобразованием цветового пространства информацию, фазовые сдвиги цветности относительно яркости и частоту кадров. HRD включает в себя параметры буферизации видео для кодированных видеопоследовательностей. Информация об ограничении битового потока включает в себя ограничения по диапазону векторов движения, размеру буфера декодированных изображений (DPB), числу переупорядочиваемых кадров и кодированным размерам блоков (например, макроблоков или единиц кодирования (CU)) и изображений.
[0134] WD5 HEVC включает в себя поддержку набора параметров адаптации (APS). Понятие набора параметров адаптации (APS) также можно обнаружить в JCTVC-F747, доступном по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/6_Torino/wg11/JCTVC-F747-v4.zip.
[0135] Унифицированный заголовок единицы NAL может использоваться для немасштабируемых битовых потоков HEVC, а также для масштабируемых битовых потоков, соответствующих возможным масштабируемым или многовидовым расширениям HEVC. Унифицированный заголовок единицы NAL может отличаться от действующего заголовка единицы NAL HEVC в следующих особенностях: может иметь место фиксированная длина заголовка единицы NAL для одной полностью кодированной видеопоследовательности, тогда как длина может меняться между разными кодированными видеопоследовательностями, и эффективное кодирование синтаксических элементов масштабируемости в заголовке единицы NAL, и когда конкретный синтаксический элемент не нужен, ему не нужно присутствовать. При таком исполнении разный тип единицы NAL или набор параметров может использоваться для всего битового потока.
[0136] Фиг. 5 - концептуальная схема, иллюстрирующая набор параметров видео (VPS) и различные наборы параметров уровней (LPS). Многоточие после второго LPS на фиг. 5 предназначено для указания, что может иметь место любое число N VPS, где N - целое число. Например, каждый уровень (например, каждый уровень SVC или каждый вид MVC) может иметь соответствующий LPS. Кодировщик видео, например видеокодер 20 или видеодекодер 30, может конфигурироваться для кодирования VPS и одного или более LPS, например, проиллюстрированных на фиг. 5.
[0137] Ниже Таблица 2 предоставляет примерный синтаксис полезной нагрузки необработанной последовательности байтов (RBPS) для VPS.
[0138] Кодировщики видео могут конфигурироваться так, что
кодированная видеопоследовательность (например, битовый поток, включающий в себя один или более уровней) может иметь только один активный набор параметров видео (VPS). VPS можно заключить в единицу NAL конкретного типа. Например, nal_unit_type для RBSP VPS может быть равен 10. Примерная семантика для VPS из Таблицы 2 описываются ниже:
[0139] В этом примере video_para_set_id идентифицирует соответствующий набор параметров видео (VPS).
[0140] В этом примере cnt_p точно определяет максимальное число значений priority_id, присутствующих в соответствующей кодированной видеопоследовательности.
[0141] В этом примере cnt_d точно определяет максимальное число уровней зависимости, присутствующих в соответствующей кодированной видеопоследовательности. Несколько видов с одинаковым разрешением могут считаться принадлежащим одному уровню зависимости. Два уровня зависимости могут иметь одинаковое пространственное разрешение.
[0142] В этом примере cnt_t точно определяет максимальное число временных уровней, присутствующих в кодированной видеопоследовательности.
[0143] В этом примере cnt_q точно определяет максимальное число уровней качества, присутствующих на некотором уровне зависимости в кодированной видеопоследовательности.
[0144] В этом примере cnt_v точно определяет максимальное число видов, присутствующих в кодированной видеопоследовательности.
[0145] В этом примере cnt_f точно определяет число битов, используемое для представления синтаксического элемента reserved_flags в заголовке единицы NAL.
[0146] В этом примере pic_width_in_luma_samples[i] и pic_height_in_luma_samples[i] точно определяют соответственно ширину и высоту разрешения i-го уровня зависимости в единицах выборок яркости.
[0147] В этом примере bit_depth_luma_minus8[i] плюс 8 и bit_depth_chroma_minus8[i] плюс 8 точно определяют битовую глубину компонентов яркости и цветности у i-го представления битовой глубины.
[0148] В этом примере chroma_format_idc[i] точно определяет формат выборки цветности у i-го представления формата выборки цветности. Например, значение, равное 0, может указывать 4:2:0; значение, равное 1, может указывать 4:4:4, значение, равное 2, может указывать 4:2:2, и значение, равное 3, может указывать 4:0:0.
[0149] В этом примере average_frame_rate[i] точно определяет среднюю частоту кадров у i-го представления временного уровня в единицах кадров в 256 секунд.
[0150] В этом примере view_id[i] точно определяет идентификатор вида у i-го вида, который имеет индекс порядка видов, равный i. Когда отсутствует, значение view_id[ 0 ] можно предположить равным 0. vps_extension_flag, равный 0, точно определяет, что никакие синтаксические элементы vps_extension_data_flag не присутствуют в структуре синтаксиса RBSP набора параметров видео. vps_extension_flag может быть равен 0 в битовых потоках, соответствующих предстоящему стандарту HEVC. Значение 1 для vps_extension_flag может быть зарезервировано, например, для будущего использования ITU-T | ISO/IEC. Декодеры, например видеодекодер 30, могут игнорировать все данные, которые следуют за значением 1 для vps_extension_flag в единице NAL набора параметров видео.
[0151] В этом примере vps_extension_data_flag может иметь любое значение. Это не влияет на соответствие профилям, точно определенным в предстоящем стандарте HEVC, а предусматривает дальнейшее развитие предстоящего стандарта.
[0152] Другие синтаксические элементы в VPS могут иметь такую же семантику, как и синтаксические элементы с такими же названиями в SPS текущего рабочего варианта HEVC. Те синтаксические элементы могут применяться к кодированной видеопоследовательности, которая ссылается на этот VPS, пока не перезаписаны наборами параметров более низкого уровня.
[0153] В некоторых примерах в VPS может дополнительно сигнализироваться 3DV_flag для указания, присутствует ли глубина в кодированной видеопоследовательности.
[0154] В некоторых примерах параметры VUI сигнализируются в LPS.
[0155] В некоторых примерах синтаксические элементы cnt_p, cnt_t, cnt_d, cnt_q и cnt_v точно определяют числа битов, используемые для кодирования priority_id, temporal_id, dependency_id, quality_id и view_idx соответственно, и максимальные числа значений priority_id, временных уровней, уровней зависимости, уровней качества и видов, присутствующих в кодированных видеопоследовательностях, также могут сигнализироваться в VPS.
[0156] В некоторых примерах можно ввести другой тип единицы NAL, чтобы он содержал синтаксические элементы cnt_p, cnt_t, cnt_d, cnt_q, cnt_v и cnt_f. Этот новый тип единицы NAL также может включать в себя идентификатор (ID), и на этот ID могут ссылаться в VPS.
[0157] В некоторых примерах синтаксические элементы от log2_max_pic_order_cnt_lsb_minus4 до inter_4×4_enabled_flag в Таблице 2 не сигнализируются в VPS, а вместо этого видеокодер 20 и видеодекодер 30 могут кодировать эти синтаксические элементы в LPS.
[0158] В некоторых примерах структура синтаксиса operation_point_desription() из Таблицы 2 не включается в VPS; вместо этого видеокодер 20 и видеодекодер 30 либо другие элементы (например, интерфейс 22 вывода и/или интерфейс 28 ввода) могут кодировать контент в структуре синтаксиса operation_point_desription() в сообщении с дополнительной информацией расширения (SEI).
[0159] В некоторых примерах видеокодер 20 и/или видеодекодер 30 может кодировать параметры информации о применимости видео (VUI) в VPS. Например, VPS может включать в себя данные, точно определяющие информацию об ограничении битового потока, например ограничения по диапазону векторов движения, размеру DPB, числу переупорядочиваемых кадров и кодированным размерам блоков (например, макроблоков или CU) и изображений. Таким образом, VPS может точно определять информацию, указывающую необходимый размер DPB, чтобы видеодекодер (например, видеодекодер 30) должным образом декодировал соответствующий битовый поток, то есть битовый поток, включающий в себя VPS. Также VPS может точно определять информацию о переупорядочении изображений, то есть число изображений, которое может предшествовать данному изображению в порядке декодирования и которое следует за данным изображением в порядке вывода (то есть порядке отображения).
[0160] Дополнительно или в качестве альтернативы VPS может включать в себя данные, точно определяющие информацию о гипотетическом эталонном декодере (HRD). Как отмечалось выше, видеокодер 20 и/или видеодекодер 30 может кодировать (то есть сигнализировать) в VPS параметры VUI, которые могут включать в себя информацию о HRD. Таким образом, VPS может включать в себя данные, описывающие, например, рабочие точки соответствующего битового потока. Например, VPS может включать в себя данные, описывающие одно или более из числа максимальных рабочих точек, зависимостей между разными уровнями или видами, информации о профиле и уровне для каждой рабочей точки, представления единицы NAL VCL рабочей точки для каждой рабочей точки, битрейта для каждой рабочей точки, зависимости между рабочими точками, ограничений для каждой рабочей точки, VUI или частичной VUI для каждой рабочей точки и/или VUI или частичной VUI для каждого уровня или вида.
[0161] VPS также может включать в себя для каждого измерения: специфическое значение индекса, диапазон значений индекса или список значений индекса. Например, когда VPS включает в себя данные, описывающие специфическое значение индекса, значение индекса может, для пространственного разрешения, соответствовать битовой глубине для формата дискретизации цветности. В качестве другого примера, когда VPS включает в себя диапазон значений индекса, для временных уровней этот диапазон может содержать от нуля (0) до ID наивысшего временного уровня, а для уровней качества диапазон может содержать от нуля (0) до ID наивысшего уровня качества. В качестве еще одного примера, когда VPS включает в себя данные, описывающие список значений индекса, этот список может содержать список значений индексов вида для нескольких видов.
[0162] В некоторых примерах видеокодер 20 может кодировать (то есть сигнализировать), а видеодекодер может декодировать один или более параметров формата представления (ширина, высота, битовая глубина и т.п.), и могут иметь место разные наборы параметров формата представления. Уровень или рабочая точка тогда могут ссылаться на индекс такого набора параметров формата представления. Пример проекта синтаксиса для такого набора показан в Таблице 3 ниже.
[0163] В некоторых примерах вместо этого может сигнализироваться ref_format_idx в наборе параметров уровня.
[0164] Ниже Таблица 4 предоставляет примерный синтаксис для описаний рабочих точек.
[0165] Примеры семантики для синтаксических элементов из Таблицы 4 обсуждаются ниже:
[0166] В этом примере num_operation_point_minus1 плюс 1 точно определяет максимальное число рабочих точек, которые присутствуют в кодированной видеопоследовательности и для которых информация о рабочих точках сигнализируется следующими синтаксическими элементами.
[0167] В этом примере op_profile_level_idc[i], operation_point_id[i], priority_id[i], num_target_output_views_minus1[i], frm_rate_info_present_flag[i], avg_bitrate[i], max_bitrate[i], max_bitrate_calc_window[i], constant_frm_rate_idc[i] и num_directly_dependent_views[i] могут иметь такую же семантику, как и синтаксические элементы с такими же названиями в сообщении SEI с информацией о масштабируемости вида из H.264.
[0168] В этом примере quality_id[i] и dependency_id[i] могут иметь такую же семантику, как и синтаксические элементы с такими же названиями в сообщении SEI с информацией о масштабируемости из H.264.
[0169] В этом примере directly_dependent_view_idx[i][j] точно определяет индекс вида у j-го вида, от которого непосредственно зависит целевой выходной вид текущей рабочей точки в рамках представления текущей рабочей точки.
[0170] В этом примере num_ref_views[i] точно определяет число компонентов вида для межвидового предсказания в начальном списке RefPicList0 и RefPicList1 опорных изображений при декодировании компонентов вида с индексом порядка видов, равным i. В этом примере значение num_ref_views[i] не должно быть больше Min(15, num_views_minus1). В некоторых примерах значение num_ref_views[ 0 ] равно 0.
[0171] В этом примере ref_view_idx[i][j] точно определяет индекс порядка видов у j-го компонента вида для межвидового предсказания в начальном списке RefPicList0 и RefPicList1 опорных изображений при декодировании компонента вида с индексом порядка видов, равным i. В этом примере значение ref_view_idx[i][j] должно быть в диапазоне от 0 до 31 включительно.
[0172] В некоторых примерах в качестве альтернативы некоторые из синтаксических элементов в сообщении SEI с информацией о масштабируемости (например, которое описано в H.264), например синтаксические элементы, связанные с информацией о зависимости уровней, могут включаться в структуру синтаксиса operation_points_description() из Таблицы 4.
[0173] В некоторых примерах видеокодер 20 и/или видеодекодер 30 могут кодировать (то есть сигнализировать) некоторые параметры VUI в структуре синтаксиса operation_points_description() из Таблицы 4.
[0174] Ниже Таблица 5 предоставляет альтернативный синтаксис для набора параметров видео:
[0175] Примеры семантики для синтаксиса набора параметров видео из Таблицы 5 обсуждаются ниже. Вообще, аналогично названные синтаксические элементы, которые не обсуждаются ниже, могут иметь такую же семантику, как обсуждалась выше по отношению к Таблице 2. Семантика для других синтаксических элементов может быть следующей:
[0176] В этом примере bit_equal_to_one равен 1 (то есть значению двоичной "1").
[0177] В этом примере extention_type, равный 0, указывает, что несколько уровней вида может присутствовать в битовом потоке. В этом примере extension_type, равный 1, точно определяет, что несколько уровней зависимости и/или качества может присутствовать в битовом потоке.
[0178] В этом примере num_rep_formats_minus1 плюс 1 точно определяет максимальное число разных наборов форматов представления, поддерживаемых этим набором параметров видео, причем формат представления включает в себя битовую глубину и формат цветности (то есть наборы из значений bit_depth_luma_minus8, bit_depth_chroma_minus8 и chroma_format_idc), разрешение изображения и информацию об окне обрезки в кодированной видеопоследовательности. Значение num_rep_formats_minus1 может быть в диапазоне от 0 до X включительно. Видеокодер 20 и видеодекодер 30 могут кодировать набор из битовой глубины и формата цветности для основного уровня с помощью bit_depth_luma_minus8, bit_depth_chroma_minus8 и chroma_format_idc, и наборы из битовой глубины и формата цветности сигнализируются для уровней расширения с помощью следующего набора синтаксических элементов: bit_depth_luma_minus8[i], bit_depth_chroma_minus8[i] и chroma_format_idc[i].
[0179] Видеокодер 20 и видеодекодер 30 могут кодировать первый набор формата представления с помощью bit_depth_luma_minus8, bit_depth_chroma_minus8, chroma_format_idc, pic_width_in_luma_samples, pic_height_in_luma_samples, pic_cropping_flag, pic_crop_left_offset, pic_crop_right_offset, pic_crop_top_offset и pic_crop_bottom_offset.
[0180] В этом примере bit_depth_luma_minus8[i], bit_depth_chroma_minus8[i] и chroma_format_idc[i] точно определяют соответственно i-ый набор значений bit_depth_luma_minus8, bit_depth_chroma_minus8 и chroma_format_idc в кодированной видеопоследовательности.
[0181] В этом примере pic_width_in_luma_samples[i] и pic_height_in_luma_samples[ i ] точно определяют соответственно ширину и высоту каждого декодированного изображения в единицах выборок яркости, используя i-ый формат представления.
[0182] В этом примере pic_cropping_flag[i], pic_crop_left_offset[i], pic_crop_right_offset[i], pic_crop_top_offset[i] и pic_crop_bottom_offset[i] точно определяют для i-го набора формата представления выборки изображений в кодированной видеопоследовательности, которые выводятся из процесса декодирования, в виде прямоугольной области, точно определенной координатами изображения для вывода.
[0183] В этом примере rep_format_idx[i] точно определяет индекс значений к набору из дополнительной битовой глубины и формата цветности, который применяется к уровню с layer_id, равным i. Значения bit_depth_luma_minus8, bit_depth_chroma_minus8 и chroma_format_idc для уровня с layer_id, равным i, могут быть равны bit_depth_luma_minus8[rep_format_idx[i]],
bit_depth_chroma_minus8[ rep_format_idx[i]] и chroma_format_idc[ rep_format_idx[i]] соответственно. Значение rep_format_idx[ i ] должно быть в диапазоне от 0 до X включительно.
[0184] В этом примере dependency_id[i] точно определяет идентификатор зависимости для уровня с layer_id, равным i. dependency_id[i] может быть в диапазоне от 0 до X включительно. Когда отсутствует, dependency_id[i] можно предположить равным 0. Когда num_directly_dependent_layers[i] больше 0, dependency_id[i] может быть больше либо равен идентификатору зависимости любого уровня, от которого зависит уровень с layer_id, равным i.
[0185] В этом примере quality_id[i] точно определяет идентификатор качества для уровня с layer_id, равным i. quality_id[ i ] может быть в диапазоне от 0 до X включительно. Когда отсутствует, quality_id[ i ] можно предположить равным 0. Когда num_directly_dependent_layers[ i ] больше 0, quality_id[i] может быть больше либо равен идентификатору качества любого уровня, от которого зависит уровень с layer_id, равным i, и который имеет идентификатор зависимости, равный dependency_id[i].
[0186] В этом примере num_short_term_ref_pic_sets точно определяет число кратковременных наборов опорных изображений, которые точно определяются в наборе параметров видео. Значение num_short_term_ref_pic_sets может быть в диапазоне от 0 до 64 включительно.
[0187] В этом примере depth_included_flag, равный 1, указывает, что текущая рабочая точка 3DV содержит глубину. В этом примере depth_included_flag, равный 0, указывает, что текущая рабочая точка 3DV не содержит глубину.
[0188] Примерный синтаксис для элемента зависимости видов из Таблицы 5 предоставляется ниже в Таблице 6:
[0189] Ниже Таблица 7 задает примерный набор данных, в котором зависимость видов у каждого неосновного вида непосредственно сигнализируется на уровне последовательности.
[0190] В этом примере num_ref_views[i] точно определяет число компонентов вида для межвидового предсказания в начальном списке RefPicList0 и RefPicList1 опорных изображений при декодировании компонентов вида с индексом порядка видов, равным i. В этом примере значение num_ref_views[i] не больше Min(15, num_views_minus1). В этом примере значение num_ref_views[0] равно 0.
[0191] В этом примере ref_view_idx[i][j] точно определяет индекс порядка видов у j-го компонента вида для межвидового предсказания в начальном списке RefPicList0 и RefPicList1 опорных изображений при декодировании компонента вида с индексом порядка видов, равным i. В этом примере значение ref_view_idx[i][j] находится в диапазоне от 0 до 31 включительно.
[0192] Как отмечалось выше, конкретный тип единицы NAL (например, тип 10 единицы NAL) может использоваться для заключения в нее набора параметров видео. Синтаксис единицы NAL можно изменить, как показано ниже в примере из Таблицы 8.
[0193] В этом примере добавляются элементы внутри оператора "if(nal_unit_type != 10)" относительно традиционного синтаксиса единицы NAL. В этом примере число битов, используемое для сигнализации синтаксических элементов priority_id, temporal_id, dependency_id, quality_id и view_idx, равно Ceil(log2(cnt_p)), Ceil(log2(cnt_t)), Ceil(log2(cnt_d)), Ceil(log2(cnt_q)) и Ceil(log2(cnt_v)) соответственно. Также в этом примере, когда отсутствует любой из синтаксических элементов priority_id, temporal_id, dependency_id, quality_id и view_idx, значение того синтаксического элемента предполагается равным 0.
[0194] За исключением заданного выше относительно числа битов и выводов, которые можно сделать, семантику для синтаксических элементов из Таблицы 8 можно задать следующим образом. Семантика priority_id, dependency_id и quality_id может быть такой, как задана в расширении SVC в H.264/AVC ITU-T. Семантика temporal_id может быть такой, как задана в WD4 в HEVC. В этом примере reserved_one_bit равен 1. Значение 0 для reserved_one_bit может быть точно определено будущими расширениями стандарта HEVC. Декодеры, например видеодекодер 30, могут конфигурироваться для игнорирования значения reserved_one_bit.
[0195] В этом примере view_idx точно определяет индекс порядка видов для некоторого вида. Семантика view_idx может быть такой же, как синтаксический элемент "индекс порядка видов", который точно определен в расширении MVC в H.264/AVC ITU-T.
[0196] В этом примере каждый бит у reserved_flags равен 1. Другие значения для reserved_flags могут быть точно определены будущими расширениями предстоящего стандарта HEVC. Декодеры, например видеодекодер 30, могут конфигурироваться для игнорирования значения reserved_flags, пока не сконфигурированы для работы в соответствии с расширением, которое назначает семантику битам у reserved_flags. В этом примере число битов, используемое для представления reserved_flags, равно reserved_flags_len.
[0197] В этом примере каждый бит у reserved_bits равен 1. Другие значения для reserved_bits могут быть точно определены будущим расширением предстоящего стандарта HEVC. Декодеры, например видеодекодер 30, могут конфигурироваться для игнорирования значения reserved_bits, вновь пока не сконфигурированы в соответствии с таким будущим расширением. Число битов, используемое для представления reserved_bits, в этом примере равно ((m+7>>3)<<3)-m.
[0198] Ниже Таблица 9 предоставляет примерный синтаксис для набора параметров уровня. В некоторых примерах может использоваться одинаковый синтаксис для каждого из LPS из фиг. 5.
[0199] Примеры семантики для синтаксиса LPS из Таблицы 9 описываются ниже. Разные уровни (например, разные виды в MVC или разные уровни в SVC) могут ссылаться на разные LPS. Разные уровни качества на одном и том же уровне зависимости могут совместно использовать один и тот же LPS. Разные временные уровни на одном и том же уровне зависимости могут совместно использовать один и тот же LPS. В качестве альтернативы разные виды могут ссылаться на один и тот же LPS, и разные уровни зависимости могут ссылаться на один и тот же LPS.
[0200] В этом примере depth_flag, равный 1, точно определяет, что LPS применяется к представлениям глубины, идентифицированным значениями temporal_id, dependency_id, quality_id и view_idx в единице NAL LPS. Depth_flag, равный 0, точно определяет, что LPS применяется к представлениям текстуры, идентифицированным значениями temporal_id, dependency_id, quality_id и view_idx в единице NAL LPS.
[0201] В этом примере layer_para_set_id точно определяет id текущего набора параметров уровня (LPS). Разные наборы параметров уровней с одинаковыми значениями dependency_id и view_idx соответственно совместно используют одно пространство значений для layer_para_set_id, следовательно, разные LPS с разным сочетанием depencey_id и view_idx могут иметь одинаковое значение layer_para_set_id.
[0202] В качестве альтернативы все LPS могут совместно использовать одно пространство значений, следовательно, каждый LPS имеет индивидуальное значение layer_para_set_id.
[0203] В этом примере vps_id идентифицирует набор параметров видео, на который ссылается этот набор параметров уровня.
[0204] В этом примере lps_extension_flag, равный 0, точно определяет, что никакие синтаксические элементы lps_extension_data_flag не присутствуют в структуре синтаксиса RBSP набора параметров уровня. В этом примере lps_extension_flag может быть равен 0 в битовых потоках, соответствующих предстоящему стандарту HEVC. Значение 1 для lps_extension_flag зарезервировано для будущего использования ITU-T|ISO/IEC. Декодеры, например видеодекодер 30, могут игнорировать все данные, которые следуют за значением 1 для lps_extension_flag в единице NAL набора параметров уровня.
[0205] В этом примере lps_extension_data_flag может иметь любое значение и не влияет на соответствие профилям, точно определенным в предстоящем стандарте HEVC.
[0206] Другие синтаксические элементы могут иметь такую же семантику, как и синтаксические элементы с такими же названиями в SPS из WD HEVC, но при применении только к изображениям, ссылающимся на этот LPS.
[0207] LPS может содержаться в единице NAL, заголовок которой можно задать в соответствии с Таблицей 8 выше. Нижеследующие синтаксические элементы имеют следующую немного измененную семантику, когда они ассоциируются с LPS.
[0208] В этом примере priority_id равен минимальному значению из значений priority_id всех единиц NAL, ссылающихся на этот LPS.
[0209] В этом примере temporal_id равен минимальному значению из temporal_id всех единиц NAL, ссылающихся на этот LPS.
[0210] В этом примере dependency_id равен dependency_id всех единиц NAL, ссылающихся на этот LPS.
[0211] В этом примере quality_id равен минимальному значению из quality_id всех единиц NAL, ссылающихся на этот LPS.
[0212] В этом примере v_idx является индексом вида у текущего LPS. Все изображения, ссылающиеся на этот LPS, могут иметь id вида, равный view_id[v_idx].
[0213] В качестве альтернативы вышеупомянутые синтаксические элементы могут непосредственно сигнализироваться в таблице синтаксиса набора параметров уровня, как показано в примере из Таблицы 10. Более подробную таблицу синтаксиса можно разработать в соответствии с Таблицей 9 ниже. В этом случае те синтаксические элементы не находятся в заголовке единицы NAL в LPS, и синтаксический анализ LPS может зависеть от VPS с ID, равным vps_id.
[0214] LPS в этом случае не должен иметь заголовок единицы NAL, дублирующий вышеупомянутые синтаксические элементы. Предполагая, что типом единицы NAL у единицы NAL, заключающей в себе LPS, является, например, 5, синтаксис заголовка единицы NAL можно немного изменить, как показано в Таблице 11, которая добавляет исключение "&& nal_unit_type ! = 5" к оператору "if" из Таблицы 8:
[0215] В других примерах видеокодер 20 и видеодекодер 30 могут кодировать связанные с масштабируемыми характеристиками синтаксические элементы, используя кодирование с фиксированной длиной, как показано ниже в примере из Таблицы 12.
[0216] Ниже Таблица 13 предоставляет пример синтаксиса для набора параметров изображения (PPS) в соответствии с методиками из данного раскрытия изобретения. В этом примере набору параметров изображения не нужно сигнализировать "seq_parameter_set_id" в отличие от PPS в традиционном HEVC.
[0217] Примеры семантики для PPS из Таблицы 13 описываются ниже.
[0218] В этом примере pps_extension_flag, равный 0, точно определяет, что никакие синтаксические элементы pps_extension_data_flag не присутствуют в структуре синтаксиса RBSP набора параметров изображения. В этом примере pps_extension_flag равен 0 в битовых потоках, соответствующих предстоящему стандарту HEVC. Значение 1 для pps_extension_flag может быть зарезервировано для будущего использования ITU-T | ISO/IEC. Декодеры, например видеодекодер 30, могут игнорировать все данные, которые следуют за значением 1 для pps_extension_flag в единице NAL набора параметров изображения.
[0219] В этом примере pps_extension_data_flag может иметь любое значение. Это не обязательно влияет на соответствие профилям, точно определенным в предстоящем стандарте HEVC. Семантика для значений pps_extension_data_flag может назначаться в дальнейших разработках стандарта HEVC или расширениях стандарта, не конфликтуя с методиками из данного раскрытия изобретения.
[0220] В методиках из данного раскрытия изобретения никакой id набора параметров последовательности или id набор параметров уровня не нужно сигнализировать в PPS. Некоторые другие синтаксические элементы в PPS можно переместить в LPS. То есть видеокодер 20 и/или видеодекодер 30 может конфигурироваться для кодирования одного или более LPS, включающих в себя данные, аналогичные синтаксическим элементам, показанным в Таблице 13.
[0221] Фиг. 6 - концептуальная схема, иллюстрирующая примерный группирующий набор параметров (GPS) и взаимосвязи GPS с другими наборами параметров и заголовками слайсов. В этом примере другие наборы параметров включают в себя LPS, SPS, PPS, наборы параметров адаптации (APS) типа 0 (например, APS, сигнализирующие параметры адаптивного контурного фильтра (ALF)), APS типа 1 (например, APS, сигнализирующие матрицу квантования) и другие наборы параметров. В этом примере GPS включает в себя множество разных групп, причем каждая имеет уникальный ID GPS (также называемый ID группы), где каждая группа указывает конкретный набор из различных наборов параметров с помощью ID набора параметров. Таким образом, заголовки слайсов должны точно определять только group_id для точного определения каждого из наборов параметров, соответствующих группе, имеющей тот group_id.
[0222] Ниже Таблицы 14 и 15 предоставляют альтернативные примеры синтаксиса для RBSP группирующего набора параметров.
[0223] Кодировщики видео, например видеокодер 20 и видеодекодер 30, могут конфигурироваться для кодирования группирующего набора параметров в соответствии, например, с Таблицей 14 или Таблицей 15. Примеры семантики для синтаксиса наборов группирующих параметров предоставляются ниже.
[0224] В этом примере number_signalled_para_set_groups_minus1 плюс 1 точно определяет число сигнализированных групп параметров. Это значение может быть в диапазоне от 0 до 30 включительно.
[0225] В этом примере para_set_group_id[i] точно определяет ID i-ой сигнализированной группы наборов параметров. Значение para_set_group_id[i] должно быть в диапазоне от 0 до 31 включительно.
[0226] В этом примере para_set_type_id[i][j] точно определяет ID j-го типа набора параметров для i-ой группы наборов параметров.
[0227] В этом примере lps_id[ i ] указывает id набора параметров уровня, на который ссылается группа наборов параметров с id группы, равным para_set_group_id[i]. Значения dependency_id и view_idx у LPS с layer_para_set_id, равным lps_id[i], могут быть идентичны значениям dependency_id и view_idx соответственно у единицы NAL группы наборов параметров.
[0228] Значения dependency_id и view_idx у RBSP группирования набора параметров присутствуют в заголовке единицы NAL этой RBSP в примерах из Таблиц 14 и 15, и значения dependency_id и view_idx у LPS могут присутствовать либо в заголовке единицы NAL этого LPS, либо в таблице синтаксиса LPS.
[0229] В качестве альтернативы значения dependency_id и view_idx у LPS с layer_para_set_id, равным lps_id[i], могут быть не идентичны значениям dependency_id и view_idx соответственно у единицы NAL группы наборов параметров.
[0230] В этом примере pps_id[i] указывает id набора параметров изображения, на который ссылается группа наборов параметров с id группы, равным para_set_group_id[i].
[0231] В этом примере aps_id[i] указывает id набора параметров адаптации, на который ссылается группа наборов параметров с id группы, равным para_set_group_id[i].
[0232] В этом примере gps_extension_flag, равный 0, задает, что никакие синтаксические элементы gps_extension_data_flag не присутствуют в структуре синтаксиса RBSP группирования набора параметров. Gps_extension_flag может быть равен 0 в битовых потоках, соответствующих предстоящему стандарту HEVC. Значение 1 для gps_extension_flag может быть зарезервировано для будущего использования ITU-T | ISO/IEC. Декодеры, например видеодекодер 30, могут игнорировать все данные, которые следуют за значением 1 для gps_extension_flag в единице NAL группирования набора параметров. Вообще gps_extension_data_flag может иметь любое значение. Это не должно влиять на соответствие профилям, точно определенным в предстоящем стандарте HEVC.
[0233] В некоторых примерах вместо para_set_type_id[i][j] может быть aps_id[i][j] с аналогичной семантикой, как aps_id[i], которая описана выше.
[0234] Как показано на фиг. 6, вместо ссылки на ID набора параметров изображения в заголовке слайса, в соответствии с методиками из данного раскрытия изобретения заголовок слайса может ссылаться на ID группы наборов параметров, соответственно косвенно ссылаясь на LPS, PPS и APS каждого типа (например, APS, предоставляющие параметры ALF и матрицы квантования).
[0235] Кодировщик видео может активизировать набор параметров видео или наборы параметров уровней, когда единица NAL VCL (содержащая кодированный слайс) ссылается на набор параметров, косвенно, например, на основе принципа проектирования H.264/AVC.
[0236] В некоторых примерах наборы параметров можно активизировать с помощью специфического типа единицы NAL, а не кодированного слайса. Например, тип единицы NAL этого специфического типа (единица NAL активизации наборов параметров) может активизировать один и ровно один VPS, при наличии в битовом потоке. К тому же в различных альтернативах такой тип единицы NAL может активизировать по меньшей мере один LPS. К тому же такой тип единицы NAL может активизировать по меньшей мере один PPS. К тому же такой тип единицы NAL может активизировать по меньшей мере один APS. Единица NAL активизации наборов параметров может быть RBSP группирующего набора параметров. Единица NAL активизации наборов параметров (PSA) может быть применима к одной кодированной видеопоследовательности. Единица NAL PSA может считаться не являющейся единицей NAL VCL, то есть не имеющей непосредственного отношения к кодировщику видео. Синтаксис заголовка единицы NAL у единицы NAL PSA может быть таким же, как единица NAL VPS.
[0237] В некоторых примерах единица NAL PSA, при наличии в единице доступа, может предшествовать первой единице NAL VCL в единице доступа. Может присутствовать по меньшей мере одна единица NAL PSA в первой единице доступа кодированной видеопоследовательности, например IDR-изображении. Несколько единиц NAL PSA в одной и той же кодированной видеопоследовательности могут содержать одинаковый id VPS; соответственно, никакие разные наборы параметров видео не нужно активизировать в одной и той же кодированной видеопоследовательности. Единица NAL PSA, при наличии в единице доступа, может предшествовать любой единице NAL LPS, PPS, APS или SEI, при наличии. Единица NAL VPS, при наличии в единице доступа, может предшествовать любой единице NAL LPS, PPS, APS или SEI, при наличии. К тому же в различных альтернативах единица NAL PSA, при наличии в единице доступа, может предшествовать единице NAL VPS, при наличии.
[0238] В некоторых примерах кодировщики видео, например видеокодер 20 и видеодекодер 30, могут конфигурироваться для использования синтаксиса из Таблицы 16 для набора параметров последовательности (SPS) в отличие от традиционного синтаксиса SPS, например, в HEVC.
[0239] Примерный SPS из Таблицы 16 исключает из традиционного синтаксиса SPS profile_idc, reserved_zero_8bits, level_idc, chroma_format_idc, separate_colour_plane_flag и соответствующий условный оператор "if", max_temporal_layers_minus1, pic_width_in_luma_samples, pic_height_in_luma_samples, pic_cropping_flag, pic_crop_left_offset, pic_crop_right_offset, pic_crop_top_offset, pic_crop_bottom_offset и соответствующий условный оператор "if", bit_depth_luma_minus8, bit_depth_chroma_minus8, num_short_term_ref_pic_sets, short_term_ref_pic_set(i) и соответствующий условный оператор "if". Кроме того, примерный SPS из Таблицы 16 добавляет video_parameter_set_id и rep_format_idx. Семантика для оставшихся синтаксических элементов может быть такой же, как задана в традиционном HEVC. Семантику для добавленных элементов video_parameter_set_id и rep_format_idx можно задать следующим образом:
[0240] В этом примере video_parameter_set_id идентифицирует набор параметров видео (VPS), на который ссылается текущий SPS. В качестве альтернативы не нужно сигнализировать video_parameter_set_id, и GPS может использоваться для связи SPS со специфическим VPS.
[0241] В этом примере rep_format_idx точно определяет индекс к формату представления, сигнализированному в наборе параметров видео, на который ссылаются.
[0242] В качестве еще одной альтернативы Таблица 17 предоставляет другой пример синтаксиса для группирующего набора параметров. В этом примере предполагается, что синтаксический элемент ID набора параметров видео отсутствует в синтаксисе SPS, как описано выше.
[0243] Семантику для синтаксических элементов из Таблицы 17 можно задать следующим образом:
[0244] В этом примере gps_id точно определяет идентификатор групповой набор параметров (GPS).
[0245] В этом примере vps_id точно определяет идентификатор набора параметров видео, на который ссылается GPS.
[0246] В этом примере sps_id точно определяет идентификатор набора параметров последовательности, на который ссылается GPS.
[0247] В этом примере pps_id точно определяет идентификатор набора параметров изображения, на который ссылается GPS.
[0248] В этом примере num_ref_aps_ids точно определяет число следующих синтаксических элементов ref_aps_id[i]. Значение num_ref_aps_ids должно быть в диапазоне от 0 до 4 включительно.
[0249] В этом примере ref_aps_id[i] идентифицирует i-ый набор параметров адаптации, на который ссылается групповой набор параметров.
[0250] Одно и то же значение ref_aps_id[i] может присутствовать в цикле больше одного раза, и соответственно с помощью одного и того же GPS можно ссылаться больше чем на один тип параметров APS из одного и того же APS, и он [тип] может применяться к кодированным слайсам, ссылающимся на GPS.
[0251] В этом примере ref_aps_param_type[i] точно определяет тип параметров APS, включенных в i-ый набор параметров адаптации, на который ссылается групповой набор параметров. Значение ref_aps_parame_type[i] может быть в диапазоне от 0 до 3 включительно. Значения от 0 до 3 включительно для ref_aps_parame_type[i] соответствуют типам параметров APS у списка масштабирования, фильтра уменьшения блочности, адаптивного смещения выборок (SAO) и ALF соответственно. Значения ref_aps_parame_type[i] для любых двух разных значений i в некоторых примерах не должны быть идентичны.
[0252] В этом примере gps_extension_flag, равный 0, точно определяет, что никакие синтаксические элементы gps_extension_data_flag не присутствуют в структуре синтаксиса RBSP группирования набора параметров. gps_extension_flag может быть равен 0 в битовых потоках, соответствующих предстоящему стандарту HEVC. Значение 1 для gps_extension_flag может быть зарезервировано для будущего использования ITU-T|ISO/IEC. Декодеры, например видеодекодер 30, могут игнорировать все данные, которые следуют за значением 1 для gps_extension_flag в единице NAL группирования набора параметров.
[0253] В этом примере gps_extension_data_flag может иметь любое значение. Это не должно влиять на соответствие профилям, точно определенным в предстоящем стандарте HEVC.
[0254] Кодировщики видео, например видеокодер 20 и видеодекодер 30, могут применять следующий процесс для активизации наборов параметров для одноуровневых или одновидовых битовых потоков, когда GPS точно определяется в соответствии с Таблицей 17 или практически соответствует примеру из Таблицы 17.
[0255] RBSP набора параметров адаптации может включать в себя параметры, на которые единицы NAL кодированного слайса в одном или более кодированных изображениях могут ссылаться косвенно посредством одного или более групповых наборов параметров, на которые ссылаются единицы NAL кодированного слайса. Каждая RBSP набора параметров адаптации сначала может считаться неактивной в начале работы процесса декодирования. Не более одной RBSP набора параметров адаптации может считаться активной для каждого типа параметров APS в любой заданный момент в течение работы процесса декодирования, и активизация любой конкретной RBSP набора параметров адаптации для конкретного типа параметров APS приводит к деактивизации ранее активной RBSP набора параметров адаптации (если есть) для того конкретного типа параметров APS.
[0256] Когда RBSP набора параметров адаптации (с конкретным значением aps_id) не активна для конкретного типа параметров APS, и на нее ссылается единица NAL кодированного слайса для того конкретного типа параметров APS (используя то значение aps_id) косвенно посредством группового набора параметров, на который ссылается единица NAL кодированного слайса, ее можно активизировать для того конкретного типа параметров APS. Эта RBSP набора параметров адаптации называется активной RBSP набора параметров адаптации для того конкретного типа параметров APS до тех пор, пока она не деактивируется в результате активизации другой RBSP набора параметров адаптации для того конкретного типа параметров APS. RBSP набора параметров адаптации с тем конкретным значением aps_id может быть доступна процессу декодирования перед ее активизацией.
[0257] RBSP набора параметров изображения может включать в себя параметры, на которые единицы NAL кодированного слайса в одном или более кодированных изображениях могут ссылаться косвенно посредством одного или более групповых наборов параметров, на которые ссылаются единицы NAL кодированного слайса. Каждая RBSP набора параметров изображения сначала может считаться неактивной в начале работы процесса декодирования. Не более одной RBSP набора параметров изображения может считаться активной в любой заданный момент в течение работы процесса декодирования, и активизация любой конкретной RBSP набора параметров изображения приводит к деактивизации ранее активной RBSP набора параметров изображения (если есть).
[0258] Когда RBSP набора параметров изображения (с конкретным значением pic_parameter_set_id) не активна, и на нее ссылается единица NAL кодированного слайса (используя то значение pic_parameter_set_id) косвенно посредством группового набора параметров, на который ссылается единица NAL кодированного слайса, ее можно активизировать. Эта RBSP набора параметров изображения называется активной RBSP набора параметров изображения до тех пор, пока она не деактивируется в результате активизации другой RBSP набора параметров изображения. RBSP набора параметров изображения с тем конкретным значением pic_parameter_set_id может быть доступна процессу декодирования перед ее активизацией.
[0259] Любая единица NAL набора параметров изображения, содержащая значение pic_parameter_set_id для активной RBSP набора параметров изображения для кодированного изображения, может иметь такое же содержимое, что и у активной RBSP набора параметров изображения для кодированного изображения, если она не идет за крайней единицей NAL VCL в кодированном изображении и не предшествует первой единице NAL VCL в другом кодированном изображении.
[0260] RBSP набора параметров последовательности может включать в себя параметры, на которые единицы NAL кодированного слайса в одном или более кодированных изображениях могут ссылаться косвенно посредством одного или более групповых наборов параметров, на которые ссылаются единицы NAL кодированного слайса, или на которые могут ссылаться одна или более единиц NAL SEI, содержащих сообщение SEI о периоде буферизации. Каждая RBSP набора параметров последовательности сначала может считаться неактивной в начале работы процесса декодирования. Не более одной RBSP набора параметров последовательности может считаться активной в любой заданный момент в течение работы процесса декодирования, и активизация любой конкретной RBSP набора параметров последовательности приводит к деактивизации ранее активной RBSP набора параметров последовательности (если есть).
[0261] Когда RBSP набора параметров последовательности (с конкретным значением seq_parameter_set_id) уже не активна, и на нее ссылается единица NAL кодированного слайса косвенно посредством группового набора параметров, на который ссылается единица NAL кодированного слайса (используя то значение seq_parameter_set_id), или на нее ссылается единица NAL SEI, содержащая сообщение SEI о периоде буферизации (используя то значение seq_parameter_set_id), ее можно активизировать. Эта RBSP набора параметров последовательности называется активной RBSP набора параметров последовательности до тех пор, пока она не деактивируется в результате активизации другой RBSP набора параметров последовательности. RBSP набора параметров последовательности с тем конкретным значением seq_parameter_set_id и содержащаяся в единице доступа с temporal_id, равным 0, может быть доступна процессу декодирования перед ее активизацией. Активизированная RBSP набора параметров последовательности должна оставаться активной для всей кодированной видеопоследовательности.
[0262] RBSP набора параметров видео может включать в себя параметры, на которые единицы NAL кодированного слайса в одном или более кодированных изображениях могут ссылаться косвенно посредством одного или более групповых наборов параметров, на которые ссылаются единицы NAL кодированного слайса, или на которые могут ссылаться одна или более единиц NAL SEI, содержащих сообщение SEI о периоде буферизации. Каждая RBSP набора параметров видео сначала может считаться неактивной в начале работы процесса декодирования. Не более одной RBSP набора параметров видео может считаться активной в любой заданный момент в течение работы процесса декодирования, и активизация любой конкретной RBSP набора параметров видео приводит к деактивизации ранее активной RBSP набора параметров видео (если есть).
[0263] Когда RBSP набора параметров видео (с конкретным значением video_parameter_set_id) уже не активна, и на нее ссылается единица NAL кодированного слайса косвенно посредством группового набора параметров, на который ссылается единица NAL кодированного слайса (используя то значение video_parameter_set_id), или на нее ссылается единица NAL SEI, содержащая сообщение SEI о периоде буферизации (используя то значение video_parameter_set_id), ее можно активизировать. Эта RBSP набора параметров видео называется активной RBSP набора параметров видео до тех пор, пока она не деактивируется в результате активизации другой RBSP набора параметров видео. RBSP набора параметров видео с тем конкретным значением video_parameter_set_id и содержащаяся в единице доступа с temporal_id, равным 0, должна быть доступна процессу декодирования перед ее активизацией. Активизированная RBSP набора параметров видео должна оставаться активной для всей кодированной видеопоследовательности.
[0264] Любая единица NAL набора параметров последовательности, содержащая значение seq_parameter_set_id для активной RBSP набора параметров последовательности для кодированной видеопоследовательности, может иметь такое же содержимое, что и у активной RBSP набора параметров последовательности для кодированной видеопоследовательности, если она не идет за крайней единицей доступа в кодированной видеопоследовательности и не предшествует первой единице NAL VCL и первой единице NAL SEI, содержащей сообщение SEI о периоде буферизации (когда присутствует), в другой кодированной видеопоследовательности.
[0265] Любая единица NAL набора параметров видео, содержащая значение video_parameter_set_id для активной RBSP набора параметров видео для кодированной видеопоследовательности, может иметь такое же содержимое, что и у активной RBSP набора параметров видео для кодированной видеопоследовательности, если она не идет за крайней единицей доступа в кодированной видеопоследовательности и может предшествовать первой единице NAL VCL и первой единице NAL SEI, содержащей сообщение SEI о периоде буферизации (когда присутствует), в другой кодированной видеопоследовательности.
[0266] Все ограничения, которые выражаются во взаимосвязи между значениями синтаксических элементов (и значениями переменных, выведенных из тех синтаксических элементов) в наборах параметров видео, наборах параметров последовательности, наборах параметров изображения и наборах параметров адаптации и другими синтаксическими элементами, являются выражениями ограничений, которые могут применяться только к активным наборам параметров видео, активному набору параметров последовательности, активному набору параметров изображения и активному набору параметров адаптации для каждого конкретного типа параметров APS. Если присутствует какая-нибудь RBSP набора параметров видео, которая не активизирована в битовом потоке, то ее синтаксические элементы могут иметь значения, которые соответствовали бы точно определенным ограничениям, если бы активизировались с помощью ссылки в ином соответствующем битовом потоке. Если присутствует какая-нибудь RBSP набора параметров последовательности, которая не активизирована в битовом потоке, то ее синтаксические элементы могут иметь значения, которые соответствовали бы точно определенным ограничениям, если бы активизировались с помощью ссылки в ином соответствующем битовом потоке. Если присутствует какая-нибудь RBSP набора параметров изображения, которая никогда не активизирована в битовом потоке, то ее синтаксические элементы могут иметь значения, которые соответствовали бы точно определенным ограничениям, если бы активизировались с помощью ссылки в ином соответствующем битовом потоке. Если присутствует какая-нибудь RBSP набора параметров адаптации, которая никогда не активизирована в битовом потоке, то ее синтаксические элементы могут иметь значения, которые соответствовали бы точно определенным ограничениям, если бы активизировались с помощью ссылки в ином соответствующем битовом потоке.
[0267] В течение работы процесса декодирования могут считаться действующими значения параметров активного набора параметров видео, активного набора параметров последовательности, активного набора параметров изображения и активного набора параметров адаптации для каждого типа параметров APS. Для интерпретации сообщений SEI значения параметров из набора параметров видео, набора параметров последовательности, набора параметров изображения и набора параметров адаптации, которые активны для работы процесса декодирования для единиц NAL VCL кодированного изображения в одной и той же единице доступа, могут считаться действующими, пока точно не определено иное в семантике сообщения SEI.
[0268] Фиг. 7 - блок-схема последовательности операций, иллюстрирующая примерный способ для кодирования видеоданных в соответствии с методиками из данного раскрытия изобретения. Хотя описано по отношению к видеокодеру 20, следует понимать, что другие устройства кодирования видео могут конфигурироваться для выполнения способа из фиг. 7.
[0269] Сначала в этом примере видеокодер 20 принимает битовый поток, включающий в себя один или более уровней необработанных видеоданных (100). Например, источник 18 видео (фиг. 1) может предоставить видеокодеру 20 многовидовые видеоданные. В качестве альтернативы видеокодер 20 или его препроцессор может разделить битовый поток необработанного видео на множество различных уровней, например, уровней пространственного разрешения, уровней качества, временных уровней или т.п. В еще одних примерах битовый поток может разбиваться на сочетание различных уровней, например, любое сочетание видов, уровней пространственного разрешения, уровней качества, временных уровней или т.п.
[0270] Видеокодер 20 может определить один или более общих параметров для соответствующих последовательностей среди набора уровней (102). Соответствующие последовательности могут быть последовательностями, имеющими соответствующие положения во времени на разных уровнях. То есть про первую последовательность, имеющую время T1 начала (в показателях времени отображения) и время T2 окончания (опять в показателях времени отображения), и вторую последовательность, также имеющую время T1 начала и время T2 окончания, можно сказать, что они соответствуют друг другу. В частности, первая последовательность может образовывать часть первого уровня, а вторая последовательность может образовывать часть второго, другого уровня. "Последовательность" может включать в себя последовательность следующих друг за другом изображений в порядке декодирования, например, начиная с изображения мгновенного обновления декодирования (IDR) и заканчивая непосредственно перед последующим IDR-изображением в порядке декодирования. Вообще, параметры могут соответствовать набору соответствующих последовательностей одного или более уровней, например N уровней, где N - целое число. Видеокодер 20 затем может кодировать VPS, включающий в себя данные для определенных параметров (104). Например, видеокодер 20 может кодировать VPS, соответствующий одному из примеров из Таблицы 2 или Таблицы 5.
[0271] Видеокодер 20 также может определить общие параметры для последовательности в рамках одного уровня (106). Последовательность может содержать одну из последовательностей, соответствующих другим последовательностям на других уровнях, для которых кодировался VPS. Видеокодер 20 может кодировать набор параметров последовательности (SPS), включающий в себя общие параметры для последовательности (108). Таким образом, следует понимать, что VPS и SPS являются отдельными структурами данных и соответствуют разным типам видеоданных. Тогда как VPS может соответствовать набору соответствующих последовательностей среди множества уровней, SPS соответствует одной последовательности на одном уровне. SPS может большей частью соответствовать SPS из H.264/AVC, SPS из H.264/AVC, которое расширено с помощью MVC (проиллюстрировано в Таблице 1 выше), предстоящему стандарту HEVC или примеру из Таблицы 16, описанной выше. К тому же видеокодер 20 может кодировать набор параметров изображения (PPS) для некоторого изображения в последовательности (110). PPS может большей частью соответствовать SPS из H.264/AVC, предстоящему стандарту HEVC или примеру из Таблицы 13, описанной выше. Хотя способ из фиг. 7 показывает кодирование только одного PPS, следует понимать, могут кодироваться несколько PPS. Одно или более изображений могут ссылаться на один и тот же PPS.
[0272] Видеокодер 20 затем может определить, является ли последний уровень, для которого кодировались SPS и PPS, крайним уровнем (112). Если к крайнему уровню еще не обращались (переход "НЕТ" этапа 112), то видеокодер 20 может выбрать следующий уровень и кодировать SPS и один или более PPS для следующего уровня, например, в соответствии с этапами 106-110. После того, как обратились к крайнему уровню (переход "ДА" этапа 112), видеокодер 20 может кодировать видеоданные различных уровней на основе данных VPS, SPS и PPS. Различные примеры кодирования видеоданных основываясь по меньшей мере частично на VPS подробнее описываются ниже по отношению к фиг. 9-12.
[0273] Хотя и не показано в примере из фиг. 7, в некоторых примерах видеокодер 20 дополнительно может кодировать один или более LPS и/или один или более GPS, как описано выше. LPS могут большей частью соответствовать примерам из Таблицы 9, Таблицы 10 или Таблицы 12, тогда как GPS могут большей частью соответствовать примерам из Таблицы 14, Таблицы 15 или Таблицы 17. В таких примерах видеокодер 20 кодирует видеоданные также, по меньшей мере частично, на основе LPS и/или GPS.
[0274] Таким образом, способ из фиг. 7 представляет пример способа, включающего в себя кодирование набора параметров видео (VPS) для одного или более уровней видеоданных, при этом каждый из одного или более уровней видеоданных ссылается на VPS, и кодирование одного или более уровней видеоданных основываясь по меньшей мере частично на VPS.
[0275] Фиг. 8 - блок-схема последовательности операций, иллюстрирующая примерный способ для декодирования видеоданных в соответствии с методиками из данного раскрытия изобретения. Хотя описано по отношению к видеодекодеру 30, следует понимать, что другие устройства декодирования видео могут конфигурироваться для выполнения способа из фиг. 8.
[0276] Сначала видеодекодер 30 принимает битовый поток, включающий VPS, один или более SPS и один или более PPS для уровней кодированных видеоданных (120). Видеодекодер 30 затем может декодировать VPS, который включает в себя общие параметры для соответствующих последовательностей среди одного или более уровней (122). Также видеодекодер 30 может декодировать набор параметров последовательности, включающий в себя общие параметры для некой последовательности одного уровня (124). Кроме того, видеодекодер 30 может декодировать набор параметров изображения, включающий в себя параметры для некоторого изображения в последовательности (126). Как обсуждалось выше, одно или более изображений могут ссылаться на один и тот же PPS, и поэтому параметры в PPS могут считаться общими для одного или более изображений. Также видеодекодер 30 может декодировать множество PPS для последовательности, хотя это не показано на фиг. 8.
[0277] Кроме того, видеодекодер 30 может определить, был ли последний уровень крайним уровнем, к которому обращались (128). Если самый последний уровень не был крайним уровнем (переход "НЕТ" этапа 128), то видеодекодер 30 может перейти к декодированию SPS и одного или более PPS для последующего уровня в соответствии с этапами 124 и 126. С другой стороны, если самый последний уровень был крайним уровнем (переход "ДА" этапа 128), то видеодекодер 30 может перейти к декодированию видеоданных уровней на основе VPS, SPS и PPS (130). Примеры кодирования видеоданных основываясь по меньшей мере частично на VPS обсуждаются подробнее по отношению к фиг. 9-12.
[0278] Хотя и не показано в примере из фиг. 8, в некоторых примерах видеодекодер 30 дополнительно может декодировать один или более LPS и/или один или более GPS, как описано выше. LPS могут большей частью соответствовать примерам из Таблицы 9, Таблицы 10 или Таблицы 12, тогда как GPS могут большей частью соответствовать примерам из Таблицы 14, Таблицы 15 или Таблицы 17. В таких примерах видеодекодер 30 декодирует видеоданные также, по меньшей мере частично, на основе LPS и/или GPS.
[0279] Таким образом, способ из фиг. 8 представляет пример способа, включающего в себя кодирование набора параметров видео (VPS) для одного или более уровней видеоданных, при этом каждый из одного или более уровней видеоданных ссылается на VPS, и кодирование одного или более уровней видеоданных основываясь по меньшей мере частично на VPS.
[0280] Фиг. 9 - блок-схема последовательности операций, иллюстрирующая примерный способ кодирования видеоданных основываясь по меньшей мере частично на числе временных уровней, которые сигнализированы в VPS. Способ из фиг. 9 может выполняться видеокодером 20 и/или видеодекодером 30. Для примера способ из фиг. 9 описывается по отношению к видеодекодеру 30.
[0281] В этом примере видеодекодер 30 кодирует (то есть декодирует) VPS, указывающий число временных уровней в видеоданных (150), например, один или более уровней, которым соответствует VPS. Например, видеодекодер 30 может декодировать "cnt_t", которое описано выше по отношению к Таблице 2. В качестве другого примера видеодекодер 30 может декодировать num_temporal_layers_minus1, которое описано выше по отношению к Таблице 5.
[0282] На основе этого указания в этом примере видеодекодер 30 декодирует временные идентификаторы для каждого из временных уровней (152). Также видеодекодер 30 может определить значения идентификаторов опорных изображений на основе числа временных уровней (154). Например, видеодекодер 30 может конфигурироваться для определения, что для текущего изображения на уровне N текущее изображение не будет использовать для ссылки изображения на уровне N+1 или выше. Поэтому видеодекодер 30 может определить идентификаторы для возможных опорных изображений на уровнях уровня N или ниже. Кроме того, видеодекодер 30 может декодировать данные изображений на временном уровне N, используя опорные данные уровней вплоть до (и включая) уровня N (156). Таким образом, фиг. 9 представляет пример способа, включающего в себя кодирование данных VPS, указывающих максимальное число временных уровней на одном или более уровнях видеоданных, и кодирование одного или более уровней основываясь по меньшей мере частично на VPS.
[0283] Фиг. 10 - блок-схема последовательности операций, иллюстрирующая примерный способ кодирования видеоданных основываясь по меньшей мере частично на числе изображений, которые должны быть переупорядочены на одном или более уровнях, и изображений, которые должны быть сохранены в буфер декодированных изображений. Способ из фиг. 10 может выполняться видеокодером 20 и/или видеодекодером 30. Для примера способ из фиг. 10 описывается по отношению к видеодекодеру 30.
[0284] В этом примере видеодекодер 30 декодирует VPS, указывающий число изображений, которые должны быть переупорядочены на одном или более уровнях видеоданных, и число изображений, которые должны быть сохранены в буфер декодированных изображений (например, запоминающее устройство 82 опорных изображений) в заданный момент времени (160). Например, видеодекодер 30 может декодировать синтаксический элемент в VPS, практически соответствующий num_reorder_pics, которое описано выше по отношению к Таблице 16, и/или информации об ограничении битового потока, которая точно определяет размер DPB. В других примерах VPS мог бы включать в себя только одно из двух, и не обязательно оба, из числа изображений, которые должны быть переупорядочены, и числа изображений, которые должны быть сохранены в буфер декодированных изображений. Видеодекодер 30 затем может управлять буфером декодированных изображений (например, запоминающим устройством 82 опорных изображений) на основе числа изображений, которые должны быть переупорядочены и/или сохранены (162). Например, видеодекодер 30 может удалять изображения из запоминающего устройства 82 опорных изображений, когда в запоминающем устройстве 82 опорных изображений сохраняется больше числа изображений, которые должны быть сохранены.
[0285] Видеодекодер 30 также может определить значения идентификаторов опорных изображений на основе числа изображений в DPB (то есть в запоминающем устройстве 82 опорных изображений) (164). Кроме того, видеодекодер 30 может декодировать данные изображений на основе значений идентификаторов опорных изображений (166). Таким образом, способ из фиг. 10 представляет пример способа, включающего в себя кодирование данных VPS, указывающих число изображений, которые должны быть сохранены в буфер декодированных изображений (DPB) во время декодирования одного или более уровней, и способа, включающего в себя кодирование данных VPS, указывающих число кадров, которые должны быть переупорядочены на по меньшей мере одном из одного или более уровней.
[0286] Фиг. 11 - блок-схема последовательности операций, иллюстрирующая примерный способ кодирования видеоданных основываясь по меньшей мере частично на параметрах гипотетического эталонного декодера (HRD), сигнализированных в VPS. Способ из фиг. 11 может выполняться видеокодером 20 и/или видеодекодером 30. Для примера способ из фиг. 11 описывается по отношению к видеодекодеру 30.
[0287] В этом примере видеодекодер 30 декодирует VPS, указывающий параметры HRD (170). Видеодекодер 30 дополнительно может определить моменты удаления для изображений из буфера кодированных изображений (CPB) на основе параметров HRD (172). Видеодекодер 30 затем может удалить данные из CPB на основе определенных моментов удаления (174) и декодировать данные, удаленные из CPB. Соответственно, способ из фиг. 11 представляет пример способа, включающего в себя кодирование данных VPS, указывающих один или более параметров гипотетического эталонного декодера (HRD), и кодирование данных одного или более уровней на основе параметров HDR.
[0288] Фиг. 12 - блок-схема последовательности операций, иллюстрирующая примерный способ кодирования видеоданных основываясь по меньшей мере частично на данных расширения, сигнализированных в VPS. Способ из фиг. 12 может выполняться видеокодером 20 и/или видеодекодером 30. Для примера способ из фиг. 12 описывается по отношению к видеодекодеру 30.
[0289] Видеодекодер 30 в этом примере декодирует данные VPS, указывающие, включает ли VPS данные расширения (180). Например, видеодекодер 30 может декодировать vps_extension_flag в VPS. Видеодекодер 30 затем определяет, указывают ли данные, что VPS включает в себя данные расширения (182). Если данные указывают, что VPS включает в себя данные расширения (переход "ДА" этапа 182), то видеодекодер 30 кодирует данные расширения VPS для одного или более инструментов кодирования расширения (184) и декодирует видеоданные, используя инструменты кодирования расширения и данные расширения (186). С другой стороны, если данные указывают, что VPS не включает в себя данные расширения (переход "НЕТ" этапа 182), то видеодекодер 30 может декодировать видеоданные, используя традиционные инструменты кодирования (188). Таким образом, способ из фиг. 12 представляет пример способа, включающего в себя кодирование данных VPS, указывающих, включает ли VPS расширение сверх соответствующего стандарта, и когда VPS включает в себя это расширение - данных для этого расширения, а также кодирование видеоданных на основе данных расширения VPS.
[0290] Нужно признать, что в зависимости от примера некоторые действия или события в любой из методик, описанных в этом документе, могут выполняться в иной последовательности, могут добавляться, объединяться или полностью пропускаться (например, не все описанные действия или события необходимы для применения методик на практике). Кроме того, в некоторых примерах действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или более процессоров, а не последовательно.
[0291] В одном или более примерах описываемые функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любом их сочетании. Если они реализованы в программном обеспечении, то функции могут храниться или передаваться в виде одной или более инструкций либо кода на считываемом компьютером носителе и исполняться аппаратным модулем обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители информации, которые соответствуют материальному носителю, такому как носители информации, или средства связи, включающие в себя любой носитель, который облегчает перенос компьютерной программы из одного места в другое, например, в соответствии с неким протоколом связи. Таким образом, считываемые компьютером носители в целом могут соответствовать (1) материальным считываемым компьютерам носителям информации, которые не изменяются со временем, или (2) средству связи, такому как сигнал или несущая. Носители информации могут быть любыми доступными носителями, к которым можно обращаться с помощью одного или более компьютеров либо одного или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в данном раскрытии изобретения. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0292] В качестве примера, а не ограничения, такие считываемые компьютером носители информации могут быть выполнены в виде RAM, ROM, EEPROM, компакт-диска или другого накопителя на оптических дисках, накопителя на магнитных дисках или других магнитных запоминающих устройств, флэш-память либо любого другого носителя, который может использоваться для хранения нужного программного кода в виде инструкций или структур данных, и к которому [носителю] можно обращаться с помощью компьютера. Также любое соединение корректно называть считываемым компьютером носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, например ИК-связи, радиочастотной связи и СВЧ-связи, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, например ИК-связь, радиочастотная связь и СВЧ-связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители информации и носители информации не включают в себя соединения, несущие, сигналы или другие кратковременные носители, а вместо этого ориентированы на долговременные, материальные носители информации. Диски при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным способом, тогда как диски (discs) воспроизводят данные оптически с помощью лазеров. Сочетания вышеперечисленного также следует включить в область считываемых компьютером носителей.
[0293] Инструкции могут исполняться одним или более процессорами, например одним или более цифровыми процессорами сигналов (DSP), универсальными микропроцессорами, специализированными интегральными схемами (ASIC), программируемыми пользователем логическими матрицами (FPGA) или другими эквивалентными интегральными либо дискретными логическими схемами. Соответственно, термин "процессор" при использовании в данном документе может относиться к любой вышеупомянутой структуре или к любой другой структуре, подходящей для реализации описанных в этом документе методик. К тому же в некоторых особенностях функциональные возможности, описанные в этом документе, могут быть предоставлены в специализированных аппаратных и/или программных модулях, сконфигурированных для кодирования и декодирования, или встроены в объединенный кодек. Также методики можно было бы полностью реализовать в одной или более схемах или логических элементах.
[0294] В еще одних примерах данное раскрытие изобретения предполагает считываемый компьютером носитель, содержащий сохраненную на нем структуру данных, где структура данных включает в себя кодированный битовый поток в соответствии с данным раскрытием изобретения. В частности, кодированный битовый поток может включать в себя один или более уровней видеоданных и параметр видео (VPS) для одного или более уровней видеоданных, при этом каждый из одного или более уровней видеоданных ссылается на VPS, и один или более уровней видеоданных кодируются основываясь по меньшей мере частично на VPS.
[0295] Методики из данного раскрытия изобретения могут быть реализованы в широком спектре устройств, включая беспроводную телефонную трубку, интегральную схему (ИС) или набор ИС (например, набор микросхем). Различные компоненты, модули или блоки описываются в данном раскрытии изобретения для подчеркивания функциональных особенностей устройств, сконфигурированных для выполнения раскрытых методик, но не обязательно требуют реализации с помощью разных аппаратных модулей. Точнее, как описано выше, различные модули могут объединяться в аппаратный модуль кодека или предоставляться совокупностью взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или микропрограммным обеспечением.
[0296] Описаны различные примеры. Эти и другие примеры входят в объем нижеследующей формулы изобретения.