Параллельная обработка волновых фронтов для кодирования видео

Иллюстрации

Показать все

Изобретение относится к вычислительной технике. Технический результат заключается в эффективном выполнении параллельной обработки волновых фронтов изображения. Способ декодирования кодированных видеоданных, в котором принимают поток битов кодированного видео, содержащий кодированное изображение, которое разделено на множество единиц дерева кодирования (CTU), причем множество CTU расположены в множественных строках; определяют, что кодированное изображение включает в себя один или более слайсов, которые начинаются в соответственной строке CTU кодированного изображения в положении, отличном от начала упомянутой соответственной строки; определяют, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, так что ни один слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, не переходит на последующую строку CTU кодированного изображения; и на основе этого определения, выполняют синтаксический анализ потока битов кодированного видео для декодирования синтаксических элементов разбиения на слайсы из каждой соответственной строки CTU, в которой соответственный слайс начинается в положении, отличном от упомянутого начала. 5 н. и 31 з.п. ф-лы, 6 ил.

Реферат

[0001] Данная заявка испрашивает приоритет по Предварительным заявкам США с порядковыми номерами 61/622,974, поданной 11 апреля 2012 г., и 61/640,529, поданной 30 апреля 2012 г., все содержимое которых настоящим включается в этот документ путем отсылки.

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

[0002] Данное раскрытие изобретения относится к кодированию видео.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0020] Вероятности CABAC можно синхронизировать с верхней правой CTU. Поскольку кодер видео может обрабатывать волновые фронты параллельно, кодеру видео может потребоваться информация из конца верхней строки CTU, чтобы декодировать начало второй строки CTU. Примеры такой информации могут включать в себя информацию о слайсе, параметры квантования (QP) и т.п. Например, если новый слайс начинается к концу верхней строки CTU (волнового фронта), то кодеру видео может потребоваться некоторая информация о верхней строке CTU перед кодированием строки CTU (волнового фронта) непосредственно ниже. Точнее говоря, информация из верхней строки CTU может влиять на процесс декодирования строки CTU ниже.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0035] Стандарт 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.

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

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

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

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

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

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

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

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

[0044] Листовая 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.

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