СИГНАЛИЗАЦИЯ ИДЕНТИФИКАТОРОВ УРОВНЕЙ ДЛЯ РАБОЧИХ ТОЧЕК ПРИ КОДИРОВАНИИ ВИДЕО
SIGNALIZATION OF LEVEL IDENTIFIERS FOR OPERATING POINTS WHEN ENCODING VIDEO

[0001] Данная заявка испрашивает приоритет по предварительной заявке США №61/707,486, поданной 28 сентября 2012 г., и предварительной заявке США №61/708,404, поданной 1 октября 2012 г., все содержание которых включается в этот документ путем ссылки.
ОБЛАСТЬ ТЕХНИКИ
[0002] Данное раскрытие изобретения в целом относится к обработке видеоданных, а конкретнее, к обработке рабочих точек, используемых в видеоданных.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут встраиваться в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового прямого вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), переносные или настольные компьютеры, планшетные компьютеры, электронные книги, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные проигрыватели, видеоигровые устройства, игровые приставки, сотовые или спутниковые радиотелефоны, так называемые "смартфоны", устройства для видеоконференцсвязи, устройства для потокового видео и т.п. Цифровые видеоустройства реализуют методики кодирования видео, например описанные в стандартах, заданных MPEG-2, MPEG-4, H.263 ITU-T, H.264/MPEG-4 ITU-T, часть 10, Улучшенное кодирование видео (AVC), стандартом Высокоэффективного кодирования видео (HEVC), в настоящее время находящимся в разработке, и расширениях таких стандартов. Видеоустройства могут эффективнее передавать, принимать, кодировать, декодировать и/или хранить цифровую видеоинформацию с помощью реализации таких методик кодирования видео.
[0004] Методики кодирования видео включают в себя пространственное (внутреннее, intra-picture) предсказание и/или временное (внешнее, inter-picture) предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям. Для блочного кодирования видео можно разбить слайс (slice) видео (например, видеокадр или часть видеокадра) на видеоблоки, которые также могут называться блоками дерева, единицами кодирования (CU) и/или узлами кодирования. Видеоблоки в слайсе с внутренним кодированием (intra-coded, I) изображения кодируются с использованием пространственного предсказания относительно эталонных выборок в соседних блоках в том же изображении. Видеоблоки в слайсе с внешним кодированием (inter-coded, P или B) изображения могут использовать пространственное предсказание относительно эталонных выборок в соседних блоках в том же изображении или временное предсказание относительно эталонных выборок в других эталонных изображениях. Изображения могут называться кадрами, а эталонные изображения могут называться эталонными кадрами.
[0005] Пространственное или временное предсказание дает в результате блок с предсказанием для блока, который подлежит кодированию. Остаточные данные представляют собой разности пикселей между исходным блоком, который подлежит кодированию, и блоком с предсказанием. Блок с внешним кодированием кодируется в соответствии с вектором движения, который указывает на блок эталонных выборок, образующих блок с предсказанием, и остаточными данными, указывающими разность между кодированным блоком и блоком с предсказанием. Блок с внутренним кодированием кодируется в соответствии с режимом внутреннего кодирования и остаточными данными. Для дополнительного сжатия остаточные данные могут быть преобразованы из области пикселей в область преобразования, что дает в результате остаточные коэффициенты преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, организованные первоначально в двумерный массив, можно сканировать для создания одномерного вектора коэффициентов преобразования, и может применяться энтропийное кодирование для достижения еще большего сжатия.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0006] В целом, данное раскрытие изобретения описывает методики для сигнализации идентификаторов уровней для рабочих точек при кодировании видео. Данные методики обеспечивают повышенную эффективность сигнализации информации, ассоциированной с рабочими точками, путем запрета кодирования дублирующего содержимого по меньшей мере для одного из рабочих точек или информации о параметрах гипотетического эталонного декодера (HRD), связанной с рабочими точками, в наборе параметров видео (VPS) в рамках надлежащего потока битов. В соответствии с методиками надлежащий поток битов может не включать в себя синтаксические элементы в VPS, которые дублируют набор идентификаторов уровней, ассоциированный с первой рабочей точкой, в качестве содержимого для второй рабочей точки. Кроме того, в соответствии с данными методиками надлежащий поток битов может не включать в себя синтаксические элементы в VPS, которые дублируют набор параметров HRD, ассоциированный с информацией о параметрах HRD для первой рабочей точки, в качестве содержимого для второй рабочей точки. Таким образом, набор идентификаторов уровней и набор параметров HRD являются уникальными для первой рабочей точки в VPS.
[0007] В одном примере методики, описанные в данном раскрытии изобретения, относятся к способу для декодирования видеоданных. Способ включает в себя декодирование синтаксических элементов в наборе параметров видео (VPS) в рамках надлежащего потока битов, указывающих первую рабочую точку, имеющую первый набор содержимого. Способ дополнительно включает в себя декодирование, при наличии, синтаксических элементов в VPS в рамках надлежащего потока битов, указывающих информацию о параметрах гипотетического эталонного декодера (HRD), имеющую второй набор содержимого для первой рабочей точки, причем надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки, и причем декодирование синтаксических элементов содержит декодирование синтаксических элементов, указывающих первую рабочую точку и информацию о параметрах HRD только в рамках надлежащих потоков битов.
[0008] В другом примере методики, описанные в данном раскрытии изобретения, относятся к способу для кодирования видеоданных. Способ включает в себя кодирование синтаксических элементов в VPS в рамках надлежащего потока битов, указывающих первую рабочую точку, имеющую первый набор содержимого. Способ дополнительно включает в себя кодирование синтаксических элементов в VPS в рамках надлежащего потока битов, указывающих информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки, причем надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки, и причем кодирование синтаксических элементов содержит кодирование синтаксических элементов, указывающих первую рабочую точку и информацию о параметрах HRD только из надлежащих потоков битов.
[0009] В другом примере методики, описанные в данном раскрытии изобретения, относятся к устройству кодирования видео. Устройство кодирования видео сконфигурировано с возможностью кодирования синтаксических элементов в VPS в рамках надлежащего потока битов, указывающих первую рабочую точку, имеющую первый набор содержимого. Устройство кодирования видео дополнительно сконфигурировано с возможностью кодирования, при наличии, синтаксических элементов в VPS в рамках надлежащего потока битов, указывающих информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки, причем надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки, и причем видеокодер сконфигурировано с возможностью кодирования синтаксических элементов, указывающих первую рабочую точку и информацию о параметрах HRD только в рамках надлежащих потоков битов.
[0010] В еще одном примере методики, описанные в этом документе, относятся к компьютерно-читаемому запоминающему носителю. Компьютерно-читаемый запоминающий носитель содержит сохраненные на нем команды, которые при исполнении предписывают процессору в устройстве для кодирования видеоданных кодировать синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие первую рабочую точку, имеющую первый набор содержимого. Команды при исполнении дополнительно предписывают процессору кодировать, при наличии, синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки, причем надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки, и причем процессор сконфигурирован с возможностью кодирования синтаксических элементов, указывающих первую рабочую точку и информацию о параметрах HRD только в рамках надлежащих потоков битов.
[0011] Методики, описанные в этом документе, также включают в себя пример устройства кодирования видео, которое включает в себя средство для кодирования синтаксических элементов в VPS в рамках надлежащего потока битов, указывающих первую рабочую точку, имеющую первый набор содержимого. Устройство кодирования видео дополнительно включает в себя средство для кодирования, при наличии, синтаксических элементов в VPS в рамках надлежащего потока битов, указывающих информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки, причем надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки, и причем устройство кодирования видео сконфигурировано с возможностью кодирования синтаксических элементов, указывающих первую рабочую точку и информацию о параметрах HRD только в рамках надлежащих потоков битов.
[0012] Подробности одного или более примеров излагаются на прилагаемых чертежах и в описании ниже. Другие признаки, цели и преимущества станут ясны из описания, чертежей и из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0013] Фиг. 1 - блок-схема, иллюстрирующая примерную систему кодирования и декодирования видео, которая может использовать методики, описанные в данном раскрытии изобретения.
[0014] Фиг. 2 - блок-схема, иллюстрирующая примерный видеокодер, который может реализовать методики, описанные в данном раскрытии изобретения.
[0015] Фиг. 3 - блок-схема, иллюстрирующая примерный видеодекодер, который может реализовать методики, описанные в данном раскрытии изобретения.
[0016] Фиг. 4 - блок-схема, иллюстрирующая примерный набор устройств, которые образуют часть сети.
[0017] Фиг. 5 - блок-схема алгоритма, иллюстрирующая примерный способ для декодирования рабочих точек, используемых в видеоданных, в соответствии с методиками, описанными в данном раскрытии изобретения.
[0018] Фиг. 6 - блок-схема алгоритма, иллюстрирующая примерный способ для кодирования рабочих точек, используемых в видеоданных, в соответствии с методиками, описанными в данном раскрытии изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[0019] В целом, данное раскрытие изобретения описывает методики для сигнализации идентификаторов уровней для рабочих точек при кодировании видео. Рабочие точки относятся к субпотокам битов, которые могут извлекаться из исходного потока битов, который является масштабируемым во времени и/или имеет несколько уровней либо видов. Субпотоки битов могут извлекаться из потока битов на основе значений идентификаторов уровней и идентификаторов временных подуровней, которые идентифицируют рабочую точку потока битов. Рабочие точки сигнализируются в наборе параметров видео (VPS) в рамках потока битов. Для каждой из рабочих точек структура синтаксиса рабочих точек задает набор идентификаторов уровней, используемый для идентификации единиц уровня абстракции сети (NAL) в потоке битов, которые принадлежат субпотоку битов заданной рабочей точки. Таким образом, единицы NAL, которые составляют субпоток битов заданной рабочей точки, можно извлечь из исходного потока битов на основе идентификаторов уровней у единиц NAL.
[0020] В некоторых случаях могут присутствовать параметры гипотетического эталонного декодера (HRD), которые относятся к одной или более рабочим точкам. В этом случае информация о параметрах HRD сигнализируется в VPS. Для каждой из одной или более рабочих точек, которые имеют параметры HRD, синтаксическая структура параметров HRD задает набор параметров HRD, который задает HRD, используемый для проверки, является ли надлежащим субпоток битов у заданной рабочей точки.
[0021] Методики, описанные в данном раскрытии изобретения, включают в себя запрет дублирующего содержимого по меньшей мере для одного из рабочих точек или информации о параметрах HRD, ассоциированной с рабочими точками, в VPS в рамках надлежащего потока битов. Надлежащий поток битов может включать в себя синтаксические элементы в VPS, которые указывают первую рабочую точку, имеющую первый набор содержимого, который может включать в себя набор идентификаторов уровней для первой рабочей точки. Надлежащий поток битов также может включать в себя синтаксические элементы в VPS, которые указывают информацию о параметрах HRD, имеющую второй набор содержимого, который может включать в себя набор параметров HRD для первой рабочей точки. Надлежащий поток битов может не включать в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки.
[0022] В соответствии с методиками видеокодер сконфигурирован с возможностью кодирования только надлежащих потоков битов, и видеодекодер сконфигурирован с возможностью декодирования только надлежащих потоков битов. В одном примере в надлежащем потоке битов запрещены дублирующие наборы идентификаторов уровней для разных рабочих точек, сигнализированных в одном VPS. В другом примере в надлежащем потоке битов запрещены дублирующие наборы параметров HRD в информации о параметрах HRD для разных рабочих точек, сигнализированных в одном VPS. Таким образом, заданный набор идентификаторов уровней и заданный набор параметров HRD являются уникальными для первой рабочей точки в VPS. В качестве другого примера методики включают в себя кодирование параметров HRD для потока битов, причем каждая копия синтаксической структуры параметров HRD включает в себя разное содержимое.
[0023] Методики из данного раскрытия изобретения повышают эффективность сигнализации идентификаторов уровней для рабочих точек в надлежащем потоке битов. Например, методики могут повысить эффективность посредством кодирования только уникальных наборов содержимого для рабочих точек и для информации о параметрах HRD, ассоциированной с рабочими точками, в одном VPS в рамках надлежащего потока битов и запрета кодирования дублирующего содержимого для разных рабочих точек в одном VPS.
[0024] Стандарты кодирования видео включают в себя 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). Стандарты кодирования видео дополнительно включают в себя расширения H.264 ITU-T по Масштабируемому кодированию видео (SVC) и Многовидовому кодированию видео (MVC).
[0025] Кроме того, имеется новый стандарт кодирования видео, а именно Высокоэффективное кодирование видео (HEVC), разрабатываемый Объединенной командой по кодированию видео (JCT-VC) из Экспертной группы в области кодирования видео (VCEG) ITU-T и Экспертной группы по движущимся изображениям (MPEG) ISO/IEC. Последним рабочим вариантом (WD) HEVC является рабочий вариант 8, и в дальнейшем он называется WD8 HEVC под авторством Бросс (Bross) и др., "High Efficiency Video Coding (HEVC) Text Specification Draft 8", июль 2012, Стокгольм, доступный по состоянию на 14 мая 2013 г. по адресу http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip.
Хотя методики, описанные в данном раскрытии изобретения, описываются по отношению к стандарту HEVC, аспекты данного раскрытия изобретения не настолько ограничены, и их можно распространить на другие стандарты кодирования видео, а также на частные методики кодирования видео.
[0026] Фиг. 1 - блок-схема, иллюстрирующая примерную систему 10 кодирования и декодирования видео, которая может использовать методики, описанные в данном раскрытии изобретения. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое формирует кодированные видеоданные, которые позднее должны быть декодированы устройством-адресатом 14. Устройство-источник 12 и устройство-адресат 14 могут быть выполнены в виде любого из широкого диапазона устройств, включающего в себя настольные компьютеры, ноутбуки (например, переносные компьютеры), планшетные компьютеры, телевизионные приставки, телефонные трубки, например так называемые "интеллектуальные" телефоны, так называемые "интеллектуальные" планшеты, телевизоры, камеры, устройства отображения, цифровые мультимедийные проигрыватели, игровые приставки, устройство для потокового видео или т.п. В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут быть оборудованы для беспроводной связи.
[0027] В примере из фиг. 1 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20 и интерфейс 22 вывода. Устройство-адресат 14 включает в себя интерфейс 28 ввода, видеодекодер 30 и устройство 32 отображения. В других примерах устройство-источник 12 и устройство-адресат 14 могут включать в себя другие компоненты или компоновки. Например, устройство-источник 12 может принимать видеоданные из внешнего источника 18 видео, например внешней камеры. Также устройство-адресат 14 может взаимодействовать с внешним устройством отображения вместо включения в себя встроенного устройства отображения.
[0028] Проиллюстрированная система 10 из фиг. 1 является всего лишь одним примером. Методики из данного раскрытия изобретения могут выполняться любым устройством кодирования и/или декодирования цифрового видео. Хотя методики выполняются, как правило, устройством кодирования видео или устройством декодирования видео, методики также могут выполняться видеокодером/декодером, обычно называемым "кодеком". Кроме того, методики из данного раскрытия изобретения также могут выполняться препроцессором видео. Устройство-источник 12 и устройство-адресат 14 являются всего лишь примерами таких устройств кодирования, в которых устройство-источник 12 формирует кодированные видеоданные для передачи устройству-адресату 14. В некоторых примерах устройства 12, 14 могут работать практически симметричным образом, так что каждое из устройств 12, 14 включает в себя компоненты кодирования и декодирования видео. Поэтому система 10 может поддерживать однонаправленную или двунаправленную передачу видео между видеоустройствами 12, 14, например, для потоковой передачи видео, воспроизведения видео, телевизионного вещания или видеотелефонии.
[0029] Источник 18 видео в устройстве-источнике 12 может включать в себя устройство видеозахвата, например видеокамеру, видеоархив, содержащий ранее захваченное видео, и/или интерфейс источника видеосигнала для приема видео от поставщика видеоконтента. В качестве дополнительной альтернативы источник 18 видео может формировать данные на основе компьютерной графики в качестве исходного видео, или сочетание видео в режиме реального времени, архивного видео и сформированного компьютером видео. В некоторых случаях, если источником 18 видео является видеокамера, то устройство-источник 12 и устройство-адресат 14 могут образовывать так называемые камерофоны или видеотелефоны. Однако, как упоминалось выше, описанные в данном раскрытии изобретения методики могут быть применимы к кодированию видео в целом и могут применяться к беспроводным и/или проводным приложениям.
[0030] В каждом случае захваченное, предварительно захваченное или сформированное компьютером видео может кодироваться видеокодером 20. Кодированные видеоданные могут передаваться напрямую устройству-адресату 14 через интерфейс 22 вывода устройства-источника 12. Кодированные видеоданные также (или в качестве альтернативы) могут сохраняться в запоминающем устройстве для последующего обращения устройства-адресата 14 или других устройств, для декодирования и/или воспроизведения.
[0031] Линия 16 связи может включать в себя кратковременные носители, например беспроводную широковещательную или проводную сетевую передачу, или запоминающие носители (то есть долговременные запоминающие носители), например жесткий диск, флеш-накопитель, компакт-диск, цифровой видеодиск, диск Blu-ray или другие компьютерно-читаемые носители. В некоторых примерах сетевой сервер может принимать кодированные видеоданные от устройства-источника 12 и предоставлять кодированные видеоданные устройству-адресату 14, например, посредством сетевой передачи. Аналогичным образом вычислительное устройство из оборудования по производству носителей, например оборудования по штамповке оптических дисков, может принять кодированные видеоданные от устройства-источника 12 и произвести диск, содержащий кодированные видеоданные. Поэтому в различных примерах линия 16 связи может подразумеваться включающей в себя один или более компьютерно-читаемых носителей различных видов. Линия 16 связи может быть выполнена в виде любого типа носителя или устройства, допускающего перемещение кодированных видеоданных от устройства-источника 12 к устройству-адресату 14. В одном примере линия 16 связи может быть выполнена в виде средства связи, чтобы дать устройству-источнику 12 возможность передавать кодированные видеоданные непосредственно к устройству-адресату 14 в реальном масштабе времени. Кодированные видеоданные могут модулироваться в соответствии со стандартом связи, например протоколом беспроводной связи, и передаваться устройству-адресату 14. Средство связи может быть выполнено в виде любого средства беспроводной или проводной связи, например радиочастотного (RF) спектра или одной или более физических линий передачи. Средство связи может образовывать часть пакетной сети, например локальной сети, региональной сети или глобальной сети, такой как Интернет. Средство связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для упрощения связи от устройства-источника 12 к устройству-адресату 14.
[0032] Интерфейс 28 ввода в устройстве-адресате 14 принимает информацию из линии 16 связи, которая может быть компьютерно-читаемым носителем. Информация из линии 16 связи может включать в себя синтаксическую информацию, заданную видеокодером 20, которая также используется видеодекодером 30, которая включает в себя синтаксические элементы, которые описывают характеристики и/или обработку блоков и других кодированных единиц, например GOP. Устройство 32 отображения может объединяться с устройством-адресатом 14 или быть внешним по отношению к нему. Устройство 32 отображения отображает пользователю декодированные видеоданные и может быть выполнено в виде любого из ряда устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.
[0033] В качестве альтернативы кодированные данные могут выводиться из интерфейса 22 вывода в запоминающее устройство 34. Аналогичным образом к кодированным данным можно обращаться из запоминающего устройства 34 с помощью интерфейса ввода. Запоминающее устройство 34 может включать в себя любой из ряда распределенных или локально доступных запоминающих носителей, например жесткий диск, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимое или энергонезависимое запоминающее устройство либо любые другие подходящие цифровые запоминающие носители для хранения кодированных видеоданных. В дополнительном примере запоминающее устройство 34 может соответствовать файловому серверу или другому промежуточному запоминающему устройству, которое может хранить кодированное видео, сформированное устройством-источником 12. Устройство-адресат 14 может обращаться к сохраненным видеоданным из запоминающего устройства 34 посредством потоковой передачи или загрузки. Файловый сервер может быть любым типом сервера, допускающим хранение кодированных видеоданных и передачу тех кодированных видеоданных устройству-адресату 14. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), FTP-сервер, сетевые устройства хранения (NAS) или локальный накопитель на дисках. Устройство-адресат 14 может обращаться к кодированным видеоданным посредством любого стандартного информационного соединения, включая Интернет-соединение. Это соединение может включать в себя радиоканал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.п.) или сочетание их обоих, которое подходит для обращения к кодированным видеоданным, сохраненным на файловом сервере. Передача кодированных видеоданных из запоминающего устройства 34 может быть потоковой передачей, загрузкой или их сочетанием.
[0034] Методики из данного раскрытия изобретения не обязательно ограничиваются беспроводными приложениями или настройками. Методики могут применяться к кодированию видео в поддержку любого из ряда мультимедийных приложений, таких как эфирные телевизионные передачи, кабельные телевизионные передачи, спутниковые телевизионные передачи, передачи потокового видео, например по Интернету, кодирование цифрового видео для сохранения на запоминающий носитель, декодирование цифрового видео, сохраненного на запоминающем носителе, или других приложений. В некоторых примерах система 10 может быть сконфигурирована с возможностью поддержки однонаправленной или двунаправленной передачи видео для поддержки таких приложений, как потоковая передача видео, воспроизведение видео, телевизионное вещание и/или видеотелефония.
[0035] Видеокодер 20 и видеодекодер 30 могут работать в соответствии с каким-либо стандартом кодирования видео, например стандартом HEVC, в настоящее время находящимся в разработке, и могут соответствовать Тестовой модели HEVC (HM). В качестве альтернативы видеокодер 20 и видеодекодер 30 могут работать в соответствии с другими собственными или промышленными стандартами, например стандартом H.264 ITU-T, в качестве альтернативы называемым MPEG-4, часть 10, Улучшенное кодирование видео (AVC), или расширениями таких стандартов. Однако методики в данном раскрытии изобретения не ограничиваются никаким конкретным стандартом кодирования. Другие примеры стандартов кодирования видео включают в себя MPEG-2 и H.263 ITU-T. В некоторых аспектах видеокодер 20 и видеодекодер 30 могут быть объединены со звуковым кодером и декодером и могут включать в себя подходящие модули мультиплексирования-демультиплексирования или другие аппаратные средства и программное обеспечение, чтобы справляться с кодированием звука и видео в общем потоке данных или в отдельных потоках данных. Если применимо, то модули мультиплексирования-демультиплексирования могут соответствовать протоколу мультиплексора H.223 ITU или другим протоколам, например протоколу дейтаграмм пользователя (UDP).
[0036] Стандарт 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.
[0037] Видеокодер 20 и видеодекодер 30 могут быть реализованы в виде любой из ряда подходящих схем кодера или декодера, например, одного или более микропроцессоров, цифровых процессоров сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретных логических схем, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их сочетаний. Когда методики реализуются частично в программном обеспечении, устройство может хранить команды для программного обеспечения на подходящем долговременном компьютерно-читаемом носителе и исполнять команды на аппаратных средствах, использующих один или более процессоров, для выполнения методик из данного раскрытия изобретения. Каждый из видеокодера 20 и видеодекодера 30 может включаться в один или более кодеров или декодеров, любой из которых может встраиваться как часть объединенного кодера/декодера (кодека) в соответствующем устройстве. Устройство, включающее в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, например сотовый телефон.
[0038] JCT-VC работает над развитием стандарта HEVC. Работа по стандартизации HEVC основывается на развивающейся модели устройства кодирования видео, называемой Тестовой моделью HEVC (HM). HM предполагает несколько дополнительных возможностей у устройств кодирования видео по сравнению с существующими устройствами, соответствующими, например, H.264/AVC ITU-T. Например, тогда как H.264 предоставляет девять режимов кодирования с внутренним предсказанием, HM может предоставить целых тридцать три режима кодирования с внутренним предсказанием.
[0039] Вообще, рабочая модель HM описывает, что видеокадр или изображение можно разделить на последовательность блоков дерева или наибольших единиц кодирования (LCU), которые включают в себя выборки яркости и цветности. Синтаксические данные в потоке битов могут задавать размер для LCU, которая является наибольшей единицей кодирования в показателях количества пикселей. Слайс включает в себя некоторое количество последовательных блоков дерева в порядке кодирования. Видеокадр или изображение может разбиваться на один или более слайсов. Каждый блок дерева можно разделить на единицы кодирования (CU) в соответствии с квадродеревом. Обычно структура данных квадродерева включает в себя один узел на CU, причем корневой узел соответствует блоку дерева. Если CU разделяется на четыре суб-CU, то узел, соответствующий CU, включает в себя четыре листа, каждый из которых соответствует одной из суб-CU.
[0040] Каждый узел в структуре данных квадродерева может предоставлять синтаксические данные для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывающий, разделяется ли соответствующая узлу CU на суб-CU. Синтаксические элементы для CU можно задать рекурсивно, и они могут зависеть от того, разделяется ли CU на суб-CU. Если CU больше не разделяется, то она называется листовой CU. В данном раскрытии изобретения четыре суб-CU в листовой CU также будут называться листовыми CU, даже если отсутствует явное разделение исходной листовой CU. Например, если CU с размером 16×16 больше не разделяется, то четыре суб-CU 8×8 также будут называться листовыми CU, хотя CU 16×16 никогда не разделялась.
[0041] CU имеет сходную с макроблоком из стандарта H.264 цель за исключением того, что CU не имеет отличия в размере. Например, блок дерева можно разделить на четыре дочерних узла (также называемых суб-CU), и каждый дочерний узел, в свою очередь, может быть родительским узлом и разделяться на четыре других дочерних узла. Конечный, неразделенный дочерний узел, называемый листом квадродерева, содержит узел кодирования, также называемый листовой CU. Синтаксические данные, ассоциированные с кодированным потоком битов, могут задавать максимальное количество раз, которое можно делить блок дерева, называемое максимальной глубиной CU, а также могут задавать минимальный размер узлов кодирования. Соответственно, поток битов также может задавать наименьшую единицу кодирования (SCU). Данное раскрытие изобретения использует термин "блок", чтобы ссылаться на любую из CU, PU или TU применительно к HEVC, или аналогичные структуры данных применительно к другим стандартам (например, макроблоки и их субблоки в H.264/AVC).
[0042] CU включает в себя узел кодирования и единицы предсказания (PU) и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и должен иметь квадратную форму. Размер CU может варьироваться от 8×8 пикселей до размера блока дерева с максимальным количеством 64×64 пикселей или больше. Каждая CU может содержать одну или более PU и одну или более TU. Синтаксические данные, ассоциированные с CU, могут описывать, например, разбиение CU на одну или более PU. Режимы разбиения могут отличаться между тем, кодируется ли CU в режиме пропуска или в прямом режиме, режиме внутреннего предсказания или режиме внешнего предсказания. PU могут разбиваться, чтобы иметь неквадратную форму. Синтаксические данные, ассоциированные с CU, также могут описывать, например, разбиение CU на одну или более TU в соответствии с квадродеревом. TU может иметь квадратную или неквадратную (например, прямоугольную) форму.
[0043] Стандарт HEVC допускает преобразования в соответствии с TU, которые могут отличаться для разных CU. TU обычно имеют размер на основе размера PU в данной CU, заданной для разделенной LCU, хотя это не всегда может быть так. TU обычно имеют такой же размер или меньше, чем PU. В некоторых примерах остаточные выборки, соответствующие CU, можно подразделить на меньшие единицы, используя структуру квадродерева, известную как "остаточное квадродерево" (RQT). Листы RQT могут называться единицами преобразования (TU). Значения разности пикселей, ассоциированные с TU, можно преобразовать для создания коэффициентов преобразования, которые можно квантовать.
[0044] Листовая CU может включать в себя одну или более единиц предсказания (PU). Обычно PU представляет пространственную область, соответствующую всей или части соответствующей CU, и может включать в себя данные для извлечения эталонной выборки для PU. Кроме того, PU включает в себя данные, связанные с предсказанием. Например, когда PU кодируется во внутреннем режиме, данные для PU могут включаться в остаточное квадродерево (RQT), которое может включать в себя данные, описывающие режим внутреннего предсказания для TU, соответствующей PU. В качестве другого примера, когда PU кодируется во внешнем режиме, PU может включать в себя данные, задающие один или более векторов движения для PU. Данные, задающие вектор движения для PU, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность в одну четверть пикселя или точность в одну восьмую пикселя), эталонное изображение, на которое указывает вектор движения, и/или список эталонных изображений (например, Список 0, Список 1 или Список C) для вектора движения.
[0045] Листовая 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.
[0046] Кроме того, TU в листовых CU также могут ассоциироваться с соответствующими структурами данных квадродерева, называемыми остаточными квадродеревьями (RQT). То есть листовая CU может включать в себя квадродерево, указывающее, как листовая CU разбивается на TU. Корневой узел квадродерева TU, как правило, соответствует листовой CU, тогда как корневой узел квадродерева CU, как правило, соответствует блоку дерева (или LCU). TU в RQT, которые не разделяются, называются листовыми TU. Вообще, данное раскрытие изобретения использует термины "CU" и "TU", чтобы ссылаться на листовую CU и листовую TU соответственно, пока не указано иное.
[0047] Видеопоследовательность, как правило, включает в себя последовательность видеокадров или изображений. Группа изображений (GOP), как правило, содержит последовательность из одного или более видеоизображений. GOP может включать синтаксические данные в заголовок GOP, заголовок одного или более изображений или куда-либо в другое место, которые описывают количество изображений, включенных в GOP. Каждый слайс изображения может включать в себя синтаксические данные слайса, которые описывают режим кодирования для соответствующего слайса. Видеокодер 20 обычно действует на видеоблоки в отдельных слайсах видео, чтобы кодировать видеоданные. Видеоблок может соответствовать узлу кодирования в CU. Видеоблоки могут иметь фиксированные или изменяющиеся размеры и могут отличаться по размеру в соответствии с заданным стандартом кодирования.
[0048] В качестве примера 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 снизу.
[0049] В данном раскрытии изобретения "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.
[0050] После кодирования с внутренним предсказанием или внешним предсказанием, использующего PU в CU, видеокодер 20 может вычислить остаточные данные для TU в CU. PU могут содержать синтаксические данные, описывающие способ или режим формирования данных пикселя с предсказанием в пространственной области (также называемой областью пикселей), а TU могут содержать коэффициенты в области преобразования после применения преобразования, например дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлет-преобразования или концептуально сходного преобразования к остаточным видеоданным. Остаточные данные могут соответствовать разностям пикселей между пикселями некодированного изображения и значениями предсказания, соответствующими PU. Видеокодер 20 может образовать TU, включающие в себя остаточные данные для CU, а затем преобразовать TU для создания коэффициентов преобразования для CU.
[0051] После любых преобразований для создания коэффициентов преобразования видеокодер 20 может выполнить квантование коэффициентов преобразования. Квантование в целом относится к процессу, в котором коэффициенты преобразования квантуются, чтобы уменьшить по возможности объем данных, используемый для представления коэффициентов, обеспечивая дополнительное сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение во время квантования можно округлить в меньшую сторону до m-битового значения, где n больше m.
[0052] После квантования видеокодер может сканировать коэффициенты преобразования, создавая одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть предназначено для помещения коэффициентов с большей энергией (и поэтому с меньшей частотой) впереди массива и помещения коэффициентов с меньшей энергией (и поэтому большей частотой) сзади массива. В некоторых примерах видеокодер 20 может использовать предопределенный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования для создания сериализованного вектора, который можно энтропийно кодировать. В других примерах видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для образования одномерного вектора видеокодер 20 может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивным кодированием с переменной длиной (CAVLC), контекстно-адаптивным двоичным арифметическим кодированием (CABAC), синтаксическим контекстно-адаптивным двоичным арифметическим кодированием (SBAC), энтропийным кодированием с разбиением на интервалы вероятности (PIPE) или другой методологией энтропийного кодирования. Видеокодер 20 также может энтропийно кодировать синтаксические элементы, ассоциированные с кодированными видеоданными, для использования видеодекодером 30 при декодировании видеоданных.
[0053] Для выполнения CABAC видеокодер 20 может назначить контекст в рамках контекстной модели символу, который подлежит передаче. Контекст может относиться, например, к тому, являются ли соседние значения символа ненулевыми. Для выполнения CAVLC видеокодер 20 может выбрать код переменной длины для символа, который подлежит передаче. Кодовые слова при VLC могут быть построены так, что относительно более короткие коды соответствуют более вероятным символам, тогда как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может добиться экономии битов по сравнению, например, с использованием кодовых слов равной длины для каждого символа, который подлежит передаче. Определение вероятности может основываться на контексте, назначенном символу.
[0054] Видеокодер 20 дополнительно может отправлять видеодекодеру 30 синтаксические данные, например блочные синтаксические данные, кадровые синтаксические данные и основанные на GOP синтаксические данные, например, в заголовке кадра, заголовке блока, заголовке слайса или заголовке GOP. Синтаксические данные GOP могут описывать количество кадров в соответствующей GOP, а синтаксические данные кадра могут указывать режим кодирования/предсказания, используемый для кодирования соответствующего кадра.
[0055] WD8 HEVC также допускает установление ограниченного количества подмножеств синтаксиса посредством "профилей" и "уровней". WD8 HEVC проектируется универсальным в том смысле, что он обслуживает широкий диапазон приложений, скоростей передачи битов, разрешений, качества и услуг. Приложения должны охватывать, в том числе, цифровые запоминающие носители, телевизионное вещание и связь в реальном времени. В ходе создания WD8 HEVC рассмотрены различные требования от типичных приложений, разработаны необходимые алгоритмические элементы, и все это объединено в единый синтаксис. Поэтому WD8 HEVC упростит обмен видеоданными между разными приложениями. Однако, принимая во внимание практичность реализации полного синтаксиса WD8 HEVC, профили и уровни предоставляют средство для ограниченного количества подмножеств синтаксиса.
[0056] "Профиль" задается в качестве подмножества всего синтаксиса потока битов, который задается посредством WD8 HEVC. В границах, установленных синтаксисом заданного профиля, все же можно требовать очень большого разброса в производительности кодеров и декодеров в зависимости от значений, принимаемых синтаксическими элементами в потоке битов. Например, заданный размер декодированных изображений может потребовать очень большого разброса в производительности кодеров и декодеров. Во многих приложениях в настоящее время не практично и не экономно реализовывать декодер, допускающий работу со всеми гипотетическими использованиями синтаксиса в конкретном профиле.
[0057] Чтобы справиться с этой проблемой, в рамках каждого профиля задаются "классы" и "уровни". Уровень класса является заданным набором ограничений, наложенных на значения синтаксических элементов в потоке битов. Эти ограничения могут быть простыми пределами значений. В качестве альтернативы они могут принимать вид ограничений арифметических сочетаний значений (например, ширина изображения, умноженная на высоту изображения, умноженная на количество изображений, декодированных в секунду). Уровень, заданный для более низкого класса, является более ограниченным, нежели уровень, заданный для более высокого класса. Один и тот же набор уровней задается для всех профилей, причем большинство аспектов определения каждого уровня является совместным для разных профилей. Отдельные реализации в рамках заданных ограничений могут поддерживать разный уровень для каждого поддерживаемого профиля. В другом контексте уровень является значением коэффициента преобразования перед масштабированием. Профили и уровни подробнее описываются в Приложении A к WD8 HEVC.
[0058] Кодированный видеоконтент, соответствующий WD8 HEVC, использует общий синтаксис. Чтобы получить подмножество полного синтаксиса, в поток битов включаются флаги, параметры и другие синтаксические элементы, которые сигнализируют наличие или отсутствие синтаксических элементов, которые возникают позже в потоке битов.
[0059] WD8 HEVC задает подуровень в качестве временного масштабируемого уровня во временном масштабируемом потоке битов, состоящего из единиц уровня абстракции сети (NAL) уровня видеокодирования (VCL) с конкретным значением переменной TemporalId и ассоциированных единиц NAL не на VCL. WD8 HEVC дополнительно задает представление подуровня в качестве подмножества потока битов, состоящего из единиц NAL конкретного подуровня и более низких подуровней.
[0060] Подпункт 10.1 в WD8 HEVC описывает подмножества потока битов и процесс извлечения для формирования субпотоков битов. Вообще, WD8 HEVC описывает извлечение субпотоков битов из потока битов на основе значений идентификаторов уровней и идентификаторов временных подуровней, которые идентифицируют рабочую точку потока битов.
[0061] Рабочая точка является потоком битов, созданным из другого потока битов с помощью операции процесса извлечения субпотоков битов с другим потоком битов, целевым наибольшим TemporalId и списком целевых идентификаторов уровней в качестве входных данных. Рабочая точка идентифицируется набором значений nuh_reserved_zero_6bits, обозначенным как OpLayerIdSet, и значением TemporalId, обозначенным как OpTid, и ассоциированное подмножество потока битов, выведенное в качестве результата процесса извлечения субпотоков битов, который задан в WD8 HEVC, с OpTid и OpLayerIdSet в качестве входных данных, является независимо декодируемым. Если целевой наибольший TemporalId у рабочей точки равен наибольшему значению TemporalId в наборе уровней, ассоциированном со списком целевых идентификаторов уровней, то рабочая точка идентична набору уровней. В противном случае рабочая точка является подмножеством набора уровней.
[0062] Процесс извлечения субпотоков битов является заданным процессом, с помощью которого из потока битов удаляются единицы NAL в потоке битов, которые не принадлежат целевому набору, определенному целевым наибольшим TemporalId и списком целевых идентификаторов уровней, layerIdListTarget, при этом выходной субпоток битов состоит из единиц NAL в потоке битов, которые принадлежат целевому набору. Входными данными в процесс извлечения субпотоков битов являются переменная tIdTarget и список targetDecLayerIdSet. Результатом процесса извлечения субпотоков битов является субпоток битов. Субпоток битов выводится путем удаления из потока битов всех единиц NAL с TemporalId больше tIdTarget или с nuh_reserved_zero_6bits, не входящим в значения в targetDecLayerIdSet.
[0063] Любой субпоток битов, который включается в результат процесса извлечения субпотоков битов, заданного в подпункте 10.1 в WD8 HEVC, с tIdTarget, равным любому значению в диапазоне от 0 до 6 включительно, и с targetDecLayerIdSet, содержащим значение 0, соответствует WD8 HEVC. Поток битов, соответствующий WD8 HEVC, может содержать одну или более единиц NAL кодированного слайса с равным 0 nuh_reserved_zero_6bits и равным 0 TemporalId.
[0064] Текущий проект HEVC обладает следующими недостатками. Во-первых, временным подмножествам для кодированной видеопоследовательности разрешено сигнализировать набор из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений, который отличается от такового у всей кодированной видеопоследовательности. Однако временному подмножеству нет смысла использовать отличное пространство профиля, и отсутствуют очевидные варианты использования, в которых временным подмножествам было бы выгодно иметь другие значения (например, класс, совместимые профили и связанные с профилем ограничения), отличные от всей кодированной видеопоследовательности.
[0065] Во-вторых, в настоящее время набор значений nuh_reserved_zero_6bits (то есть ID уровней) для каждой рабочей точки, за исключением первой точки, сигнализируется путем явной сигнализации каждого из ID уровней, включенных в кодированную видеопоследовательность, которая будет декодирована. Однако в большинстве сценариев кодирования с масштабируемостью взаимосвязь зависимости уровней является линейной, и было бы достаточно сигнализации только целевого ID уровня. Кроме того, для нелинейной взаимосвязи зависимости уровней, которая типична для сценариев многовидового кодирования, в которых сигнализируется несколько ID уровней, ID уровней могут кодироваться по-разному. Различающееся кодирование ID уровней является простым и эффективным, похожим, например, на кодирование значений счетчика последовательности изображений (POC) при сигнализации наборов краткосрочных эталонных изображений. Наконец, разрешено иметь дублирующие наборы сигнализированных ID уровней.
[0066] В-третьих, текущий проект HEVC также обладает недостатком в том, что разрешено иметь дублирующие синтаксические структуры hrd_parameters() с одинаковым содержимым.
[0067] Чтобы устранить вышеупомянутые недостатки, в данное раскрытие изобретения включаются следующие методики. Во-первых, синтаксические элементы для сигнализации пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для временных подуровней удаляются из синтаксической структуры profile_tier_level(). Таким образом, экономятся биты, излишне используемые в тех синтаксических элементах для временных подуровней.
[0068] Во-вторых, задается простой режим рабочей точки, для которого нужно сигнализировать только одно значение nuh_reserved_zero_6bits (то есть ID уровня). Сигнализация рабочих точек изменяется, чтобы сделать возможной сигнализацию только одного значения nuh_reserved_zero_6bits для рабочих точек в простом режиме рабочей точки. Когда сигнализируется несколько значений nuh_reserved_zero_6bits (то есть ID уровней), они кодируются по-разному. Этот способ сигнализации рабочих точек более эффективен для любых сценариев кодирования с масштабируемостью, многовидового и/или 3DV-кодирования (3-мерное видео) с линейной зависимостью уровней. Кроме того, в соответствии с методиками из данного раскрытия изобретения в одном VPS запрещены дублирующие наборы ID уровней, сигнализированных для разных рабочих точек в VPS. Таким образом, заданный набор идентификаторов уровней является уникальным для заданной рабочей точки в VPS.
[0069] В-третьих, в соответствии с методиками из данного раскрытия изобретения в VPS запрещены дублирующие наборы параметров HRD, кодированных в синтаксических структурах hrd_parameters(), ассоциированных с рабочими точками. Таким образом, заданный набор параметров HRD в информации о параметрах HRD, ассоциированной с заданной рабочей точкой, является уникальным для заданной рабочей точки в VPS.
[0070] Например, видеокодер 20 кодирует синтаксические элементы в VPS в рамках надлежащего потока битов. Синтаксические элементы указывают первую рабочую точку, имеющую первый набор содержимого. Видеокодер 20 затем кодирует синтаксические элементы в VPS в рамках надлежащего потока битов, которые указывают информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки. Надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки. Таким образом, видеокодер 20 кодирует каждую рабочую точку с уникальным содержимым, например разными наборами ID уровней. В качестве дополнительного примера видеокодер 20 может кодировать параметры HRD для потока битов, причем каждая копия синтаксической структуры параметров HRD включает в себя разное содержимое.
[0071] Аналогичным образом в соответствии с методиками, описанными в данном раскрытии изобретения, видеодекодер 30 декодирует синтаксические элементы в VPS в рамках надлежащего потока битов. Синтаксические элементы указывают первую рабочую точку, имеющую первый набор содержимого. В некоторых примерах видеодекодер 30 принимает от видеокодера 20 кодированный надлежащий поток битов. Видеодекодер 30 затем декодирует, при наличии, синтаксические элементы в VPS в рамках надлежащего потока битов, которые указывают информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки. Надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки. Таким образом, видеодекодер 30 декодирует каждую рабочую точку с уникальным содержимым, например разными наборами ID уровней. В качестве дополнительного примера видеодекодер 30 может декодировать параметры HRD для потока битов, причем каждая копия синтаксической структуры параметров HRD включает в себя разное содержимое. В дополнительных примерах второй набор содержимого содержит набор параметров HRD для первой рабочей точки, который задает HRD, используемый для проверки, является ли надлежащим субпоток битов первой рабочей точки.
[0072] Синтаксические элементы, указывающие первую рабочую точку, могут включать синтаксическую структуру operation_point() в VPS в рамках надлежащего потока битов. Кроме того, синтаксические элементы, указывающие информацию о параметрах HRD, могут содержать синтаксическую структуру hrd_parameters() в VPS в рамках надлежащего потока битов.
[0073] В вышеприведенных примерах надлежащий поток битов может не включать в себя синтаксические элементы в VPS, которые дублируют первый набор содержимого для второй рабочей точки, причем первый набор содержимого уникален для первой рабочей точки в VPS. Кроме того, надлежащий поток битов может не включать в себя синтаксические элементы в VPS, которые дублируют информацию о параметрах HRD, имеющую второй набор содержимого для второй рабочей точки, причем второй набор содержимого уникален для первой рабочей точки в VPS.
[0074] В некоторых примерах видеокодер 20 может дополнительно указывать, используется ли простой режим рабочей точки для каждой из множества рабочих точек в потоке битов. Когда простой режим рабочей точки используется для конкретной точки из рабочих точек, видеокодер 20 может кодировать только один целевой идентификатор уровня для конкретной рабочей точки. В качестве другого примера видеокодер 20 может кодировать пространство профиля, класс, совместимые профили и/или связанные с профилем ограничения для потока битов, но не кодировать отдельные пространство профиля, класс, совместимые профили или связанные с профилем ограничения для временных подуровней потока битов.
[0075] Также видеодекодер 30 может принимать указание, используется ли простой режим рабочей точки для каждой из множества рабочих точек в потоке битов. Когда простой режим рабочей точки используется для конкретной точки из рабочих точек, видеодекодер 30 может декодировать только один целевой идентификатор уровня для конкретной рабочей точки. В качестве другого примера видеодекодер 30 может декодировать пространство профиля, класс, совместимые профили и/или связанные с профилем ограничения для потока битов, но не декодировать отдельные пространство профиля, класс, совместимые профили или связанные с профилем ограничения для временных подуровней потока битов.
[0076] Фиг. 2 - блок-схема, иллюстрирующая пример видеокодера 20, который может реализовать методики, описанные в данном раскрытии изобретения. Видеокодер 20 может выполнять внутреннее и внешнее кодирование видеоблоков в слайсах видео. Внутреннее кодирование опирается на пространственное предсказание, чтобы уменьшить или устранить пространственную избыточность в видео в данном видеокадре или изображении. Внешнее кодирование опирается на временное предсказание, чтобы уменьшить или устранить временную избыточность в видео в соседних кадрах или изображениях видеопоследовательности. Внутренний режим (I-режим) может относиться к любому из нескольких режимов пространственного кодирования. Внешние режимы, например однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим), могут относиться к любому из нескольких режимов временного кодирования.
[0077] Как показано на фиг. 2, видеокодер 20 принимает текущий видеоблок в видеокадре, который подлежит кодированию. В примере из фиг. 2 видеокодер 20 включает в себя модуль 40 выбора режима, запоминающее устройство 64 эталонных кадров, сумматор 50, модуль 52 обработки с преобразованием, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 40 выбора режима в свою очередь включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, модуль 46 обработки с внутренним предсказанием и модуль 48 разбиения. Для восстановления видеоблока видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обработки с обратным преобразованием и сумматор 62. Также может включаться фильтр уменьшения блочности для фильтрации границ блока, чтобы удалить артефакты блочности из восстановленного видео. При желании фильтр уменьшения блочности обычно фильтровал бы вывод сумматора 62. Также могут использоваться дополнительные фильтры (в цикле или после цикла) в дополнение к фильтру уменьшения блочности. Такие фильтры для краткости не показаны, но при желании могут фильтровать вывод сумматора 50 (в качестве фильтра в цикле).
[0078] Во время процесса кодирования видеокодер 20 принимает видеокадр или слайс, которые подлежат кодированию. Кадр или слайс можно разделить на несколько видеоблоков. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с внешним предсказанием принятого видеоблока относительно одного или более блоков в одном или более эталонных кадрах, чтобы обеспечить временное предсказание. Модуль 46 обработки с внутренним предсказанием в качестве альтернативы может выполнять кодирование с внутренним предсказанием принятого видеоблока относительно одного или более соседних блоков в том же кадре или слайсе в качестве блока, который подлежит кодированию, чтобы обеспечить пространственное предсказание. Видеокодер 20 может выполнять несколько проходов кодирования, например, для выбора подходящего режима кодирования для каждого блока видеоданных.
[0079] Кроме того, модуль 48 разбиения может разбить блоки видеоданных на субблоки на основе оценки предыдущих схем разбиения в предыдущих проходах кодирования. Например, модуль 48 разбиения может сначала разбить кадр или слайс на LCU, и разбить каждую из LCU на суб-CU на основе анализа искажения в зависимости от скорости передачи (например, оптимизации искажения в зависимости от скорости передачи). Модуль 40 выбора режима дополнительно может создать структуру данных квадродерева, указывающую разбиение LCU на суб-CU. CU листа в квадродереве могут включать в себя одну или более PU и одну или более TU.
[0080] Модуль 40 выбора режима может выбрать один из режимов кодирования, внутренний или внешний, например, на основе ошибочных результатов и предоставляет результирующий блок с внутренним или внешним кодированием сумматору 50, чтобы сформировать данные остаточного блока, и сумматору 62, чтобы восстановить кодированный блок для использования в качестве эталонного кадра. Модуль 40 выбора режима также предоставляет синтаксические элементы, например векторы движения, индикаторы внутреннего режима, информацию о разбиении и другую такую синтаксическую информацию, модулю 56 энтропийного кодирования.
[0081] Модуль 42 оценки движения и модуль 44 компенсации движения могут быть существенно объединены, но иллюстрируются отдельно с концептуальной целью. Оценка движения, выполняемая модулем 42 оценки движения, является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения может указывать, например, смещение PU видеоблока в текущем видеокадре или изображении относительно блока с предсказанием в эталонном кадре (или другой кодированной единице) относительно текущего блока, кодируемого в текущем кадре (или другой кодированной единице). Блок с предсказанием является блоком, который признан точно совпадающим с блоком, который подлежит кодированию, в показателях разности пикселей, которая может определяться с помощью суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других показателей разности. В некоторых примерах видеокодер 20 может вычислять значения для положений субцелого пикселя в эталонных изображениях, сохраненных в запоминающем устройстве 64 эталонных кадров. Например, видеокодер 20 может интерполировать значения положений одной четверти пикселя, положений одной восьмой пикселя или других положений дробного пикселя в эталонном изображении. Поэтому модуль 42 оценки движения может выполнить поиск движения относительно положений полного пикселя и положений дробного пикселя и вывести вектор движения с точностью до дробного пикселя.
[0082] Модуль 42 оценки движения вычисляет вектор движения для PU видеоблока в слайсе с внешним кодированием путем сравнения положения PU с положением блока с предсказанием в эталонном изображении. Эталонное изображение может выбираться из первого списка эталонных изображений (Список 0) или второго списка эталонных изображений (Список 1), каждый из которых идентифицирует одно или более эталонных изображений, сохраненных в запоминающем устройстве 64 эталонных кадров. Модуль 42 оценки движения отправляет вычисленный вектор движения модулю 56 энтропийного кодирования и модулю 44 компенсации движения.
[0083] Компенсация движения, выполняемая модулем 44 компенсации движения, может включать в себя выборку или формирование блока с предсказанием на основе вектора движения, определенного модулем 42 оценки движения. Снова в некоторых примерах модуль 42 оценки движения и модуль 44 компенсации движения могут быть объединены функционально. После приема вектора движения для PU текущего видеоблока модуль 44 компенсации движения может найти блок с предсказанием, на который указывает вектор движения, в одном из списков эталонных изображений. Сумматор 50 образует остаточный видеоблок путем вычитания значений пикселей блока с предсказанием из значений пикселей текущего кодируемого видеоблока, образуя значения разности пикселей, которые обсуждаются ниже. Обычно модуль 42 оценки движения выполняет оценку движения относительно компонентов яркости, а модуль 44 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости, для компонентов цветности и компонентов яркости. Модуль 40 выбора режима также может формировать синтаксические элементы, ассоциированные с видеоблоками и слайсом видео, для использования видеодекодером 30 при декодировании видеоблоков в слайсе видео.
[0084] Модуль 46 обработки с внутренним предсказанием может внутренне предсказать текущий блок в качестве альтернативы внешнему предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как описано выше. В частности, модуль 46 обработки с внутренним предсказанием может определить режим внутреннего предсказания, чтобы использовать его для кодирования текущего блока. В некоторых примерах модуль 46 обработки с внутренним предсказанием может кодировать текущий блок с использованием различных режимов внутреннего предсказания, например, во время отдельных проходов кодирования, а модуль 46 обработки с внутренним предсказанием (или модуль 40 выбора режима в некоторых примерах) может выбирать подходящий режим внутреннего предсказания для использования из проверенных режимов.
[0085] Например, модуль 46 обработки с внутренним предсказанием может вычислить значения искажения в зависимости от скорости передачи, используя анализ искажения в зависимости от скорости передачи для различных проверенных режимов внутреннего предсказания, и выбрать режим внутреннего предсказания, имеющий наилучшие характеристики искажения в зависимости от скорости передачи среди проверенных режимов. Анализ искажения в зависимости от скорости передачи, как правило, определяет величину искажения (или ошибки) между кодированным блоком и исходным, некодированным блоком, который кодировался для создания кодированного блока, а также скорость передачи битов (то есть количество битов), используемую для создания кодированного блока. Модуль 46 обработки с внутренним предсказанием может вычислить отношения из искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим внутреннего предсказания демонстрирует наилучшее значение искажения в зависимости от скорости передачи для блока.
[0086] После выбора режима внутреннего предсказания для блока модуль 46 обработки с внутренним предсказанием может предоставить модулю 56 энтропийного кодирования информацию, указывающую выбранный режим внутреннего предсказания для блока. Модуль 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим внутреннего предсказания. Видеокодер 20 может включить в переданный поток битов конфигурационные данные, которые могут включать в себя множество таблиц индексов режимов внутреннего предсказания и множество таблиц индексов измененных режимов внутреннего предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков и указания наиболее вероятного режима внутреннего предсказания, таблицы индексов режимов внутреннего предсказания и таблицы индексов измененного режима внутреннего предсказания для использования для каждого из контекстов.
[0087] Видеокодер 20 образует остаточный видеоблок путем вычитания данных предсказания от модуля 40 выбора режима из исходного кодируемого видеоблока. Сумматор 50 представляет собой компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 обработки с преобразованием применяет к остаточному блоку преобразование, например дискретное косинусное преобразование (DCT) или концептуально сходное преобразование, создавая видеоблок, содержащий значения остаточных коэффициентов преобразования. Модуль 52 обработки с преобразованием может выполнять и другие преобразования, которые концептуально сходны с DCT. Также могли бы использоваться вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. В любом случае модуль 52 обработки с преобразованием применяет преобразование к остаточному блоку, создавая блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из области значений пикселей в область преобразования, например частотную область. Модуль 52 обработки с преобразованием может отправить результирующие коэффициенты преобразования модулю 54 квантования.
[0088] Модуль 54 квантования квантует коэффициенты преобразования для дополнительного уменьшения скорости передачи битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования можно изменять путем регулирования параметра квантования. В некоторых примерах модуль 54 квантования затем может выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы сканирование может выполнить модуль 56 энтропийного кодирования.
[0089] После квантования модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), синтаксическое контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разбиением на интервалы вероятности (PIPE) или другую методику энтропийного кодирования. В случае контекстного энтропийного кодирования контекст может основываться на соседних блоках. После энтропийного кодирования с помощью модуля 56 энтропийного кодирования кодированный поток битов может передаваться другому устройству (например, видеодекодеру 30) или архивироваться для последующей передачи или извлечения.
[0090] Модуль 58 обратного квантования и модуль 60 обработки с обратным преобразованием применяют обратное квантование и обратное преобразование соответственно, чтобы восстановить остаточный блок в области пикселей, например, для последующего использования в качестве эталонного блока. Модуль 44 компенсации движения может вычислить эталонный блок путем добавления остаточного блока к блоку с предсказанием в одном из кадров в запоминающем устройстве 64 эталонных кадров. Модуль 44 компенсации движения также может применить один или более интерполирующих фильтров к восстановленному остаточному блоку, чтобы вычислить значения субцелых пикселей для использования при оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания с компенсированным движением, созданному модулем 44 компенсации движения, чтобы создать восстановленный видеоблок для сохранения в запоминающем устройстве 64 эталонных кадров. Восстановленный видеоблок может использоваться модулем 42 оценки движения и модулем 44 компенсации движения в качестве эталонного блока, чтобы внешне кодировать блок в последующем видеокадре.
[0091] Видеокодер 20 из фиг. 2 представляет собой пример видеокодера, сконфигурированного с возможностью реализации одной или более методик, описанных в этом документе. Видеокодер 20 сигнализирует рабочие точки в наборе параметров видео (VPS), ассоциированном с потоком битов. Рабочие точки относятся к субпотокам битов, которые могут извлекаться из исходного потока битов, который является масштабируемым во времени и/или имеет несколько уровней либо видов. В HEVC рабочая точка может идентифицироваться набором значений nuh_reserved_zero_6bits, обозначенным как OpLayerIdSet, и значением TemporalId, обозначенным как OpTid. В качестве примера исходный поток битов может включать в себя три уровня или вида с разными пространственными разрешениями и два временных масштабируемых уровня с разными частотами кадров. В этом примере исходный поток битов включает в себя шесть рабочих точек с каждым из трех пространственных разрешений, доступным на любой частоте кадров.
[0092] Для каждой из рабочих точек, которые видеокодер 20 сигнализирует в VPS, ассоциированном с потоком битов, структура синтаксиса рабочих точек задает набор идентификаторов (ID) уровней, используемый для идентификации единиц уровня абстракции сети (NAL) в потоке битов, которые принадлежат субпотоку битов заданной рабочей точки. Таким образом, единицы NAL, которые составляют субпоток битов заданной рабочей точки, можно извлечь из исходного потока битов на основе идентификаторов уровней у единиц NAL.
[0093] В некоторых случаях видеокодер 20 может дополнительно кодировать параметры гипотетического эталонного декодера (HRD), которые относятся к одной или более рабочим точкам. В этом случае видеокодер 20 сигнализирует информацию о параметрах HRD в VPS. Для каждой из одной или более рабочих точек, которые имеют параметры HRD, синтаксическая структура параметров HRD задает набор параметров HRD, который задает HRD, используемый для проверки, является ли надлежащим субпоток битов у заданной рабочей точки.
[0094] Традиционно стандарты кодирования видео допускают, чтобы потоки битов включали в себя дублирующие наборы идентификаторов уровней, которые должны быть сигнализированы для рабочих точек, в VPS. Это означает, что две или более рабочие точки могут иметь одинаковый набор идентификаторов уровней и поэтому идентифицируют одинаковые единицы NAL для составления субпотоков битов у рабочих точек. Таким образом, несколько рабочих точек могут ссылаться на одинаковое содержимое потока битов. Аналогичным образом, стандарты кодирования видео допускают, чтобы потоки битов включали в себя дублирующие наборы параметров HRD, которые должны быть сигнализированы для рабочих точек, в VPS. Это означает, что два или более набора параметров HRD могут иметь одинаковое содержимое и поэтому задают два идентичных HRD для проверки, являются ли надлежащими субпотоки битов у связанных рабочих точек. В обоих случаях сигнализация избыточна, и имеется неэффективное использование битов.
[0095] Методики из данного раскрытия изобретения повышают эффективность сигнализации информации, ассоциированной с рабочими точками, путем запрета сигнализации дублирующего содержимого либо для рабочих точек, либо параметров HRD, связанных с рабочими точками, в VPS в рамках надлежащего потока битов. В соответствии с методиками из данного раскрытия изобретения видеокодер 20 может кодировать синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие первую рабочую точку, имеющую первый набор содержимого. Видеокодер 20 также может кодировать, при наличии, синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки. Надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки, и видеокодер 20 сконфигурирован с возможностью кодирования только надлежащих потоков битов. Как описано выше, первый набор содержимого может содержать набор идентификаторов уровней для первой рабочей точки, а второй набор содержимого может содержать набор параметров HRD для первой рабочей точки.
[0096] В одном примере видеокодер 20 будет кодировать только надлежащий поток битов так, что после кодирования синтаксических элементов в VPS в рамках потока битов, указывающих первую рабочую точку, имеющую первый набор идентификаторов уровней, видеокодер 20 не кодирует синтаксические элементы в VPS, которые дублируют первый набор идентификаторов уровней для второй рабочей точки. Методики из данного раскрытия изобретения запретили дублирующие наборы идентификаторов уровней для рабочих точек в одном и том же VPS в рамках надлежащего потока битов. Первый набор идентификаторов уровней должен быть уникальным для первой рабочей точки в VPS, иначе поток битов будет ненадлежащим. То есть, например, ненадлежащий поток битов может содержать первый набор идентификаторов уровней для первой рабочей точки, а также второй набор идентификаторов уровней для второй рабочей точки, причем второй набор включает в себя такие же идентификаторы уровней, как и первый набор. Поэтому видеокодеру 20 не следует кодировать синтаксические элементы в VPS надлежащего потока битов, которые дублируют наборы идентификаторов уровней для первой рабочей точки и второй рабочей точки.
[0097] В другом примере могут присутствовать параметры HRD для первой рабочей точки. В этом случае после кодирования синтаксических элементов в VPS в рамках потока битов, указывающих информацию о параметрах HRD, имеющую первый набор параметров HRD для первой рабочей точки, видеокодер 20 не кодирует синтаксические элементы в VPS, которые дублируют первый набор параметров HRD для второй рабочей точки. Методики из данного раскрытия изобретения запретили дублирующие наборы параметров HRD для рабочих точек в одном и том же VPS в рамках надлежащего потока битов. Первый набор параметров HRD должен быть уникальным для первой рабочей точки в VPS, иначе поток битов будет ненадлежащим. Поэтому видеокодеру 20 не следует кодировать синтаксические элементы в VPS надлежащего потока битов, которые дублируют наборы параметров HRD для первой рабочей точки и второй рабочей точки.
[0098] В другом примере видеокодер 20 может указывать, используется ли простой режим рабочей точки для каждой из множества рабочих точек в потоке битов, и когда простой режим рабочей точки используется для конкретной точки из рабочих точек, может кодировать только один целевой идентификатор уровня для конкретной рабочей точки. Простой режим рабочей точки является режимом, в котором для каждой рабочей точки OpLayerIdSet включает в себя и только включает в себя конкретное значение nuh_reserved_zero_6bits и все другие значения nuh_reserved_zero_6bits меньше того конкретного значения nuh_reserved_zero_6bits. В некоторых примерах, когда видеокодер 20 кодирует несколько значений nuh_reserved_zero_6bits (то есть ID уровней), которые сигнализируются, видеокодер 20 кодирует те значения по-разному. Таким образом, сигнализация рабочих точек более эффективна для любых сценариев кодирования с масштабируемостью, многовидового и/или 3DV-кодирования с линейной зависимостью уровней. Как описано выше, видеокодер 20 не кодирует дублирующий набор ID уровней в одном VPS.
[0099] В качестве другого примера видеокодер 20 может кодировать пространство профиля, класс, совместимые профили и/или связанные с профилем ограничения для потока битов, но не кодировать отдельные пространство профиля, класс, совместимые профили или связанные с профилем ограничения для временных подуровней потока битов. Как описано выше, видеокодер 20 может кодировать параметры HRD для потока битов, причем каждая копия синтаксической структуры параметров HRD включает в себя разное содержимое.
[0100] Видеокодер 20 может использовать следующие синтаксис и семантику. Примерная полезная нагрузка последовательности исходных байтов (RBSP) набора параметров видео задается в Таблице 1 следующим образом.
[0101] Равный 1 флаг vps_simple_op_mode_flag[i] задает, что используется простой режим рабочей точки для i-й синтаксической структуры operation_point_layer_ids(). Когда vps_simple_op_mode_flag[i] равен 0, этот флаг задает, что простой режим рабочей точки не используется для i-й синтаксической структуры operation_point().
[0102] Любые два экземпляра синтаксической структуры hrd_parameters(i, vps_max_sub_layers_minus1) и hrd_parameters(j, vps_max_sub_layers_minus1), где i не равно j, не должны иметь одинакового содержимого. Таким образом, видеокодер 20 кодирует синтаксическую структуру, которая включает в себя только уникальные параметры HRD.
[0103] Таблица 2 предоставляет синтаксис и семантику примерного профиля, класса и уровня.
[0104] Равный 1 флаг sub_layer_profile_present_flag[i], когда ProfilePresentFlag равен 1, задает, что информация о профиле присутствует в синтаксической структуре profile_tier_level() для представления подуровня с TemporalId, равным i. Равный 0 флаг sub_layer_profile_present_flag[i] задает, что информация о профиле отсутствует в синтаксической структуре profile_tier_level() для представлений подуровня с TemporalId, равным i. Когда отсутствует, значение sub_layer_profile_present_flag[i] подразумевается равным 0.
[0105] Равный 1 флаг sub_layer_level_present_flag[i] задает, что информация об уровне присутствует в синтаксической структуре profile_tier_level() для представления подуровня с TemporalId, равным i. Равный 0 флаг sub_layer_level_present_flag[i] задает, что информация об уровне отсутствует в синтаксической структуре profile_tier_level() для представления подуровня с TemporalId, равным i.
[0106] Синтаксические элементы sub_layer_profile_idc[i] и sub_layer_level_idc[i] имеют такую же семантику, как и general_profile_idc и general_level_idc соответственно, но применяются к представлению подуровня с TemporalId, равным i.
[0107] Видеокодер 20, например, может кодировать sub_layer_profile_present_flag[i] равным 1 для указания, что информация о профиле присутствует в синтаксической структуре profile_tier_level() для представления подуровня с TemporalId, равным i. Видеокодер 20 может не сигнализировать синтаксические элементы для сигнализации пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для временных подуровней в синтаксической структуре profile_tier_level().
[0108] Таблица 3 предоставляет синтаксис и семантику примерной рабочей точки.
[0109] Синтаксическая структура operation_point(opIdx) задает набор значений nuh_reserved_zero_6bits, включенных в OpLayerIdSet у рабочих точек, к которым применяется opIdx-я синтаксическая структура hrd_parameters() в наборе параметров видео.
[0110] Когда vps_simple_op_mode_flag[opIdx] равен 0, синтаксический элемент op_first_present_layer_id[opIdx] задает первое (то есть 0-е) значение nuh_reserved_zero_6bits, включенного в OpLayerIdSet у рабочих точек, к которым применяется opIdx-я синтаксическая структура hrd_parameters() в наборе параметров видео. Когда vps_simple_op_mode_flag[opIdx] равен 1, op_first_present_layer_id[opIdx] задает наибольшее значение nuh_reserved_zero_6bits, включенного в OpLayerIdSet у рабочих точек, к которым применяется opIdx-я синтаксическая структура hrd_parameters() в наборе параметров видео.
[0111] Когда vps_simple_op_mode_flag[opIdx] равен 0, синтаксический элемент op_num_layer_id_values_minus1[opIdx] плюс 1 задает количество значений nuh_reserved_zero_6bits, включенных в OpLayerIdSet у рабочих точек, к которым применяется opIdx-я синтаксическая структура hrd_parameters() в наборе параметров видео. Значения op_num_layer_id_values_minus1[opIdx] должны быть меньше либо равны 63.
[0112] Когда vps_simple_op_mode_flag[opIdx] равен 0, op_layer_id_delta_minus1[opIdx][i] плюс 1 задает разницу между i-м значением nuh_reserved_zero_6bits и (i-1)-м значением nuh_reserved_zero_6bits, включенными в OpLayerIdSet у рабочих точек, к которым применяется opIdx-я синтаксическая структура hrd_parameters() в наборе параметров видео. Значение op_layer_id_delta_minus1[opIdx][i] должно находиться в диапазоне от 0 до 63 включительно.
[0113] Переменная NumOpLayerIdsMinus1[opIdx] выводится следующим образом.
NumOpLayerIdsMinus1[0] подразумевается равной 0.
[0114] Переменные OpLayerId[opIdx][i] для i в диапазоне от 0 до NumOpLayerIdsMinus1[opIdx] включительно выводятся следующим образом.
Значение OpLayerId[0][0] подразумевается равным 0.
[0115] Никакое значение OpLayerId[opIdx][i] не должно быть равно OpLayerId[opIdx][j], когда i не равно j, и i и j находятся в диапазоне от 0 до NumOpLayerIdsMinus1[opIdx] включительно.
[0116] Никакие два набора OpLayerId[opIdx1] и OpLayerId[opIdx2], где opIdx1 не равно opIdx2, не должны включать в себя одинаковые наборы значений nuh_reserved_zero_6bits.
[0117] OpLayerIdSet у рабочих точек, к которым применяется opIdx-я синтаксическая структура hrd_parameters() в наборе параметров видео, устанавливается включающим в себя и только включающим в себя значения nuh_reserved_zero_6bits, равные OpLayerId[opIdx][i], для i в диапазоне от 0 до NumOpLayerIdsMinus1[opIdx] включительно.
[0118] Таким образом, видеокодер 20 может кодировать синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие первую рабочую точку, имеющую первый набор содержимого, используя описанные в этом документе методики. Надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки, и видеодекодер сконфигурирован с возможностью декодирования только надлежащих потоков битов. Например, видеокодер 20 кодирует надлежащий поток битов так, что он не включает в себя синтаксические элементы в VPS, которые дублируют первый набор содержимого для второй рабочей точки, причем первый набор содержимого уникален для первой рабочей точки в VPS.
[0119] Таблица 4 предоставляет альтернативный синтаксис и семантику примерной рабочей точки.
[0120] Синтаксическая структура operation_point(opIdx) задает набор значений nuh_reserved_zero_6bits, включенных в OpLayerIdSet у рабочих точек, к которым применяется opIdx-я синтаксическая структура hrd_parameters() в наборе параметров видео.
[0121] Синтаксический элемент op_num_layer_id_values_minus1[opIdx] плюс 1 задает количество значений nuh_reserved_zero_6bits, включенных в OpLayerIdSet у рабочих точек, к которым применяется opIdx-я синтаксическая структура hrd_parameters() в наборе параметров видео. Значение op_num_layer_id_values_minus1[opIdx] должно быть меньше либо равно 63. Когда отсутствует, значение op_num_layer_id_values_minus1[opIdx] подразумевается равным 0.
[0122] В потоках битов, соответствующих описанным в этом документе методикам, op_num_layer_id_values_minus1[opIdx] должен быть равен 0. Хотя в некоторых примерах необходимо, чтобы значение op_num_layer_id_values_minus1[opIdx] было равно 0, видеодекодеры, например видеодекодер 30, должны позволять появляться и другим значениям в синтаксисе op_num_layer_id_values_minus1[opIdx].
[0123] Синтаксический элемент op_layer_id[opIdx][i] задает i-е значение nuh_reserved_zero_6bits, включенного в OpLayerIdSet у рабочих точек, к которым применяется opIdx-я синтаксическая структура hrd_parameters() в наборе параметров видео.
[0124] Переменная NumOpLayerIdsMinus1[opIdx] выводится следующим образом.
NumOpLayerIdsMinus1[0] подразумевается равной 0.
[0125] Переменные OpLayerId[opIdx][i] для i в диапазоне от 0 до NumOpLayerIdsMinus1[opIdx] включительно выводятся следующим образом.
Значение OpLayerId[0][0] подразумевается равным 0.
[0126] Никакое значение OpLayerId[opIdx][i] не должно быть равно OpLayerId[opIdx][j], когда i не равно j, и i и j находятся в диапазоне от 0 до NumOpLayerIdsMinus1[opIdx] включительно.
[0127] Никакие два набора OpLayerId[opIdx1] и OpLayerId[opIdx2], где opIdx1 не равно opIdx2, не должны включать в себя одинаковые наборы значений nuh_reserved_zero_6bits.
[0128] OpLayerIdSet у рабочих точек, к которым применяется opIdx-я синтаксическая структура hrd_parameters() в наборе параметров видео, устанавливается включающим в себя и только включающим в себя значения nuh_reserved_zero_6bits, равные OpLayerId[opIdx][i], для i в диапазоне от 0 до NumOpLayerIdsMinus1[opIdx] включительно.
[0129] Таким образом, в соответствии с описанными в этом документе методиками видеокодер 20 может указывать, используется ли простой режим рабочей точки для каждой из множества рабочих точек в потоке битов. Когда простой режим рабочей точки используется для конкретной точки из рабочих точек, видеокодер 20 может кодировать только один целевой идентификатор уровня для конкретной рабочей точки. В качестве другого примера видеокодер 20 может кодировать пространство профиля, класс, совместимые профили и/или связанные с профилем ограничения для потока битов, но не кодировать отдельные пространство профиля, класс, совместимые профили или связанные с профилем ограничения для временных подуровней потока битов. В качестве дополнительного примера видеокодер 20 может кодировать параметры HRD для потока битов, причем каждая копия синтаксической структуры параметров HRD включает в себя разное содержимое.
[0130] Фиг. 3 - блок-схема, иллюстрирующая пример видеодекодера 30, который может реализовать методики, описанные в данном раскрытии изобретения. В примере из фиг. 3 видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 обработки с внутренним предсказанием, модуль 76 обратного квантования, модуль 78 обработки с обратным преобразованием, запоминающее устройство 82 эталонных кадров и сумматор 80. Видеодекодер 30 в некоторых примерах может выполнять проход декодирования, в целом обратный по отношению к проходу кодирования, описанному по отношению к видеокодеру 20, который показан на фиг. 2.
[0131] Во время процесса декодирования видеодекодер 30 принимает от видеокодера 20 поток битов кодированного видео, который представляет собой видеоблоки кодированного слайса видео и ассоциированные синтаксические элементы. Видеодекодер 30 может принимать поток битов кодированного видео от сетевого объекта 29. Сетевой объект 29 может быть, например, сервером, информированным о среде сетевым элементом (MANE), пультом видеомонтажа или другим таким устройством, сконфигурированным с возможностью реализации одной или более описанных выше методик. Сетевой объект 29 может включать в себя внешнее средство, сконфигурированное с возможностью выполнения методик из данного раскрытия изобретения. Как описано выше, некоторые из методик, описанных в данном раскрытии изобретения, можно реализовать с помощью сетевого объекта 29 перед тем, как сетевой объект 29 передает видеодекодеру 30 поток битов кодированного видео. В некоторых системах декодирования видео сетевой объект 29 и видеодекодер 30 могут быть частями отдельных устройств, тогда как в иных случаях функциональные возможности, описанные по отношению к сетевому объекту 29, могут выполняться тем же устройством, что содержит видеодекодер 30.
[0132] Модуль 70 энтропийного декодирования в видеодекодере 30 энтропийно декодирует поток битов, чтобы сформировать квантованные коэффициенты, векторы движения или индикаторы режима внутреннего предсказания, и другие синтаксические элементы. Модуль 70 энтропийного декодирования перенаправляет векторы движения и другие синтаксические элементы в модуль 72 компенсации движения. Видеодекодер 30 может принимать синтаксические элементы на уровне слайса видео и/или уровне видеоблока.
[0133] Когда слайс видео кодируется в виде слайса с внутренним кодированием (I), модуль 74 обработки с внутренним предсказанием может сформировать данные предсказания для видеоблока текущего слайса видео на основе сигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр кодируется в виде слайса с внешним кодированием (то есть B, P или GPB), модуль 72 компенсации движения создает блоки с предсказанием для видеоблока текущего слайса видео на основе векторов движения и других синтаксических элементов, принятых от модуля 70 энтропийного декодирования. Блоки с предсказанием могут создаваться из одного из эталонных изображений в одном из списков эталонных изображений. Видеодекодер 30 может построить списки эталонных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе эталонных изображений, сохраненных в запоминающем устройстве 82 эталонных кадров.
[0134] Модуль 72 компенсации движения определяет информацию предсказания для видеоблока текущего слайса видео путем синтаксического анализа векторов движения и других синтаксических элементов и использует информацию предсказания для создания блоков с предсказанием для текущего декодируемого видеоблока. Например, модуль 72 компенсации движения использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков в слайсе видео, типа слайса внешнего предсказания (например, B-слайс или P-слайс), информации построения для одного или более списков эталонных изображений для слайса, векторов движения для каждого видеоблока с внешним кодированием в слайсе, состояния внешнего предсказания для каждого видеоблока с внешним кодированием в слайсе и другой информации для декодирования видеоблоков в текущем слайсе видео.
[0135] Модуль 72 компенсации движения также может выполнить интерполяцию на основе интерполирующих фильтров. Модуль 72 компенсации движения может использовать интерполирующие фильтры, которые использовались видеокодером 20 во время кодирования видеоблоков, чтобы вычислить интерполированные значения для субцелых пикселей эталонных блоков. В этом случае модуль 72 компенсации движения может определить интерполирующие фильтры, используемые видеокодером 20, из принятых синтаксических элементов и использовать интерполирующие фильтры для создания блоков с предсказанием.
Y
[0136] Модуль 76 обратного квантования обратно квантует, то есть деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные модулем 70 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра QP квантования, вычисленного видеодекодером 30 для каждого видеоблока в слайсе видео, чтобы определить степень квантования, а также степень обратного квантования, которое следует применить. Модуль 78 обработки с обратным преобразованием применяет к коэффициентам преобразования обратное преобразование, например обратное DCT, обратное целочисленное преобразование или концептуально сходный процесс обратного преобразования, чтобы создать остаточные блоки в области пикселей.
[0137] После того, как модуль 72 компенсации движения сформирует блок с предсказанием для текущего видеоблока на основе векторов движения и других синтаксических элементов, видеодекодер 30 образует декодированный видеоблок путем суммирования остаточных блоков от модуля 78 обработки с обратным преобразованием с соответствующими блоками с предсказанием, сформированными модулем 72 компенсации движения. Сумматор 90 представляет собой компонент или компоненты, которые выполняют эту операцию суммирования. При желании также можно применить фильтр уменьшения блочности для фильтрации декодированных блоков, чтобы удалить артефакты блочности. Другие фильтры цикла (либо в цикле кодирования, либо после цикла кодирования) также могут использоваться для сглаживания переходов пикселей или иного повышения качества видео. Декодированные видеоблоки в заданном кадре или изображении затем сохраняются в запоминающем устройстве 82 эталонных кадров, которое хранит эталонные изображения, используемые для последующей компенсации движения. Запоминающее устройство 82 эталонных кадров также хранит декодированное видео для последующего представления на устройстве отображения, например устройстве 32 отображения из фиг. 1.
[0138] Видеодекодер 30 из фиг. 3 представляет собой пример видеодекодера, сконфигурированного с возможностью реализации одной или более методик, описанных в этом документе. Методики из данного раскрытия изобретения повышают эффективность сигнализации информации, ассоциированной с рабочими точками, путем запрета сигнализации дублирующего содержимого либо для рабочих точек, либо параметров HRD, связанных с рабочими точками, в VPS в рамках надлежащего потока битов. В соответствии с методиками из данного раскрытия изобретения видеодекодер 30 может декодировать синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие первую рабочую точку, имеющую первый набор содержимого. Кроме того, видеодекодер 30 может декодировать, при наличии, синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки. Надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки, и видеодекодер 30 сконфигурирован с возможностью декодирования только надлежащих потоков битов. Как описано выше, первый набор содержимого может содержать набор идентификаторов уровней для первой рабочей точки, а второй набор содержимого может содержать набор параметров HRD для первой рабочей точки.
[0139] В одном примере после декодирования синтаксических элементов в VPS в рамках потока битов, указывающих первую рабочую точку, имеющую первый набор идентификаторов уровней, видеодекодер 30 продолжит декодирование, только если поток битов является надлежащим потоком битов, который не включает в себя синтаксические элементы в VPS, которые дублируют первый набор идентификаторов уровней для второй рабочей точки. Методики из данного раскрытия изобретения запретили дублирующие наборы идентификаторов уровней для рабочих точек в одном и том же VPS в рамках надлежащего потока битов. Первый набор идентификаторов уровней должен быть уникальным для первой рабочей точки в VPS, иначе поток битов будет ненадлежащим. Видеодекодер 30 декодирует только синтаксические элементы в VPS надлежащего потока битов, которые не включают в себя дублирующие наборы идентификаторов уровней для первой рабочей точки и второй рабочей точки. В случае, когда видеодекодер 30 принимает ненадлежащий поток битов, видеодекодер 30 может перейти в состояние отказа и отвергнуть весь поток битов.
[0140] В другом примере могут присутствовать параметры HRD для первой рабочей точки. В этом случае после кодирования синтаксических элементов в VPS в рамках потока битов, указывающих информацию о параметрах HRD, имеющую первый набор параметров HRD для первой рабочей точки, видеодекодер 30 продолжит декодирование, только если поток битов является надлежащим потоком битов, который не включает в себя синтаксические элементы в VPS, которые дублируют первый набор параметров HRD для второй рабочей точки. Методики из данного раскрытия изобретения запретили дублирующие наборы параметров HRD для рабочих точек в одном и том же VPS в рамках надлежащего потока битов. Первый набор параметров HRD должен быть уникальным для первой рабочей точки в VPS, иначе поток битов будет ненадлежащим. Видеодекодер 30 декодирует только синтаксические элементы в VPS надлежащего потока битов, которые не включают в себя дублирующие наборы параметров HRD для первой рабочей точки и второй рабочей точки. В случае, когда видеодекодер 30 принимает ненадлежащий поток битов, видеодекодер 30 может перейти в состояние отказа и отвергнуть весь поток битов.
[0141] В качестве другого примера видеодекодер 30 может принимать указание, используется ли простой режим рабочей точки для каждой из множества рабочих точек в потоке битов. Когда простой режим рабочей точки используется для конкретной точки из рабочих точек, видеодекодер 30 может декодировать только один целевой идентификатор уровня для конкретной рабочей точки. В качестве другого примера видеодекодер 30 может декодировать пространство профиля, класс, совместимые профили и/или связанные с профилем ограничения для потока битов, но не декодировать отдельные пространство профиля, класс, совместимые профили или связанные с профилем ограничения для временных подуровней потока битов. Как описано выше, видеодекодер 30 может декодировать параметры HRD для потока битов, причем каждая копия синтаксической структуры параметров HRD включает в себя разное содержимое.
[0142] Фиг. 4 - блок-схема, иллюстрирующая примерный набор устройств, которые образуют часть сети 100. В этом примере сеть 100 включает в себя маршрутизаторы 104A, 104B (маршрутизаторы 104) и транскодирующее устройство 106. Маршрутизаторы 104 и транскодирующее устройство 106 предназначены для представления небольшого количества устройств, которые могут образовывать часть сети 100. В сеть 100 также могут включаться другие сетевые устройства, например коммутаторы, концентраторы, шлюзы, брандмауэры, мосты и другие такие устройства. Кроме того, на сетевом тракте между серверным устройством 102 и клиентским устройством 108 могут предоставляться дополнительные сетевые устройства. В некоторых примерах серверное устройство 102 может соответствовать устройству-источнику 12 (фиг. 1), тогда как клиентское устройство 108 может соответствовать устройству-адресату 14 (фиг. 1).
[0143] Обычно маршрутизаторы 104 реализуют один или более протоколов маршрутизации для обмена сетевыми данными по сети 100. В некоторых примерах маршрутизаторы 104 могут быть сконфигурированы с возможностью выполнения посреднических операций либо операций кэширования. Поэтому в некоторых примерах маршрутизаторы 104 могут называться устройствами-посредниками. Обычно маршрутизаторы 104 исполняют протоколы маршрутизации для обнаружения маршрутов в сети 100. Путем исполнения таких протоколов маршрутизации маршрутизатор 104B может обнаружить сетевой маршрут от себя до серверного устройства 102 через маршрутизатор 104A.
[0144] Методики из данного раскрытия изобретения могут быть реализованы сетевыми устройствами, например маршрутизаторами 104 и транскодирующим устройством 106, но могут быть реализованы также клиентским устройством 108. Таким образом, маршрутизаторы 104, транскодирующее устройство 106 и клиентское устройство 108 представляют собой примеры устройств, сконфигурированных с возможностью выполнения методик из данного раскрытия изобретения, включая методики, перечисленные в разделе формулы изобретения в данном раскрытии изобретения. Кроме того, устройства из фиг. 1, показанный на фиг. 2 кодер и показанный на фиг. 3 декодер также являются типовыми устройствами, которые могут быть сконфигурированы с возможностью выполнения методик из данного раскрытия изобретения, включая методики, перечисленные в разделе формулы изобретения в данном раскрытии изобретения.
[0145] Как описано в данном раскрытии изобретения, "видеокодер" может использоваться для ссылки в целом на устройство кодирования видео и устройство декодирования видео. Кроме того, "кодирование видео" может относиться к кодированию видео или декодированию видео.
[0146] Фиг. 5 - блок-схема алгоритма, иллюстрирующая примерный способ 200 декодирования видеоданных в соответствии с методиками, описанными в данном раскрытии изобретения. Способ 200 может выполняться любым устройством или системой, сконфигурированными с возможностью обработки видеоданных, например видеодекодером 30 из фиг. 1 или 3.
[0147] Способ 200 включает в себя декодирование синтаксических элементов в наборе параметров видео (VPS) в рамках надлежащего потока битов, указывающих первую рабочую точку, имеющую первый набор содержимого (202). Например, видеодекодер 30 может декодировать синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие первую рабочую точку, имеющую первый набор содержимого. В некоторых примерах синтаксические элементы, указывающие первую рабочую точку, имеют в VPS синтаксическую структуру operation_point() в рамках надлежащего потока битов.
[0148] Способ 200 дополнительно включает в себя декодирование синтаксических элементов в VPS в рамках надлежащего потока битов, указывающих информацию о параметрах гипотетического эталонного декодера (HRD), имеющую второй набор содержимого для первой рабочей точки (204). В соответствии с методиками из данного раскрытия изобретения надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки. Например, видеодекодер 30 декодирует, при наличии, синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки. Видеодекодер 30 сконфигурирован с возможностью декодирования только надлежащих потоков битов, и надлежащие потоки битов не включают в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки. В некоторых примерах синтаксические элементы, указывающие информацию о параметрах HRD, имеют в VPS синтаксическую структуру hrd_parameters() в рамках надлежащего потока битов. В некоторых примерах декодирование синтаксических элементов включает в себя декодирование синтаксических элементов, указывающих первую рабочую точку и информацию о параметрах HRD только в рамках надлежащих потоков битов.
[0149] Способ 200 дополнительно включает в себя декодирование видеоданных в надлежащем потоке битов на основе декодированных синтаксических элементов (206). Например, видеодекодер 30 декодирует видеоданные в надлежащем потоке битов по меньшей мере частично на основе синтаксических элементов, указывающих первую рабочую точку, имеющую первый набор содержимого. Видеодекодер 30 дополнительно декодирует видеоданные в надлежащем потоке битов по меньшей мере частично на основе синтаксических элементов, при наличии, указывающих информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки.
[0150] В некоторых примерах первый набор содержимого содержит набор идентификаторов уровней для первой рабочей точки, который идентифицирует одну или более единиц уровня абстракции сети (NAL) надлежащего потока битов, которые принадлежат субпотоку битов первой рабочей точки. В некоторых примерах второй набор содержимого содержит набор параметров HRD для первой рабочей точки, который задает HRD, используемый для проверки, является ли надлежащим субпоток битов первой рабочей точки. В других примерах надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют первый набор содержимого для второй рабочей точки, причем первый набор содержимого уникален для первой рабочей точки в VPS. В дополнительных примерах надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют информацию о параметрах HRD, имеющую второй набор содержимого для второй рабочей точки, причем второй набор содержимого уникален для первой рабочей точки в VPS.
[0151] В некоторых примерах, когда набор идентификаторов уровней для первой рабочей точки включает в себя два или более идентификатора уровней, способ 200 дополнительно содержит декодирование двух или более идентификаторов уровней по-разному. То есть видеодекодер 30 по-разному декодирует два или более идентификатора уровней, когда набор идентификаторов уровней для первой рабочей точки включает в себя два или более идентификатора уровней.
[0152] В другом примере способ 200 может включать в себя декодирование одного или более синтаксических элементов в рамках надлежащего потока битов, которые указывают, используется ли простой режим рабочей точки для первой и второй рабочих точек. Когда простой режим рабочей точки используется для конкретной точки из первой и второй рабочих точек, способ 200 может включать в себя декодирование только целевого идентификатора уровня для конкретной рабочей точки. В одном примере видеодекодер 30 декодирует один или более синтаксических элементов в рамках надлежащего потока битов, которые указывают, используется ли простой режим рабочей точки для первой и второй рабочих точек. Когда простой режим рабочей точки используется для конкретной точки из первой и второй рабочих точек, видеодекодер 30 декодирует только целевой идентификатор уровня для конкретной рабочей точки. В некоторых примерах конкретная рабочая точка идентифицируется целевым идентификатором уровня и временным идентификатором, который указывает временной подуровень надлежащего потока битов.
[0153] Способ 200 может дополнительно включать в себя явное декодирование каждого идентификатора уровня в наборе идентификаторов уровней для первой рабочей точки на основе указания, что простой режим рабочей точки не используется для первой рабочей точки. Например, видеодекодер 30 декодирует идентификатор уровня в наборе идентификаторов уровней для первой рабочей точки на основе указания, что простой режим рабочей точки не используется для первой рабочей точки. Способ 200 может дополнительно включать в себя различающееся декодирование множества целевых идентификаторов уровней для конкретной рабочей точки, когда простой режим рабочей точки не используется для конкретной точки из рабочих точек. Например, видеодекодер 30 по-разному декодирует множество целевых идентификаторов уровней для конкретной рабочей точки, когда простой режим рабочей точки не используется для конкретной точки из рабочих точек (например, когда vsp_simple_op_mode_flag[i] отсутствует в VPS либо равен нулю).
[0154] В некоторых примерах способ 200 дополнительно включает в себя декодирование синтаксических элементов, указывающих одно или более из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для всей декодированной видеопоследовательности надлежащего потока битов, причем надлежащий поток битов не включает в себя синтаксические элементы, указывающие одно или более из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для одного или более временных подуровней декодированной видеопоследовательности. Например, видеодекодер 30 декодирует синтаксические элементы, указывающие одно или более из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для всей декодированной видеопоследовательности надлежащего потока битов. Надлежащий поток битов не включает в себя синтаксические элементы, указывающие одно или более из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для одного или более временных подуровней декодированной видеопоследовательности.
[0155] Синтаксические элементы могут указывать, что одно или более из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для временных подуровней удаляются из синтаксической структуры profile_tier_level() в VPS в рамках надлежащего потока битов. В некоторых примерах способ 200 дополнительно включает в себя декодирование одного или более синтаксических элементов, указывающих, присутствует ли информация о профиле для каждого из временных подуровней надлежащего потока битов. Когда информация о профиле присутствует для конкретного подуровня из временных подуровней, способ 200 может дополнительно включать в себя декодирование информации о профиле для конкретного временного подуровня. Например, видеодекодер 30 декодирует один или более синтаксических элементов, указывающих, присутствует ли информация о профиле для каждого из временных подуровней надлежащего потока битов, и когда информация о профиле присутствует для конкретного подуровня из временных подуровней, видеодекодер 30 декодирует информацию о профиле для конкретного временного подуровня.
[0156] Аналогичным образом способ 200 дополнительно включает в себя декодирование одного или более синтаксических элементов, указывающих, присутствует ли информация об уровне для каждого из временных подуровней потока битов. Когда информация об уровне присутствует для конкретного подуровня из временных подуровней, способ 200 дополнительно включает в себя декодирование информации об уровне для конкретного временного подуровня. Например, видеодекодер 30 декодирует один или более синтаксических элементов, указывающих, присутствует ли информация об уровне для каждого из временных подуровней потока битов, и когда информация об уровне присутствует для конкретного подуровня из временных подуровней, видеодекодер 30 декодирует информацию об уровне для конкретного временного подуровня. В некоторых примерах временные подуровни надлежащего потока битов идентифицируются временными идентификаторами.
[0157] Фиг. 6 - блок-схема алгоритма, иллюстрирующая примерный способ 300 кодирования видеоданных в соответствии с методиками, описанными в данном раскрытии изобретения. Способ 300 может выполняться любым устройством или системой, сконфигурированными с возможностью обработки видеоданных, например видеокодером 20 из фиг. 1 и 2.
[0158] Способ 300 включает в себя кодирование синтаксических элементов в наборе параметров видео (VPS) в рамках надлежащего потока битов, указывающих первую рабочую точку, имеющую первый набор содержимого (302). Например, видеокодер 20 может кодировать синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие первую рабочую точку, имеющую первый набор содержимого. В некоторых примерах синтаксические элементы, указывающие первую рабочую точку, имеют в VPS синтаксическую структуру operation_point() в рамках надлежащего потока битов.
[0159] Способ 300 дополнительно включает в себя кодирование синтаксических элементов в VPS в рамках надлежащего потока битов, указывающих информацию о параметрах гипотетического эталонного декодера (HRD), имеющую второй набор содержимого для первой рабочей точки (304). В соответствии с методиками из данного раскрытия изобретения надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки. Например, видеокодер 20 кодирует, при наличии, синтаксические элементы в VPS в рамках надлежащего потока битов, указывающие информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки. Видеокодер 20 сконфигурирован с возможностью кодирования только надлежащих потоков битов, и надлежащие потоки битов не включают в себя синтаксические элементы в VPS, которые дублируют по меньшей мере один из первого или второго набора содержимого для второй рабочей точки. В некоторых примерах синтаксические элементы, указывающие информацию о параметрах HRD, имеют в VPS синтаксическую структуру hrd_parameters() в рамках надлежащего потока битов.
[0160] Способ 300 дополнительно включает в себя кодирование видеоданных в надлежащем потоке битов на основе кодированных синтаксических элементов (306). Например, видеокодер 20 кодирует видеоданные в надлежащем потоке битов по меньшей мере частично на основе синтаксических элементов, указывающих первую рабочую точку, имеющую первый набор содержимого. Видеокодер 20 дополнительно кодирует видеоданные в надлежащем потоке битов по меньшей мере частично на основе синтаксических элементов, указывающих информацию о параметрах HRD, имеющую второй набор содержимого для первой рабочей точки.
[0161] В некоторых примерах первый набор содержимого содержит набор идентификаторов уровней для первой рабочей точки, который идентифицирует одну или более единиц уровня абстракции сети (NAL) надлежащего потока битов, которые принадлежат субпотоку битов первой рабочей точки. В некоторых примерах второй набор содержимого содержит набор параметров HRD для первой рабочей точки, который задает HRD, используемый для проверки, является ли надлежащим субпоток битов первой рабочей точки. В других примерах надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют первый набор содержимого для второй рабочей точки, причем первый набор содержимого уникален для первой рабочей точки в VPS. В дополнительных примерах надлежащий поток битов не включает в себя синтаксические элементы в VPS, которые дублируют информацию о параметрах HRD, имеющую второй набор содержимого для второй рабочей точки, причем второй набор содержимого уникален для первой рабочей точки в VPS.
[0162] В некоторых примерах, когда набор идентификаторов уровней для первой рабочей точки включает в себя два или более идентификатора уровней, способ 300 дополнительно содержит кодирование двух или более идентификаторов уровней по-разному. То есть видеокодер 20 по-разному кодирует два или более идентификатора уровней, когда набор идентификаторов уровней для первой рабочей точки включает в себя два или более идентификатора уровней.
[0163] В другом примере способ 300 может включать в себя кодирование одного или более синтаксических элементов в рамках надлежащего потока битов, которые указывают, используется ли простой режим рабочей точки для первой и второй рабочих точек. Когда простой режим рабочей точки используется для конкретной точки из первой и второй рабочих точек, способ 300 может включать в себя кодирование только целевого идентификатора уровня для конкретной рабочей точки. В одном примере видеокодер 20 кодирует один или более синтаксических элементов в рамках надлежащего потока битов, которые указывают, используется ли простой режим рабочей точки для первой и второй рабочих точек. Когда простой режим рабочей точки используется для конкретной точки из первой и второй рабочих точек, видеокодер 20 кодирует только целевой идентификатор уровня для конкретной рабочей точки. В некоторых примерах конкретная рабочая точка идентифицируется целевым идентификатором уровня и временным идентификатором, который указывает временной подуровень надлежащего потока битов.
[0164] Способ 300 может дополнительно включать в себя явное кодирование каждого идентификатора уровня в наборе идентификаторов уровней для первой рабочей точки на основе указания, что простой режим рабочей точки не используется для первой рабочей точки. Например, видеокодер 20 кодирует идентификатор уровня в наборе идентификаторов уровней для первой рабочей точки на основе указания, что простой режим рабочей точки не используется для первой рабочей точки. Способ 300 может дополнительно включать в себя различающееся кодирование множества целевых идентификаторов уровней для конкретной рабочей точки, когда простой режим рабочей точки не используется для конкретной точки из рабочих точек. Например, видеокодер 20 по-разному кодирует множество целевых идентификаторов уровней для конкретной рабочей точки, когда простой режим рабочей точки не используется для конкретной точки из рабочих точек (например, когда vsp_simple_op_mode_flag[i] отсутствует в VPS либо равен нулю).
[0165] В некоторых примерах способ 300 дополнительно включает в себя кодирование синтаксических элементов, указывающих одно или более из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для всей кодированной видеопоследовательности надлежащего потока битов, причем надлежащий поток битов не включает в себя синтаксические элементы, указывающие одно или более из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для одного или более временных подуровней кодированной видеопоследовательности. Например, видеокодер 20 кодирует синтаксические элементы, указывающие одно или более из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для всей кодированной видеопоследовательности надлежащего потока битов. Надлежащий поток битов не включает в себя синтаксические элементы, указывающие одно или более из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для одного или более временных подуровней декодированной видеопоследовательности.
[0166] Синтаксические элементы могут указывать, что одно или более из пространства профиля, класса, совместимых профилей и связанных с профилем ограничений для временных подуровней удаляются из синтаксической структуры profile_tier_level() в VPS в рамках надлежащего потока битов. В некоторых примерах способ 300 дополнительно включает в себя кодирование одного или более синтаксических элементов, указывающих, присутствует ли информация о профиле для каждого из временных подуровней надлежащего потока битов. Когда информация о профиле присутствует для конкретного подуровня из временных подуровней, способ 300 может дополнительно включать в себя кодирование информации о профиле для конкретного временного подуровня. Например, видеокодер 20 кодирует один или более синтаксических элементов, указывающих, присутствует ли информация о профиле для каждого из временных подуровней надлежащего потока битов, и когда информация о профиле присутствует для конкретного подуровня из временных подуровней, видеокодер 20 кодирует информацию о профиле для конкретного временного подуровня.
[0167] Аналогичным образом способ 300 дополнительно включает в себя кодирование одного или более синтаксических элементов, указывающих, присутствует ли информация об уровне для каждого из временных подуровней потока битов. Когда информация об уровне присутствует для конкретного подуровня из временных подуровней, способ 300 дополнительно включает в себя кодирование информации об уровне для конкретного временного подуровня. Например, видеокодер 20 кодирует один или более синтаксических элементов, указывающих, присутствует ли информация об уровне для каждого из временных подуровней потока битов, и когда информация об уровне присутствует для конкретного подуровня из временных подуровней, видеокодер 20 кодирует информацию об уровне для конкретного временного подуровня. В некоторых примерах временные подуровни надлежащего потока битов идентифицируются временными идентификаторами.
[0168] Следует отметить, что в зависимости от примера некоторые действия или события в любой из методик, описанных в этом документе, могут выполняться в иной последовательности, могут добавляться, объединяться или полностью пропускаться (например, не все описанные действия или события необходимы для применения методик на практике). Кроме того, в некоторых примерах действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или более процессоров, а не последовательно.
[0169] В одном или более примерах описываемые функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любом их сочетании. Если они реализованы в программном обеспечении, то функции могут храниться или передаваться в виде одной или более команд либо кода на компьютерно-читаемом носителе и исполняться аппаратным модулем обработки. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые запоминающие носители, которые соответствуют материальному носителю, такому как запоминающие носители, или средства связи, включающие в себя любой носитель, который облегчает перенос компьютерной программы из одного места в другое, например, в соответствии с каким-либо протоколом связи. Таким образом, компьютерно-читаемые носители в целом могут соответствовать (1) материальным компьютерно-читаемым запоминающим носителям, которые являются долговременными, или (2) средству связи, такому как сигнал или несущая. Запоминающие носители могут быть любыми доступными носителями, к которым можно обращаться с помощью одного или более компьютеров либо одного или более процессоров для извлечения команд, кода и/или структур данных для реализации методик, описанных в данном раскрытии изобретения. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0170] В качестве примера, а не ограничения, такие компьютерно-читаемые запоминающие носители могут быть выполнены в виде RAM, ROM, EEPROM, компакт-диска или другого накопителя на оптических дисках, накопителя на магнитных дисках или других магнитных запоминающих устройств, флэш-памяти или любого другого носителя, который может использоваться для хранения нужного программного кода в виде команд или структур данных и к которому можно обращаться с помощью компьютера. Также любое соединение корректно называть компьютерно-читаемым носителем. Например, если команды передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, например ИК-связи, радиочастотной связи и СВЧ-связи, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, например ИК-связь, радиочастотная связь и СВЧ-связь, включаются в определение носителя. Однако следует понимать, что компьютерно-читаемые запоминающие носители и запоминающие носители не включают в себя соединения, несущие, сигналы или другие кратковременные носители, а вместо этого ориентированы на долговременные, материальные запоминающие носители. Оптические и магнитные диски при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск Blu-ray, причем магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптически с помощью лазеров. Сочетания вышеперечисленного также следует включить в область компьютерно-читаемых носителей.
[0171] Команды могут исполняться одним или более процессорами, например одним или более цифровыми процессорами сигналов (DSP), универсальными микропроцессорами, специализированными интегральными схемами (ASIC), программируемыми пользователем логическими матрицами (FPGA) или другими эквивалентными интегральными либо дискретными логическими схемами. Соответственно, термин "процессор" при использовании в данном документе может относиться к любой вышеупомянутой структуре или к любой другой структуре, подходящей для реализации описанных в этом документе методик. Кроме того, в некоторых аспектах функциональные возможности, описанные в этом документе, могут быть предоставлены в специализированных аппаратных и/или программных модулях, сконфигурированных с возможностью кодирования и декодирования, или встроены в объединенный кодек. Также методики можно было бы полностью реализовать в одной или более схемах или логических элементах.
[0172] Методики из данного раскрытия изобретения могут быть реализованы в широком спектре устройств, включая беспроводную телефонную трубку, интегральную схему (ИС) или набор ИС (например, набор микросхем). Различные компоненты, модули или блоки описываются в данном раскрытии изобретения для подчеркивания функциональных особенностей устройств, сконфигурированных с возможностью выполнения раскрытых методик, но не обязательно требуют реализации с помощью разных аппаратных модулей. Точнее, как описано выше, различные модули могут объединяться в аппаратный модуль кодека или предоставляться с помощью совокупности взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или микропрограммным обеспечением.
[0173] Описаны различные примеры. Эти и другие примеры входят в объем нижеследующей формулы изобретения.