[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, которые не разделяются, называются листовыми TU. Вообще, данное раскрытие изобретения использует термины "CU" и "TU", чтобы ссылаться на листовую CU и листовую TU соответственно, пока не указано иное.
[0046] Видеопоследовательность, как правило, включает в себя последовательность видеокадров или изображений. Группа изображений (GOP), как правило, содержит последовательность из одного или нескольких видеоизображений. GOP может включать в себя синтаксические данные в заголовке GOP, заголовке одного или нескольких изображений или где-либо в другом месте, которые описывают количество изображений, включенных в GOP. Каждый слайс изображения может включать в себя синтаксические данные слайса, которые описывают режим кодирования для соответствующего слайса. Видеокодер 20 обычно действует на видеоблоки в отдельных слайсах видео, чтобы кодировать видеоданные. Видеоблок может соответствовать узлу кодирования в CU. Видеоблоки могут иметь фиксированные или изменяющиеся размеры и могут отличаться по размеру в соответствии с заданным стандартом кодирования.
[0047] В качестве примера 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 снизу.
[0048] В данном раскрытии изобретения "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.
[0049] После кодирования с интра-предсказанием или интер-предсказанием, использующего PU в CU, видеокодер 20 может вычислить остаточные данные для TU в CU. PU могут содержать синтаксические данные, описывающие способ или режим формирования данных пикселя с предсказанием в пространственной области (также называемой областью пикселей), а TU могут содержать коэффициенты в области преобразования после применения преобразования, например дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлет-преобразования или концептуально сходного преобразования к остаточным видеоданным. Остаточные данные могут соответствовать разностям пикселей между пикселями некодированного изображения и значениями предсказания, соответствующими PU. Видеокодер 20 может образовать TU, включающие в себя остаточные данные для CU, а затем преобразовать TU для создания коэффициентов преобразования для CU.
[0050] После любых преобразований для создания коэффициентов преобразования видеокодер 20 может выполнить квантование коэффициентов преобразования. Квантование в целом относится к процессу, в котором коэффициенты преобразования квантуются, чтобы уменьшить по возможности объем данных, используемый для представления коэффициентов, обеспечивая дополнительное сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битовое значение во время квантования можно округлить в меньшую сторону до m-битового значения, где n больше m.
[0051] После квантования видеокодер может сканировать коэффициенты преобразования, создавая одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть предназначено для помещения коэффициентов с большей энергией (и поэтому с меньшей частотой) впереди массива и помещения коэффициентов с меньшей энергией (и поэтому большей частотой) сзади массива. В некоторых примерах видеокодер 20 может использовать предопределенный порядок сканирования, чтобы сканировать квантованные коэффициенты преобразования для создания сериализованного вектора, который можно энтропийно кодировать. В других примерах видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для образования одномерного вектора видеокодер 20 может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивным кодированием с переменной длиной (CAVLC), контекстно-адаптивным двоичным арифметическим кодированием (CABAC), синтаксическим контекстно-адаптивным двоичным арифметическим кодированием (SBAC), энтропийным кодированием с разбиением на интервалы вероятности (PIPE) или другой методологией энтропийного кодирования. Видеокодер 20 также может энтропийно кодировать синтаксические элементы, ассоциированные с кодированными видеоданными, для использования видеодекодером 30 при декодировании видеоданных.
[0052] Для выполнения CABAC видеокодер 20 может назначить контекст в рамках контекстной модели символу, который будет передан. Контекст может относиться, например, к тому, являются ли соседние значения символа ненулевыми. Для выполнения CAVLC видеокодер 20 может выбрать код переменной длины для символа, который будет передан. Кодовые слова при VLC могут быть построены так, что относительно более короткие коды соответствуют более вероятным символам, тогда как более длинные коды соответствуют менее вероятным символам. Таким образом, использование VLC может добиться экономии битов по сравнению, например, с использованием кодовых слов равной длины для каждого символа, который будет передан. Определение вероятности может основываться на контексте, назначенном символу.
[0053] Видеокодер 20 и видеодекодер 30 могут использовать параллельную обработку волновых фронтов (WPP) соответственно для кодирования и декодирования изображений. Чтобы кодировать изображение с использованием WPP, кодер видео, например видеокодер 20 и видеодекодер 30, может разделить единицы дерева кодирования (CTU) изображения на множество волновых фронтов. Каждый волновой фронт может соответствовать разной строке CTU в изображении. Кодер видео может начать кодирование верхнего волнового фронта, например, используя первое ядро или поток кодера. После того, как кодер видео кодировал две или более CTU верхнего волнового фронта, кодер видео может начать кодирование второго сверху волнового фронта параллельно с кодированием верхнего волнового фронта, например, используя второе, параллельное ядро или поток кодера. После того, как кодер видео кодировал две или более CTU второго сверху волнового фронта, кодер видео может начать кодирование третьего сверху волнового фронта параллельно с кодированием более высоких волновых фронтов, например, используя третье, параллельное ядро или поток кодера. Этот шаблон может продолжаться вниз по волновым фронтам в изображении.
[0054] Данное раскрытие изобретения ссылается на набор CTU, который кодер видео одновременно кодирует с использованием WPP, как на "группу CTU". Таким образом, когда кодер видео использует WPP для кодирования изображения, каждая из CTU в группе CTU может быть разным волновым фронтом изображения, и каждая из CTU в группе CTU может быть вертикально смещена от CTU в соответствующем, вышестоящем волновом фронте по меньшей мере на два столбца CTU изображения.
[0055] Кроме того, при кодировании изображения с использованием WPP кодер видео может использовать информацию, ассоциированную с одной или несколькими пространственно-соседними CU вне конкретной CTU, чтобы выполнять интра- или интер-предсказание над конкретной CU в конкретной CTU до тех пор, пока пространственно-соседние CU находятся слева, слева выше, выше или справа выше от конкретной CTU. Когда одна или несколько пространственно-соседних CU находятся справа выше от конкретной CTU, также допускается, что одна или несколько пространственно-соседних CU кодировались ранее. Если конкретная CTU является крайней левой CTU в волновом фронте, отличном от самого верхнего волнового фронта, то кодер видео может использовать информацию, ассоциированную с первой и/или второй CTU соседнего волнового фронта (например, волнового фронта, расположенного непосредственно выше), чтобы выбрать контекст кодирования для энтропийного кодирования синтаксических элементов в конкретной CTU. Если конкретная CTU не является крайней левой CTU в волновом фронте, то кодер видео может выбирать из информации, ассоциированной с пространственно-соседней CU, которая располагается слева, слева выше, выше и/или справа выше от конкретной CTU, чтобы выбрать контекст кодирования для энтропийного кодирования синтаксического элемента в конкретной CTU. Таким образом, кодер видео может инициализировать энтропийное кодирование (например, CABAC) состояний волнового фронта на основе энтропийного кодирования состояний волнового фронта, расположенного непосредственно выше, после кодирования двух или более CTU волнового фронта, расположенного непосредственно выше.
[0056] Более того, кодер видео может разбить изображение на слайсы. Обычно каждый слайс энтропийно кодируется отдельно, так что контексты сбрасываются в начале кодирования нового слайса. Видеокодер 20, или модуль постобработки в устройстве-источнике 12 (например, модуль упаковки, не показанный на фиг. 1), может упаковать слайсы в соответствующие единицы на уровне абстракции сети (NAL). Например, единица NAL может включать в себя заголовок NAL и полезную нагрузку, которая представляет одну или несколько кодированных слайсов. Чтобы отделить кодированные слайсы друг от друга, видеокодер 20 может включить заголовки слайсов в полезную нагрузку единицы NAL, чтобы указать начало слайса. Более того, видеокодер 20 может включить один или несколько символов конца слайса в полезную нагрузку единицы NAL, чтобы указать конец отдельных кодированных слайсов.
[0057] Видеокодер 20 может разбить заданное изображение на слайсы переменной длины. Другими словами, разные слайсы конкретного изображения могут включать в себя или иным образом соответствовать переменным количествам CTU. В результате видеокодер 20 может формировать разные единицы NAL для включения в них разных количеств кодированных слайсов.
[0058] Соответственно, видеодекодер 30 может энтропийно декодировать изображение по слайсам. Точнее говоря, устройство-источник 22 может использовать интерфейс 22 вывода для передачи единиц NAL в интерфейс 28 ввода устройства-адресата 14. В качестве альтернативы интерфейс 22 вывода может выводить единицы NAL на компьютерно-читаемый носитель, такой как диск или компьютерно-читаемое запоминающее устройство, например магнитное запоминающее устройство или флэш-память. Видеодекодер 30 может принимать единицы NAL посредством интерфейса 28 ввода и извлекать каждый кодированный слайс, используя включенную информацию о разбиении на слайсы (например, заголовки слайсов и/или символы конца слайса). В свою очередь видеодекодер 30 может энтропийно декодировать каждый извлеченный слайс и восстановить изображение по слайсам.
[0059] Применительно к WPP при некоторых обстоятельствах кодер видео мог бы не допускать выбора контекстов кодирования через границы слайсов. Например, если контекстная информация для конкретной CTU принадлежит иному слайсу, нежели CTU, расположенная справа выше конкретной CTU, то кодер видео может не иметь доступа к информации, необходимой для кодирования конкретной CTU. Точнее говоря, в плане расположения в пределах волновых фронтов заголовок слайса для конкретной CTU может не кодироваться, когда кодер видео достигает конкретной CTU. Например, заголовок слайса может располагаться в волновом фронте, который находится непосредственно над волновым фронтом CTU, и заголовок слайса может располагаться более чем на два блока правее по сравнению с конкретной CTU. В этом примере кодер видео может иметь доступ к пространственно-соседним CU, из которых кодер видео может извлечь контекст для кодирования конкретной CTU. Однако кодер видео может еще не кодировать заголовок слайса, соответствующего конкретной CTU, и соответственно может быть неспособен кодировать конкретную CTU, пока не закодируется заголовок слайса. В результате кодеру видео может потребоваться кодировать дополнительные блоки предыдущего волнового фронта (то есть пока не закодируется заголовок слайса) перед началом кодирования конкретной CTU. В этом сценарии кодер видео неспособен воспользоваться преимуществами WPP, например, кодированием конкретной CTU параллельно с CTU, расположенной справа выше.
[0060] Вместо разрешения слайса пересекать границу волнового фронта, когда слайс начинается в середине волнового фронта, кодер видео может реализовать методики из данного раскрытия изобретения, чтобы ограничить процесс кодирования так, что когда слайс начинается в любой точке после начала (то есть первой CTU) волнового фронта, слайс заканчивается в пределах того волнового фронта. Только для простоты обсуждения любая точка после начала волнового фронта в этом документе обычно называется "серединой" волнового фронта. То есть "середина" волнового фронта при использовании в данном документе является не обязательно центром, а любой CTU (или любым блоком) волнового фронта помимо порядкового первого блока волнового фронта. Такой слайс также может считаться начинающимся "в пределах" волнового фронта.
[0061] Например, видеокодер 20 может определить, что заголовок слайса встречается в пределах середины волнового фронта, и что слайс включает в себя все оставшиеся CTU волнового фронта, а также по меньшей мере одну CTU волнового фронта, расположенного непосредственно ниже. В ответ видеокодер 20 может вставить символ конца слайса после завершения энтропийного кодирования CTU, вплоть до последней CTU волнового фронта или включая ее. То есть видеокодер 20 может обеспечить, что такой слайс заканчивается в пределах волнового фронта, в котором этот слайс начинается, так что слайс не пересекает границы волновых фронтов, когда слайс начинается на блоке, отличном от порядкового первого блока волнового фронта. Более того, видеокодер 20 может вставить заголовок слайса после символа конца слайса, посредством этого указывая, что следующий волновой фронт (например, волновой фронт, расположенный непосредственно ниже) соответствует началу нового кодированного слайса. Аналогичным образом при энтропийном декодировании изображения в соответствии с WPP видеодекодер 30 может считывать заголовки слайсов и/или символы конца слайса в принятой единице NAL, чтобы определять, что кодированный слайс начинается в середине волнового фронта, и что слайс также заканчивается в пределах того же волнового фронта, в котором начинается этот слайс. В некоторых примерах видеокодер 20 может определить, что две или более слайса начинаются в середине одного волнового фронта. В таких примерах видеокодер 20 может определить, выходит ли последний такой слайс в последующий волновой фронт, и реализовать описанные в этом документе ограничения по отношению к последнему такому волновому фронту.
[0062] Таким образом, можно наложить ограничение, что любой слайс, который начинается на CTU или другом блоке, отличном от порядковой первой CTU волнового фронта, будет заканчиваться в пределах того волнового фронта. В результате реализации этих ограничений кодер видео, например видеокодер 20 и/или видеодекодер 30, может повысить эффективность при реализации WPP. Точнее говоря, кодер видео может реализовать те ограничения для обеспечения того, что при кодировании CTU текущего волнового фронта кодер видео имеет доступ к любым данным предыдущих волновых фронтов, которые могут быть необходимы для кодирования текущей CTU. То есть можно гарантировать, что данные заголовка слайса для слайса, включающего в себя текущую CTU, будут доступны при энтропийном кодировании одного или нескольких синтаксических элементов текущей CTU, так что кодер видео может правильно определить контекст для энтропийного кодирования синтаксических элементов.
[0063] В некоторых примерах слайс может начинаться на первой CTU первого волнового фронта и переходить через границу во второй волновой фронт, расположенный непосредственно под первым волновым фронтом. В таких примерах слайс может включать в себя несколько CTU второго волнового фронта, но может завершаться в пределах второго волнового фронта. Другими словами, второй волновой фронт может включать в себя дополнительные CTU, которые принадлежат другому, второму слайсу.
[0064] В этом примере при кодировании CTU слайса, который располагается во втором волновом фронте, кодер видео может иметь доступ ко всем данным из первого волнового фронта, которые необходимы для процесса кодирования. То есть кодер видео уже кодирует данные заголовка слайса во время кодирования предыдущего волнового фронта, и поэтому слайсу, который начинается на порядковой первой CTU волнового фронта, можно все же разрешить перейти через границу волнового фронта в последующий волновой фронт. Более того, используя описанные в этом документе ограничения, кодер видео может обеспечить, что второй слайс завершается в пределах второго волнового фронта. Например, если кодер видео определяет, что второй слайс начинается в середине второго волнового фронта и соответственно заканчивается с последней CTU второго волнового фронта, то кодер видео может завершить кодирование второго волнового фронта синхронно с завершением кодирования второго слайса. В результате начало третьего волнового фронта, в сущности, совпало бы с началом третьего слайса. Точнее говоря, первая (крайняя левая) CTU третьего волнового фронта представляла бы первую CTU третьего слайса. Если третий слайс переходит через границу в четвертый (или больший) волновой фронт, то кодер видео может иметь постоянный доступ к важным для кодирования данным из частей третьего слайса, расположенного в предыдущих волновых фронтах, посредством этого повышая возможность выполнить WPP у кодера видео. Таким образом, кодер видео может реализовать методики из данного раскрытия изобретения, чтобы кодировать текущий слайс, так что при реализации WPP последующие слайсы эффективно кодируются в соответствии с WPP.
[0065] Кодер видео, например видеокодер 20 и/или видеодекодер 30, может активизировать ограничение (ограничения) на основе упомянутого, реализует ли кодер видео WPP в настоящее время. В качестве одного примера видеодекодер 30 может определить, задействована ли WPP в настоящее время, используя синтаксические данные потока битов, указывающие, задействована ли WPP. Аналогичным образом видеокодер 20 может кодировать синтаксические данные, представляющие то, задействована ли WPP. Такие синтаксические данные могут кодироваться в наборе параметров видео (VPS), наборе параметров последовательности (SPS), наборе параметров изображения (PPS), сообщениях с дополнительной информацией расширения (SEI) или т.п. В этом примере в ответ на определение, что WPP задействована, видеокодер 20 может энтропийно кодировать, а видеодекодер 30 может энтропийно декодировать изображение с использованием WPP, соблюдая при этом описанные выше ограничения слайса-волнового фронта. В некоторых реализациях кодер видео может задействовать WPP, например, в ответ на определение, что WPP в настоящее время отключена.
[0066] Видеокодер 20 дополнительно может отправлять видеодекодеру 30 синтаксические данные, например блочные синтаксические данные, кадровые синтаксические данные и основанные на GOP синтаксические данные, например, в заголовке кадра, заголовке блока, заголовке слайса или заголовке GOP. Синтаксические данные GOP могут описывать количество кадров в соответствующей GOP, а синтаксические данные кадра могут указывать режим кодирования/предсказания, используемый для кодирования соответствующего кадра.
[0067] Видеокодер 20 и видеодекодер 30 могут быть реализованы в виде любой из ряда подходящих схем кодера или декодера в соответствующих случаях, например, одного или нескольких микропроцессоров, цифровых процессоров сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретных логических схем, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их сочетаний. Каждый из видеокодера 20 и видеодекодера 30 может включаться в один или несколько кодеров или декодеров, любой из которых может встраиваться как часть объединенного видеокодера/декодера (кодека). Устройство, включающее в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, например сотовый телефон.
[0068] Фиг. 2 - блок-схема, иллюстрирующая пример видеокодера 20, который может реализовать методики для параллельного кодирования волновых фронтов. Видеокодер 20 может выполнять интра- и интер-кодирование видеоблоков в слайсах видео. Интра-кодирование опирается на пространственное предсказание, чтобы уменьшить или устранить пространственную избыточность в видео в данном видеокадре или изображении. Интер-кодирование опирается на временное предсказание, чтобы уменьшить или устранить временную избыточность в видео в соседних кадрах или изображениях видеопоследовательности. Режим интра-предсказания (I-режим) может относиться к любому из нескольких режимов пространственного кодирования. Режимы интер-предсказания, например однонаправленное предсказание (P-режим) или двунаправленное предсказание (B-режим), могут относиться к любому из нескольких режимов временного кодирования.
[0069] Как показано на фиг. 2, видеокодер 20 принимает текущий видеоблок в видеокадре, который будет кодироваться. В примере из фиг. 2 видеокодер 20 включает в себя модуль 40 выбора режима, запоминающее устройство 64 эталонных изображений, сумматор 50, модуль 52 обработки с преобразованием, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 40 выбора режима в свою очередь включает в себя модуль 44 компенсации движения, модуль 42 оценки движения, модуль 46 интра-предсказания и модуль 48 разбиения. Для восстановления видеоблока видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Также может включаться фильтр уменьшения блочности (не показан на фиг. 2) для фильтрации границ блока, чтобы удалить артефакты блочности из восстановленного видео. При желании фильтр уменьшения блочности обычно фильтровал бы вывод сумматора 62. Также могут использоваться дополнительные фильтры (в цикле или после цикла) в дополнение к фильтру уменьшения блочности. Такие фильтры для краткости не показаны, но при желании могут фильтровать вывод сумматора 50 (в качестве фильтра в цикле).
[0070] Во время процесса кодирования видеокодер 20 принимает видеокадр или слайс, которые будут кодироваться. Кадр или слайс можно разделить на несколько видеоблоков. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с интер-предсказанием принятого видеоблока относительно одного или нескольких блоков в одном или нескольких эталонных кадрах, чтобы обеспечить временное предсказание. Модуль 46 интра-предсказания в качестве альтернативы может выполнять кодирование с интра-предсказанием принятого видеоблока относительно одного или нескольких соседних блоков в том же кадре или слайсе в качестве блока, который будет кодироваться, чтобы обеспечить пространственное предсказание. Видеокодер 20 может выполнять несколько проходов кодирования, например, для выбора подходящего режима кодирования для каждого блока видеоданных.
[0071] Кроме того, модуль 48 разбиения может разбить блоки видеоданных на субблоки на основе оценки предыдущих схем разбиения в предыдущих проходах кодирования. Например, модуль 48 разбиения может сначала разбить кадр или слайс на CTU, и разбить каждую из CTU на суб-CU на основе анализа искажения в зависимости от скорости передачи (например, оптимизации искажения в зависимости от скорости передачи). Модуль 40 выбора режима дополнительно может создать структуру данных квадродерева, указывающую разбиение CTU на суб-CU. CU листа в квадродереве могут включать в себя одну или несколько PU и одну или несколько TU.
[0072] Модуль 40 выбора режима может выбрать один из режимов кодирования, интра- или интер-, например, на основе ошибочных результатов и предоставляет результирующий блок с интра- или интер-кодированием сумматору 50, чтобы сформировать данные остаточного блока, и сумматору 62, чтобы восстановить кодированный блок для использования в качестве эталонного кадра. Модуль 40 выбора режима также предоставляет синтаксические элементы, например векторы движения, индикаторы режима интра-предсказания, информацию о разбиении и другую такую синтаксическую информацию, модулю 56 энтропийного кодирования.
[0073] Модуль 42 оценки движения и модуль 44 компенсации движения могут быть существенно объединены, но иллюстрируются отдельно с концептуальной целью. Оценка движения, выполняемая модулем 42 оценки движения, является процессом формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения может указывать, например, смещение PU видеоблока в текущем видеокадре или изображении относительно блока с предсказанием в эталонном кадре (или другой кодированной единице) относительно текущего блока, кодируемого в текущем кадре (или другой кодированной единице). Блок с предсказанием является блоком, который признан точно совпадающим с блоком, который будет кодироваться, в показателях разности пикселей, которая может определяться с помощью суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других показателей разности. В некоторых примерах видеокодер 20 может вычислять значения для положений субцелого пикселя в эталонных изображениях, сохраненных в запоминающем устройстве 64 эталонных изображений. Например, видеокодер 20 может интерполировать значения положений одной четверти пикселя, положений одной восьмой пикселя или других положений дробного пикселя в эталонном изображении. Поэтому модуль 42 оценки движения может выполнить поиск движения относительно положений полного пикселя и положений дробного пикселя и вывести вектор движения с точностью до дробного пикселя.
[0074] Модуль 42 оценки движения вычисляет вектор движения для PU видеоблока в слайсе с интер-кодированием путем сравнения положения PU с положением блока с предсказанием в эталонном изображении. Эталонное изображение может выбираться из первого списка эталонных изображений (Список 0) или второго списка эталонных изображений (Список 1), каждый из которых идентифицирует одно или несколько эталонных изображений, сохраненных в запоминающем устройстве 64 эталонных изображений. Модуль 42 оценки движения отправляет вычисленный вектор движения модулю 56 энтропийного кодирования и модулю 44 компенсации движения.
[0075] Компенсация движения, выполняемая модулем 44 компенсации движения, может включать в себя выборку или формирование блока с предсказанием на основе вектора движения, определенного модулем 42 оценки движения. Снова в некоторых примерах модуль 42 оценки движения и модуль 44 компенсации движения могут быть объединены функционально. После приема вектора движения для PU текущего видеоблока модуль 44 компенсации движения может найти блок с предсказанием, на который указывает вектор движения, в одном из списков эталонных изображений. Сумматор 50 образует остаточный видеоблок путем вычитания значений пикселей блока с предсказанием из значений пикселей текущего кодируемого видеоблока, образуя значения разности пикселей, которые обсуждаются ниже. Обычно модуль 42 оценки движения выполняет оценку движения относительно компонентов яркости, а модуль 44 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости, для компонентов цветности и компонентов яркости. Модуль 40 выбора режима также может формировать синтаксические элементы, ассоциированные с видеоблоками и слайсом видео, для использования видеодекодером 30 при декодировании видеоблоков в слайсе видео.
[0076] Модуль 46 интра-предсказания может выполнить интра- предсказание текущего блока в качестве альтернативы интер-предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как описано выше. В частности, модуль 46 интра-предсказания может определить режим интра-предсказания, чтобы использовать его для кодирования текущего блока. В некоторых примерах модуль 46 интра-предсказания может кодировать текущий блок с использованием различных режимов интра-предсказания, например, во время отдельных проходов кодирования, а модуль 46 интра-предсказания (или модуль 40 выбора режима в некоторых примерах) может выбирать подходящий режим интра-предсказания для использования из проверенных режимов.
[0077] Например, модуль 46 интра-предсказания может вычислить значения искажения в зависимости от скорости передачи, используя анализ искажения в зависимости от скорости передачи для различных проверенных режимов интра-предсказания, и выбрать режим интра-предсказания, имеющий наилучшие характеристики искажения в зависимости от скорости передачи среди проверенных режимов. Анализ искажения в зависимости от скорости передачи, как правило, определяет величину искажения (или ошибки) между кодированным блоком и исходным, некодированным блоком, который кодировался для создания кодированного блока, а также скорость передачи битов (то есть количество битов), используемую для создания кодированного блока. Модуль 46 интра-предсказания может вычислить отношения из искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим интра-предсказания демонстрирует наилучшее значение искажения в зависимости от скорости передачи для блока.
[0078] После выбора режима интра-предсказания для блока модуль 46 интра-предсказания может предоставить модулю 56 энтропийного кодирования информацию, указывающую выбранный режим интра-предсказания для блока. Модуль 56 энтропийного кодирования может кодировать информацию, указывающую выбранный режим интра-предсказания. Видеокодер 20 может включить в переданный поток битов конфигурационные данные, которые могут включать в себя множество таблиц индексов режимов интра-предсказания и множество таблиц индексов измененных режимов интра-предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков и указания наиболее вероятного режима интра-предсказания, таблицы индексов режимов интра-предсказания и таблицы индексов измененного режима интра-предсказания для использования для каждого из контекстов.
[0079] Видеокодер 20 образует остаточный видеоблок путем вычитания данных предсказания от модуля 40 выбора режима из исходного кодируемого видеоблока. Сумматор 50 представляет собой компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 обработки с преобразованием применяет к остаточному блоку преобразование, например дискретное косинусное преобразование (DCT) или концептуально сходное преобразование, создавая видеоблок, содержащий значения остаточных коэффициентов преобразования. Модуль 52 обработки с преобразованием может выполнять и другие преобразования, которые концептуально сходны с DCT. Также могли бы использоваться вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. В любом случае модуль 52 обработки с преобразованием применяет преобразование к остаточному блоку, создавая блок остаточных коэффициентов преобразования. Преобразование может преобразовывать остаточную информацию из области значений пикселей в область преобразования, например частотную область. Модуль 52 обработки с преобразованием может отправить результирующие коэффициенты преобразования модулю 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования для дополнительного уменьшения скорости передачи битов. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования можно изменять путем регулирования параметра квантования. В некоторых примерах модуль 54 квантования затем может выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы сканирование может выполнить модуль 56 энтропийного кодирования.
[0080] После квантования модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), синтаксическое контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разбиением на интервалы вероятности (PIPE) или другую методику энтропийного кодирования. В случае контекстного энтропийного кодирования контекст может основываться на соседних блоках. После энтропийного кодирования с помощью модуля 56 энтропийного кодирования кодированный поток битов может передаваться другому устройству (например, видеодекодеру 30) или архивироваться для последующей передачи или извлечения.
[0081] В примерах модуль 56 энтропийного кодирования может энтропийно кодировать квантованные коэффициенты преобразования с использованием параллельной обработки волновых фронтов (WPP). Как описано по отношению к фиг. 1, WPP может включать в себя параллельное энтропийное кодирование квантованных коэффициентов преобразования. Например, модуль 56 энтропийного кодирования может организовать квантованные коэффициенты преобразования в несколько строк, или волновых фронтов. В свою очередь модуль 56 энтропийного кодирования может кодировать каждый коэффициент, используя синтаксические элементы, принятые от модуля 40 выбора режима, например один или несколько векторов движения, ассоциированных с соседними коэффициентами. В части кодирования с использованием WPP модуль 56 энтропийного кодирования для коэффициента в любом положении помимо начала или конца волнового фронта может использовать векторы движения, ассоциированные с коэффициентами, которые располагаются слева, слева выше, выше и справа выше от коэффициента, который будет кодироваться.
[0082] Чтобы повысить эффективность энтропийного кодирования на основе WPP, модуль 56 энтропийного кодирования может реализовать методики из данного раскрытия изобретения, чтобы ограничить традиционное взаимодействие "слайс-волновой фронт" по отношению к квантованным коэффициентам преобразования. Как описано, кодер видео, например видеокодер 20, может разделить изображение или данные, представляющие это изображение, на несколько слайсов. В части фиг. 2 поток квантованных коэффициентов преобразования можно разделить на несколько слайсов. В свою очередь слайс может охватывать переменные части одного или нескольких волновых фронтов, отделенные модулем 56 энтропийного кодирования. Например, первый слайс может охватывать первый волновой фронт полностью и неполную часть второго волнового фронта. Второй слайс может охватывать оставшуюся часть второго волнового фронта, не охваченную первым слайсом, и неполную часть третьего волнового фронта. Таким образом, традиционное взаимодействие "слайс-волновой фронт", которое предоставлено WPP, может не сопоставить начальные/конечные точки слайса с таковыми у волнового фронта.
[0083] Чтобы повысить эффективность энтропийного кодирования в соответствии с WPP, модуль 56 энтропийного кодирования может реализовать одну или несколько методик из данного раскрытия изобретения. Например, модуль 56 энтропийного кодирования на основе квантованных коэффициентов преобразования, принятых от модуля 54 квантования, может определить, что слайс изображения видеоданных начинается в волновом фронте, то есть строке единиц дерева кодирования (CTU), в изображении в положении, отличном от начала волнового фронта. На основе этого определения модуль 56 энтропийного кодирования может определить, что слайс заканчивается в пределах волнового фронта, и кодировать слайс на основе упомянутого определения. Точнее говоря, модуль 56 энтропийного кодирования может завершить слайс на последнем коэффициенте волнового фронта, например, путем вставки символа конца слайса в единицу NAL после кодирования последнего коэффициента волнового фронта. Таким образом, модуль 56 энтропийного кодирования может обеспечить, что при кодировании конкретной CTU модуль 56 энтропийного кодирования имеет доступ ко всей информации для кодирования конкретной CTU в соответствии с WPP, и что данные заголовка слайса для конкретной CTU уже энтропийно кодированы.
[0084] Более того, модуль 56 энтропийного кодирования может вставить заголовок слайса в единицу NAL перед кодированием первого коэффициента следующего волнового фронта. В этом случае модуль 56 энтропийного кодирования может кодировать поток квантованных коэффициентов преобразования так, что начало следующего волнового фронта совпадает с началом отдельного слайса. Если новый слайс включает в себя весь второй волновой фронт и выходит в третий волновой фронт, то модуль 56 энтропийного кодирования может иметь доступ ко всем данным, необходимым для эффективного кодирования третьего волнового фронта в соответствии с WPP. Точнее говоря, модуль 56 энтропийного кодирования может обеспечить, что заголовок слайса для всех CTU третьего волнового фронта энтропийно кодирован перед тем, как нужно энтропийно кодировать любую CTU третьего волнового фронта.
[0085] В конкретном примере при кодировании второго коэффициента третьего волнового фронта модуль 56 энтропийного кодирования из синтаксических элементов, отправленных модулем 40 выбора режима, может обращаться к векторам движения, которые идентифицируют первый коэффициент каждого из второго и третьего волновых фронтов (то есть левый и левый верхний коэффициенты текущего коэффициента), второй коэффициент второго волнового фронта (то есть коэффициент, расположенный непосредственно над текущим коэффициентом) и третий коэффициент второго волнового фронта (то есть коэффициент, расположенный справа выше текущего коэффициента). Более того, заголовок слайса для второго коэффициента уже энтропийно кодирован, так как заголовок слайса совпадает с первым коэффициентом второго волнового фронта. Таким образом, модуль 56 энтропийного кодирования может реализовать методики из данного раскрытия изобретения для кодирования текущего слайса так, что кодирование последующего слайса с использованием WPP проходит эффективнее.
[0086] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование соответственно, чтобы восстановить остаточный блок в области пикселей, например, для последующего использования в качестве эталонного блока. Модуль 44 компенсации движения может вычислить эталонный блок путем добавления остаточного блока к блоку с предсказанием в одном из кадров в запоминающем устройстве 64 эталонных изображений. Модуль 44 компенсации движения также может применить один или несколько интерполирующих фильтров к восстановленному остаточному блоку, чтобы вычислить значения субцелых пикселей для использования при оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к блоку предсказания с компенсированным движением, созданному модулем 44 компенсации движения, чтобы создать восстановленный видеоблок для сохранения в запоминающем устройстве 64 эталонных изображений. Восстановленный видеоблок может использоваться модулем 42 оценки движения и модулем 44 компенсации движения в качестве эталонного блока, чтобы выполнить интер-кодирование блока в последующем видеокадре.
[0087] Как описано выше, видеокодер 20 представляет пример кодера видео, сконфигурированного для определения, что слайс изображения видеоданных начинается в строке единиц дерева кодирования (CTU) в изображении в положении, отличном от начала строки, определения, что слайс заканчивается в пределах строки CTU, на основе упомянутого определения и кодирования слайса на основе определения, что слайс заканчивается в пределах строки CTU. В примерах видеокодер 20 может включаться в устройство для кодирования видеоданных, например настольный компьютер, блокнотный (то есть переносной) компьютер, планшетный компьютер, телевизионную приставку, телефонную трубку, например так называемый смартфон, так называемый смартпад, телевизор, камеру, устройство отображения, цифровой мультимедийный проигрыватель, игровую приставку, устройство для потокового видео или т.п. В примерах такое устройство для кодирования видеоданных может включать в себя одну или несколько из интегральной схемы, микропроцессора и устройства связи, которое включает в себя видеокодер 20.
[0088] Фиг. 3 - блок-схема, иллюстрирующая пример видеодекодера 30, который может реализовать методики для параллельного кодирования волновых фронтов. В примере из фиг. 3 видеодекодер 30 включает в себя модуль 70 энтропийного декодирования, модуль 72 компенсации движения, модуль 74 интра-предсказания, модуль 76 обратного квантования, модуль 78 обратного преобразования, запоминающее устройство 82 эталонных изображений и сумматор 80. Видеодекодер 30 в некоторых примерах может выполнять проход декодирования, в целом обратный по отношению к проходу кодирования, описанному по отношению к видеокодеру 20 (фиг. 2). Модуль 72 компенсации движения может формировать данные предсказания на основе векторов движения, принятых от модуля 70 энтропийного декодирования, тогда как модуль 74 интра-предсказания может формировать данные предсказания на основе индикаторов режима интра-предсказания, принятых от модуля 70 энтропийного декодирования.
[0089] Во время процесса декодирования видеодекодер 30 принимает от видеокодера 20 поток битов кодированного видео, который представляет собой видеоблоки кодированного слайса видео и ассоциированные синтаксические элементы. Модуль 70 энтропийного декодирования в видеодекодере 30 энтропийно декодирует поток битов, чтобы сформировать квантованные коэффициенты, векторы движения или индикаторы режима интра-предсказания, и другие синтаксические элементы. Модуль 70 энтропийного декодирования перенаправляет векторы движения и другие синтаксические элементы в модуль 72 компенсации движения. Видеодекодер 30 может принять синтаксические элементы на уровне слайса видео и/или уровне видеоблока.
[0090] Модуль 70 энтропийного декодирования может реализовать методики из данного раскрытия изобретения, чтобы ограничить взаимодействие "слайс-волновой фронт" для более эффективного энтропийного декодирования изображения с использованием параллельной обработки волновых фронтов (WPP). Например, модуль 70 энтропийного декодирования может определить, что слайс начинается в середине волнового фронта, например, путем определения, что заголовок слайса в принятой единице NAL совпадает с CTU, которая не является первой CTU соответствующего волнового фронта. На основе этого определения модуль 70 энтропийного декодирования может определить, что слайс заканчивается в пределах того же волнового фронта, например, путем определения, что принятая единица NAL включает в себя символ конца слайса в конце последней CTU текущего волнового фронта.
[0091] Ограничивая таким образом взаимодействие "слайс-волновой фронт", модуль 70 энтропийного декодирования может эффективнее энтропийно декодировать изображение с использованием WPP. Например, модуль 70 энтропийного декодирования может обеспечить, что при декодировании конкретной CTU модуль 70 энтропийного декодирования имеет доступ ко всей информации, необходимой для декодирования конкретной CTU с использованием WPP, и что заголовок слайса для конкретной CTU уже энтропийно декодирован к тому времени, как модуль 70 энтропийного декодирования готов декодировать конкретную CTU. Таким образом, модуль 70 энтропийного декодирования может реализовать методики из данного раскрытия изобретения для более эффективного декодирования изображения в соответствии с WPP.
[0092] Когда слайс видео кодируется в виде слайса с интра-кодированием (I), модуль 74 интра-предсказания может сформировать данные предсказания для видеоблока текущего слайса видео на основе сигнализированного режима интра-предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр кодируется в виде слайса с интер-кодированием (то есть, B, P или GPB), модуль 72 компенсации движения создает блоки с предсказанием для видеоблока текущего слайса видео на основе векторов движения и других синтаксических элементов, принятых от модуля 70 энтропийного декодирования. Блоки с предсказанием могут создаваться из одного из эталонных изображений в одном из списков эталонных изображений. Видеодекодер 30 может построить списки эталонных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе эталонных изображений, сохраненных в запоминающем устройстве 82 эталонных изображений. Модуль 72 компенсации движения определяет информацию предсказания для видеоблока текущего слайса видео путем синтаксического анализа векторов движения и других синтаксических элементов и использует информацию предсказания для создания блоков с предсказанием для текущего декодируемого видеоблока. Например, модуль 72 компенсации движения использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, интра- или интер-предсказание), используемого для кодирования видеоблоков в слайсе видео, типа слайса интер-предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или нескольких списков эталонных изображений для слайса, векторов движения для каждого видеоблока с интер-кодированием в слайсе, состояния интер-предсказания для каждого видеоблока с интер-кодированием в слайсе и другой информации для декодирования видеоблоков в текущем слайсе видео.
[0093] Модуль 72 компенсации движения также может выполнить интерполяцию на основе интерполирующих фильтров. Модуль 72 компенсации движения может использовать интерполирующие фильтры, которые использовались видеокодером 20 во время кодирования видеоблоков, чтобы вычислить интерполированные значения для субцелых пикселей эталонных блоков. В этом случае модуль 72 компенсации движения может определить интерполирующие фильтры, используемые видеокодером 20, из принятых синтаксических элементов и использовать интерполирующие фильтры для создания блоков с предсказанием.
[0094] Модуль 76 обратного квантования обратно квантует, то есть деквантует, квантованные коэффициенты преобразования, предоставленные в потоке битов и декодированные модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра QPY квантования, вычисленного видеодекодером 30 для каждого видеоблока в слайсе видео, чтобы определить степень квантования, а также степень обратного квантования, которое следует применить.
[0095] Модуль 78 обратного преобразования применяет к коэффициентам преобразования обратное преобразование, например обратное DCT, обратное целочисленное преобразование или концептуально сходный процесс обратного преобразования, чтобы создать остаточные блоки в области пикселей.
[0096] После того, как модуль 72 компенсации движения сформирует блок с предсказанием для текущего видеоблока на основе векторов движения и других синтаксических элементов, видеодекодер 30 образует декодированный видеоблок путем суммирования остаточных блоков от модуля 78 обратного преобразования с соответствующими блоками с предсказанием, сформированными модулем 72 компенсации движения. Сумматор 80 представляет собой компонент или компоненты, которые выполняют эту операцию суммирования. При желании также можно применить фильтр уменьшения блочности для фильтрации декодированных блоков, чтобы удалить артефакты блочности. Другие фильтры цикла (либо в цикле кодирования, либо после цикла кодирования) также могут использоваться для сглаживания переходов пикселей или иного повышения качества видео. Декодированные видеоблоки в заданном кадре или изображении затем сохраняются в запоминающем устройстве 82 эталонных изображений, которое хранит эталонные изображения, используемые для последующей компенсации движения. Запоминающее устройство 82 эталонных изображений также хранит декодированное видео для последующего представления на устройстве отображения, например устройстве 32 отображения из фиг. 1.
[0097] Таким образом, видеодекодер 30 представляет пример кодера видео, сконфигурированного для определения, что слайс изображения видеоданных начинается в строке единиц дерева кодирования (CTU) в изображении в положении, отличном от начала строки, определения, что слайс заканчивается в пределах строки CTU, на основе упомянутого определения и кодирования слайса на основе определения, что слайс заканчивается в пределах строки CTU. В примерах видеодекодер 30 может включаться в устройство для кодирования видеоданных, например настольный компьютер, блокнотный (то есть переносной) компьютер, планшетный компьютер, телевизионную приставку, телефонную трубку, например так называемый смартфон, так называемый смартпад, телевизор, камеру, устройство отображения, цифровой мультимедийный проигрыватель, игровую приставку, устройство для потокового видео или т.п. В примерах такое устройство для кодирования видеоданных может включать в себя одну или несколько из интегральной схемы, микропроцессора и устройства связи, которое включает в себя видеодекодер 30.
[0098] Фиг. 4 - концептуальная схема, иллюстрирующая примерное изображение 100, разделенное на волновые фронты 150-160. Каждый из волновых фронтов 150-160 включает в себя некоторое количество блоков. Следует отметить, что изображение 100 может включать в себя дополнительные волновые фронты, и что каждый волновой фронт может включать в себя дополнительные блоки помимо показанных. Каждый из блоков может соответствовать, например, CTU.
[0099] Кодер видео, например видеокодер 20 или видеодекодер 30, может конфигурироваться для параллельного кодирования волновых фронтов 150-160. Видеокодер 20 может начинать кодирование волнового фронта после того, как кодированы два блока вышестоящего волнового фронта. Фиг. 4 иллюстрирует блоки, после которых можно кодировать волновой фронт, с использованием черных точек, соединенных относительно горизонтальной изогнутой стрелкой. Например, блок 134 волнового фронта 156 можно кодировать после того, как кодирован блок 128 волнового фронта 154. В качестве примера кодер видео может параллельно кодировать каждый из блоков, отмеченных знаком "X", то есть блоки 116, 124, 132 и 136. Пунктирные линии 102, 104, 106 и 108 представляют блоки, которые проанализированы, и информация из которых доступна для извлечения в конкретный момент кодирования, в примере из фиг. 4. Конкретный момент кодирования может соответствовать моменту, в который кодируются блоки, отмеченные знаком "X", то есть блоки 116, 124, 132 и 136.
[0100] Соответственно, кодер видео может извлечь контекстную информацию для блока, отмеченного знаком "X", из блоков, на которые указывают сплошные белые стрелки на фиг. 4. Как показано на фиг. 4, каждый из блоков, на которые указывает сплошная белая стрелка, находится в пределах одной из пунктирных линий 102, 104, 106 и 108. Например, кодер видео может извлечь контекстную информацию для блока 116 из блока 114; кодер видео может извлечь контекстную информацию для блока 124 из блоков 110, 112, 114 и/или 122; кодер видео может извлечь контекстную информацию для блока 132 из блоков 118, 120, 122 и/или 130; и кодер видео может извлечь контекстную информацию для блока 136 из блоков 126, 128, 130 и/или 134. Вместе пунктирные линии 102, 104, 106 и 108 заключают группу CTU, то есть совокупность блоков изображения 100, которую способен кодировать кодер видео в заданный момент в соответствии с WPP.
[0101] В соответствии с методиками из данного раскрытия изобретения каждый из волновых фронтов 150-160 может включать в себя части или полный состав одной или нескольких слайсов. В качестве альтернативы слайс может включать в себя части или полный состав одного или нескольких волновых фронтов, например, одного или нескольких волновых фронтов 150-160. Например, первый слайс может включать в себя блоки волновых фронтов 150 и 152, второй слайс может включать в себя блоки волновых фронтов 152, 154 и 156, а третий слайс может включать в себя блоки волновых фронтов 158 и 160. Таким образом, когда слайс пересекает границу между двумя волновыми фронтами, слайс может включать в себя некоторые или все блоки из двух волновых фронтов.
[0102] Предположим, например, что кодер видео должен кодировать блок 132. Чтобы инициализировать состояние контекста для волнового фронта 154, который включает в себя блок 132, кодеру видео может понадобиться один или несколько параметров заголовка слайса для слайса, включающего в себя блок 132. Если слайсу было разрешено начинаться на блоке в середине волнового фронта 152 и пересекать границу между волновым фронтом 152 и волновым фронтом 154, то кодеру видео может потребоваться подождать с кодированием первого блока в слайсе для извлечения информации заголовка слайса. Например, если бы слайс должен был начинаться в горизонтальном положении блока в волновом фронте 152 под блоком 116, то этот блок еще не был бы проанализирован, и соответственно кодеру видео понадобилось бы ждать, пока проанализируется блок, перед тем как кодер видео мог бы начать кодирование волнового фронта 154. Однако кодер видео может реализовать методики из данного раскрытия изобретения для обеспечения того, что если слайс начинается в волновом фронте изображения 100 в положении, отличном от начала волнового фронта, то слайс заканчивается в пределах того конкретного волнового фронта. Другими словами, любой волновой фронт изображения 100 может либо начинаться с заголовка слайса, либо заканчиваться символом конца слайса (или оба варианта). Ограничивая таким образом взаимодействие "слайс-волновой фронт", кодер видео может обеспечить, что при кодировании конкретного блока изображения 100 кодер видео имеет доступ ко всей информации, нужной для кодирования блока в соответствии с WPP, и что соответствующий блоку заголовок слайса уже кодирован. Таким образом, кодер видео может предотвратить возникновение ситуаций, которые требуют, чтобы кодер видео подождал с кодированием блока в соответствии с параллельной обработкой волновых фронтов (WPP).
[0103] Точнее говоря, кодер видео может реализовать методики для обеспечения того, что доступны все данные, нужные для кодирования блока в соответствии с параллельной обработкой волновых фронтов (WPP), например с использованием CABAC, и что готов к кодированию блок, в котором уже кодирован заголовок слайса для блока. Хотя эти методики может реализовать ряд кодеров видео, с целью объяснения одна или несколько методик описываются со ссылкой на видеокодер 20 из фиг. 2 и видеодекодер 30 из фиг. 3 и их соответствующие компоненты. Например, модуль 70 энтропийного декодирования в видеодекодере 30 может ограничить взаимодействие "слайс-волновой фронт" в изображении 100 для обеспечения того, что доступны все данные, нужные для кодирования блока в соответствии с WPP, и что уже кодирован соответствующий заголовок слайса для блока. Например, модуль 70 энтропийного декодирования может определить, что слайс изображения 100 начинается в волновом фронте 150, но в положении, отличном от начала волнового фронта 150 (например, на блоке 110). На основе этого определения модуль 70 энтропийного декодирования может определить, что слайс заканчивается в пределах волнового фронта 150. Например, модуль 70 энтропийного декодирования может обнаружить в принятой единице NAL, представляющей части изображения 100, символ конца слайса сразу после последнего кодированного блока волнового фронта 150 и обнаружить заголовок слайса непосредственно перед первым кодированным блоком волнового фронта 152. Таким образом, видеокодер 20 и/или видеодекодер 30 может обеспечить, что заголовок слайса для любого конкретного блока волнового фронта 152 кодирован до того, как конкретный блок готов к кодированию.
[0104] Применительно к кодированию изображения 100 в соответствии с WPP модуль 56 энтропийного кодирования в видеокодере 20 может обнаружить, что слайс, начинающийся на блоке 110, также включает в себя один или несколько блоков волнового фронта 152. Это понятие в этом документе называется "перекрытием слайсов". В этом случае модуль 56 энтропийного кодирования может завершить слайс после включения в него последнего блока волнового фронта 150 и инициировать новый слайс, который включает в себя первый блок волнового фронта 152. Как описано, модуль 56 энтропийного кодирования может сформировать единицу NAL, которая включает в себя кодированные данные, представляющие изображение 100, и вставить символ конца слайса после данных, представляющих последний блок волнового фронта 150 (который кодирован). Аналогичным образом модуль 56 энтропийного кодирования может вставить в ту же или последующую единицу NAL заголовок слайса непосредственно перед данными, которые представляют первый блок волнового фронта 152, который кодирован. Реализуя эти ограничения, видеокодер 20 может обеспечить, что заголовок слайса для данного блока волновых фронтов 150 и/или 152 кодирован до того, как данный блок готов к кодированию. Таким образом, видеокодер 20 может реализовать методики из данного раскрытия изобретения, чтобы ограничить взаимодействие "слайс-волновой фронт" для более эффективного использования WPP, а также чтобы дать видеодекодеру 30 возможность эффективнее использовать WPP.
[0105] Таким образом, кодер видео может определить, что слайс изображения 100 начинается в строке CTU в изображении 100 в положении, отличном от начала строки. На основе этого определения кодер видео может определить, что слайс заканчивается в пределах строки CTU, и кодировать слайс на основе определения, что слайс заканчивается в пределах строки CTU.
[0106] Как обсуждалось выше, в некоторых примерах кодер видео, например видеокодер 20 или видеодекодер 30, может конфигурироваться для кодирования видеоданных так, что когда слайс видеоданных включает в себя первую строку единиц дерева кодирования (CTU), содержащую полную строку, и часть второй строки CTU, причем вторая строка содержит меньше CTU, чем полная строка, слайс начинается в начале по меньшей мере одной полной строки наибольших единиц кодирования. Например, предположим, что слайс начинается в начале волнового фронта 150. В этом примере слайс может заканчиваться в середине (то есть до конца) последующего волнового фронта, например волнового фронта 152.
[0107] Предположим, например, что слайс заканчивается на блоке 120. Это было бы разрешено описанным выше ограничением, потому что слайс начинается в начале волнового фронта, а именно волнового фронта 150 в этом примере. Таким образом, последующий слайс может начинаться на блоке 122. Однако этому слайсу не разрешалось бы пересекать границу в конце волнового фронта 152 в этом примере. Таким образом, слайс закончился бы в конце волнового фронта 152. Конечно, можно добавлять дополнительные слайсы в пределах волнового фронта 152 до тех пор, пока слайс не пересечет границу между волновым фронтом 152 и волновым фронтом 154 в этом примере.
[0108] Фиг. 5 - блок-схема алгоритма, иллюстрирующая примерный процесс 180, с помощью которого кодер видео может реализовать методики из данного раскрытия изобретения для параллельного кодирования волновых фронтов. Фиг. 5 иллюстрирует примерный процесс 180, с помощью которого кодер видео, например видеокодер 20, может кодировать изображение, например кадр видеоданных, используя одну или несколько методик из данного раскрытия изобретения. Хотя процесс 180 может выполняться рядом устройств в соответствии с особенностями данного раскрытия изобретения, с целью объяснения процесс 180 в этом документе описывается по отношению к устройствам из фиг. 1-2 и их соответствующим компонентам, а также изображению 100 из фиг. 4. Процесс 180 может начинаться, когда устройство принимает изображение видеоданных (этап 182). В качестве одного примера устройство-источник 12 может принять изображение 100 посредством одного или нескольких устройств ввода.
[0109] Более того, устройство-источник 12 может задействовать параллельную обработку волновых фронтов (WPP) (этап 184). Например, устройство-источник 12 может задействовать WPP, посредством этого предписывая видеокодеру 20 кодировать изображение 100 в соответствии с WPP. Кодер видео, например видеокодер 20, может определить волновые фронты изображения 100 (этап 186). Например, видеокодер 20 может определить количество блоков (например, CTU) на каждый волновой фронт, ассоциированное с основанным на WPP кодированием изображения 100, и определить переход волнового фронта по достижении каждого целого кратного количеству блоков.
[0110] Более того, видеокодер 20 может определить заголовки слайсов для изображения 100 (этап 188). Точнее говоря, видеокодер 20 может использовать заголовки слайсов для указания перехода слайса, то есть начала нового слайса изображения 100. Например, видеокодер 20 может вставить заголовок слайса в конкретной части изображения 100, которая соответствует началу нового слайса. В некоторых примерах видеокодер 20 может указывать переход слайса на основе символа конца слайса, например, путем вставки символа конца слайса в части изображения 100 для обозначения конца слайса. В некоторых примерах видеокодер 20 может указывать переход слайса с использованием последовательности из символа конца слайса с непосредственно следующим заголовком слайса, например, путем вставки символа конца слайса для обозначения конца слайса и вставки заголовка слайса сразу после символа конца слайса для обозначения начала нового слайса.
[0111] Кодер видео может определить, начинается ли текущий слайс после первой CTU волнового фронта (этап 190). Например, видеокодер 20 может определить, что текущий слайс начинается после первой CTU волнового фронта 150 (например, в "середине" волнового фронта), если видеокодер 20 обнаруживает, или вставляет, заголовок слайса на блоке 110. В этом примере, если видеокодер 20 определяет, что текущий слайс начинается после первой CTU волнового фронта (ветвь "ДА" этапа 190), то видеокодер 20 может определить, что текущий слайс заканчивается в пределах текущего волнового фронта (этап 192). Например, видеокодер 20 может определить, что текущий слайс заканчивается в пределах волнового фронта 150, путем помещения символа конца слайса в сформированную единицу NAL перед отделением перехода в волновой фронт 152. С помощью определения описанных переходов слайсов видеокодер 20 может гарантировать, что видеокодер 20 (и/или видеодекодер 30) имеет доступ ко всей информации, необходимой для кодирования блока волнового фронта 152, и что уже кодирован заголовок слайса для блока.
[0112] С другой стороны, если кодер видео определяет, что текущий слайс не начинается после первой CTU волнового фронта, то есть заголовок слайса совпадает с первой CTU волнового фронта (ветвь "НЕТ" этапа 190), то кодер видео может продолжить определять заголовки слайсов для изображения 100 (этап 188). Например, видеокодер 30 может кодировать последующие заголовки слайсов (и/или символы конца слайса) на основе определения, что текущий слайс начинается в начале волнового фронта. Таким образом, видеокодер 20 может реализовать процесс 180 для ограничения взаимодействия "слайс-волновой фронт" так, что видеокодер 20 и видеодекодер 30 имеют доступ ко всем данным (включая уже кодированный заголовок слайса), необходимым для эффективного кодирования текущей CTU в соответствии с WPP.
[0113] Фиг. 6 - блок-схема алгоритма, иллюстрирующая другой примерный процесс 200, с помощью которого кодер видео может декодировать кодированное изображение, например кадр видеоданных, используя одну или несколько методик из данного раскрытия изобретения. Хотя процесс 200 может выполняться рядом устройств в соответствии с особенностями данного раскрытия изобретения, с целью объяснения процесс 200 в этом документе описывается по отношению к устройствам из фиг. 1 и 3 и их соответствующим компонентам, а также изображению 100 из фиг. 4. Процесс 200 может начинаться, когда видеодекодер 30 принимает кодированное изображение видеоданных (этап 202). В качестве одного примера устройство-адресат 14 может принять кодированную версию изображения 100 в интерфейсе 128 ввода.
[0114] Более того, видеодекодер 30 может задействовать параллельную обработку волновых фронтов (WPP) (этап 204). В некоторых примерах компьютерно-читаемый носитель 16 может включать в себя сигнальные данные, указывающие, что нужно задействовать WPP. Наоборот, в других примерах видеодекодер 30 может определить неявное указание для задействования WPP на основе упомянутого, соответствуют ли видеоданные, включенные в компьютерно-читаемый носитель 16, конкретному стандарту и/или конкретному профилю стандарта. Например, устройство-адресат 14 может задействовать WPP, чтобы предписать видеодекодеру 30 декодировать принятую кодированную версию изображения 100 в соответствии с WPP. Более того, видеодекодер 30 может определить начало нового волнового фронта кодированного изображения 100 (этап 206). Например, видеодекодер 30 может определить, что первый блок (например, CTU) кодированного изображения 100 указывает начало нового волнового фронта 150. Более того, видеодекодер 30 может определить количество CTU на каждый волновой фронт, ассоциированное с основанным на WPP кодированием изображения 100, и определить начало нового волнового фронта (или "переход волнового фронта") по достижении каждого целого кратного количеству CTU.
[0115] Видеодекодер 30 может декодировать видеоданные текущего слайса текущего волнового фронта (например, волнового фронта 150) кодированной версии изображения 100 (этап 208). Точнее говоря, видеодекодер 30 может декодировать волновой фронт 150 по каждой CTU, начиная с крайней левой CTU, затем декодируя следующую CTU справа, и так далее. Более того, видеодекодер 30 может определить, обнаруживает ли видеодекодер 30 заголовок слайса до достижения конца (например, крайней правой CTU) волнового фронта 150 (этап 210). Видеодекодер 30 может определить начало нового слайса кодированного изображения 100, или "переход слайса", на основе обнаружения заголовка слайса в кодированном изображении 100. Если видеодекодер 30 не обнаруживает заголовок слайса до конца волнового фронта 150 (ветвь "НЕТ" этапа 210), то видеодекодер 30 может обнаружить начало нового волнового фронта 152 (этап 206). Точнее говоря, в этом сценарии видеодекодер 30 может определить, что по меньшей мере часть волнового фронта 152, включая первую CTU волнового фронта 152, принадлежит тому же слайсу, что и CTU волнового фронта 152.
[0116] Наоборот, если видеодекодер 30 обнаруживает заголовок слайса до конца волнового фронта 150 (ветвь "ДА" этапа 210), то видеодекодер 30 может определить, совпадает ли заголовок слайса с первой CTU волнового фронта 150 (этап 212). Другими словами, видеодекодер 30 может определить, начинается ли текущий слайс на той же CTU, что и текущий волновой фронт 150. Если видеодекодер 30 определяет, что обнаруженный заголовок слайса совпадает с первой CTU волнового фронта 150 (ветвь "ДА" этапа 212), то видеодекодер 30 может продолжить декодировать видеоданные текущего слайса волнового фронта 150 (этап 208).
[0117] С другой стороны, если видеодекодер 30 определяет, что обнаруженный заголовок слайса не совпадает с первой CTU волнового фронта 150 (ветвь "НЕТ" этапа 212), то видеодекодер 30 может определить, что текущий слайс заканчивается в пределах волнового фронта 150 (этап 214). Точнее говоря, видеодекодер 30 может определить, что текущий слайс заканчивается в пределах (например, на последней/крайней правой CTU или до нее) волнового фронта 150, на основе ограничений взаимодействия "слайс-волновой фронт", задействованных методиками из данного раскрытия изобретения. Более того, на основе определения, что текущий слайс заканчивается в пределах волнового фронта 150, видеодекодер может продолжить декодировать видеоданные текущего слайса волнового фронта 150.
[0118] Ограничивая взаимодействие "слайс-волновой фронт" способом, проиллюстрированным на фиг. 6, видеодекодер 30 может обеспечить, что при декодировании CTU слайса, который располагается в волновом фронте, например волновом фронте 152, видеодекодер 30 имеет доступ ко всем данным из волнового фронта 150, которые необходимы процессу декодирования для волнового фронта 152. То есть либо видеодекодер 30 уже декодирует данные заголовка слайса для слайса в волновом фронте 152 во время декодирования волнового фронта 150, либо заголовок слайса для слайса в волновом фронте 152 появится в начале волнового фронта 152, и поэтому видеодекодер 30 может начать декодирование волнового фронта 152 на основе наличия доступа ко всем необходимым данным, важным для декодирования, в соответствии с WPP.
[0119] Следует понимать, что в зависимости от примера некоторые действия или события в любой из методик, описанных в этом документе, могут выполняться в иной последовательности, могут добавляться, объединяться или полностью пропускаться (например, не все описанные действия или события необходимы для применения методик на практике). Кроме того, в некоторых примерах действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или нескольких процессоров, а не последовательно.
[0120] В одном или нескольких примерах описываемые функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любом их сочетании. Если они реализованы в программном обеспечении, то функции могут храниться или передаваться в виде одной или нескольких команд либо кода на компьютерно-читаемом носителе и исполняться аппаратным модулем обработки. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые носители информации, которые соответствуют материальному носителю, такому как носители информации, или средства связи, включающие в себя любой носитель, который облегчает перенос компьютерной программы из одного места в другое, например, в соответствии с каким-либо протоколом связи. Таким образом, компьютерно-читаемые носители в целом могут соответствовать (1) материальным компьютерно-читаемым носителям информации, которые не изменяются со временем, или (2) средству связи, такому как сигнал или несущая. Носители информации могут быть любыми доступными носителями, к которым можно обращаться с помощью одного или нескольких компьютеров либо одного или нескольких процессоров для извлечения команд, кода и/или структур данных для реализации методик, описанных в данном раскрытии изобретения. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0121] В качестве примера, а не ограничения, такие компьютерно-читаемые носители информации могут быть выполнены в виде RAM, ROM, EEPROM, компакт-диска или другого накопителя на оптических дисках, накопителя на магнитных дисках или других магнитных запоминающих устройств, флэш-памяти либо любого другого носителя, который может использоваться для хранения нужного программного кода в виде команд или структур данных, и к которому можно обращаться с помощью компьютера. Также любое соединение корректно называть компьютерно-читаемым носителем. Например, если команды передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, например ИК-связи, радиочастотной связи и СВЧ-связи, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, например ИК-связь, радиочастотная связь и СВЧ-связь, включаются в определение носителя. Однако следует понимать, что компьютерно-читаемые носители информации и носители информации не включают в себя соединения, несущие, сигналы или другие кратковременные носители, а вместо этого ориентированы на долговременные, материальные носители информации. Диски при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск Blu-ray, причем магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптически с помощью лазеров. Сочетания вышеперечисленного также следует включить в область компьютерно-читаемых носителей.
[0122] Команды могут исполняться одним или несколькими процессорами, например одним или несколькими цифровыми процессорами сигналов (DSP), универсальными микропроцессорами, специализированными интегральными схемами (ASIC), программируемыми пользователем логическими матрицами (FPGA) или другими эквивалентными интегральными либо дискретными логическими схемами. Соответственно, термин "процессор" при использовании в данном документе может относиться к любой вышеупомянутой структуре или к любой другой структуре, подходящей для реализации описанных в этом документе методик. К тому же в некоторых особенностях функциональные возможности, описанные в этом документе, могут быть предоставлены в специализированных аппаратных и/или программных модулях, сконфигурированных для кодирования и декодирования, или встроены в объединенный кодек. Также методики можно было бы полностью реализовать в одной или нескольких схемах или логических элементах.
[0123] Методики из данного раскрытия изобретения могут быть реализованы в широком спектре устройств, включая беспроводную телефонную трубку, интегральную схему (ИС) или набор ИС (например, набор микросхем). Различные компоненты, модули или блоки описываются в данном раскрытии изобретения для подчеркивания функциональных особенностей устройств, сконфигурированных для выполнения раскрытых методик, но не обязательно требуют реализации с помощью разных аппаратных модулей. Точнее, как описано выше, различные модули могут объединяться в аппаратный модуль кодека или предоставляться с помощью совокупности взаимодействующих аппаратных модулей, включающих в себя один или несколько процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или микропрограммным обеспечением.
[0124] Описаны различные примеры. Эти и другие примеры входят в объем нижеследующей формулы изобретения.
Изобретение относится к вычислительной технике. Технический результат заключается в эффективном выполнении параллельной обработки волновых фронтов изображения. Способ декодирования кодированных видеоданных, в котором принимают поток битов кодированного видео, содержащий кодированное изображение, которое разделено на множество единиц дерева кодирования (CTU), причем множество CTU расположены в множественных строках; определяют, что кодированное изображение включает в себя один или более слайсов, которые начинаются в соответственной строке CTU кодированного изображения в положении, отличном от начала упомянутой соответственной строки; определяют, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, так что ни один слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, не переходит на последующую строку CTU кодированного изображения; и на основе этого определения, выполняют синтаксический анализ потока битов кодированного видео для декодирования синтаксических элементов разбиения на слайсы из каждой соответственной строки CTU, в которой соответственный слайс начинается в положении, отличном от упомянутого начала. 5 н. и 31 з.п. ф-лы, 6 ил.
1. Способ декодирования кодированных видеоданных, при этом упомянутый способ содержит этапы, на которых:
принимают поток битов кодированного видео, содержащий кодированное изображение, которое разделено на множество единиц дерева кодирования (CTU), причем множество CTU расположены в множественных строках, каждая соответственная строка CTU простирается на ширину упомянутого изображения, ширина упомянутого изображения начинается с левого края кодированного изображения и заканчивается на правом краю кодированного изображения;
определяют, что кодированное изображение включает в себя один или более слайсов, которые начинаются в соответственной строке CTU кодированного изображения в положении, отличном от начала упомянутой соответственной строки;
определяют, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, так что ни один слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, не переходит на последующую строку CTU кодированного изображения, при этом начало каждой соответственной строки соответствует левому краю кодированного изображения, и при этом конец каждой соответственной строки соответствует правому краю кодированного изображения; и
на основе определения, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, выполняют синтаксический анализ потока битов кодированного видео для декодирования синтаксических элементов разбиения на слайсы из каждой соответственной строки CTU, в которой соответственный слайс начинается в положении, отличном от упомянутого начала, при этом синтаксические элементы разбиения на слайсы отделяют слайс, который заканчивается в пределах соответственной строки CTU, от последующего слайса кодированного изображения, и при этом последующий слайс начинается либо в соответственной строке CTU, либо в соответственной последующей строке CTU, которая следует за соответственной строкой CTU.
2. Способ по п. 1, в котором кодированное изображение включено во множество кодированных изображений потока битов кодированного видео, причем упомянутый способ дополнительно содержит этап, на котором декодируют все слайсы всех кодированных изображений потока битов кодированного видео, так что все из слайсов, которые начинаются в положении, отличном от начала соответствующей строки CTU, также заканчиваются в пределах соответствующей строки CTU.
3. Способ по п. 1, дополнительно содержащий этап, на котором декодируют множественные строки CTU кодированного изображения с использованием параллельной обработки волновых фронтов.
4. Способ по п. 3, в котором этап, на котором декодирование множественных строк CTU кодированного изображения с использованием параллельной обработки волновых фронтов дополнительно содержит этап, на котором определяют, что задействована параллельная обработка волновых фронтов в отношении декодирования кодированного изображения.
5. Способ по п. 3, дополнительно содержащий этап, на котором задействуют параллельную обработку волновых фронтов в отношении декодирования кодированного изображения.
6. Способ по п. 5, дополнительно содержащий этап, на котором декодируют синтаксические данные, указывающие, что задействована параллельная обработка волновых фронтов в отношении декодирования кодированного изображения.
7. Способ по п. 1, дополнительно содержащий этап, на котором декодируют CTU каждого слайса из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, в порядке растрового сканирования без перехода на соответственную последующую строку CTU в кодированном изображении до достижения синтаксических элементов разбиения на слайсы, которые отделяют слайс, который заканчивается в пределах соответственной строки CTU, от последующего слайса кодированного изображения.
8. Способ по п. 1, дополнительно содержащий этап, на котором декодируют часть первой строки из множественных строк CTU параллельно с декодированием части второй строки из множественных строк CTU.
9. Способ по п. 8, в котором вторая строка CTU расположена рядом с и под первой строкой CTU в кодированном изображении.
10. Способ по п. 8, в котором вторая строка CTU расположена рядом с и над первой строкой CTU в кодированном изображении.
11. Способ по п. 1, дополнительно содержащий этапы, на которых принимают поток битов кодированного видео; и
энтропийно декодируют все множественные строки CTU кодированного изображения на основе определения, что ни один слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, не переходит на последующую строку CTU кодированного изображения.
12. Способ по п. 1, дополнительно содержащий этап, на котором:
на основе определения, что каждый из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, выполняют инициализацию вероятностей контекстно-адаптивного двоичного арифметического кодирования (САВАС) для последующего слайса с использованием заголовка слайса для последующего слайса.
13. Способ по п. 1, в котором синтаксические элементы разбиения на слайсы включают в себя по меньшей мере одно из: (i) одного или более символов конца слайса, указывающих конец слайса, который заканчивается в пределах соответственной строки CTU, или (ii) синтаксических элементов заголовка слайса, указывающих начало последующего слайса.
14. Устройство для декодирования кодированных видеоданных, при этом упомянутое устройство содержит:
интерфейс, выполненный с возможностью принимать поток битов кодированного видео, содержащий кодированное изображение, которое разделено на множество единиц дерева кодирования (CTU), причем множество CTU расположено в множественных строках, каждая соответственная строка CTU простирается на ширину упомянутого изображения, ширина упомянутого изображения начинается с левого края кодированного изображения и заканчивая на правом краю кодированного изображения;
запоминающее устройство, соединенное с интерфейсом, причем запоминающее устройство выполнено с возможностью хранить кодированное изображение;
один или более процессоров, соединенных с запоминающим устройством, причем один или более процессоров выполнены с возможностью:
определять, что кодированное изображение, хранящееся в памяти, включает в себя один или более слайсов, которые начинаются в соответственной строке CTU кодированного изображения в положении, отличном от начала упомянутой соответственной строки;
определять, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, так что ни один слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, не переходит на последующую строку CTU кодированного изображения, при этом начало каждой соответственной строки соответствует левому краю кодированного изображения, и при этом конец каждой соответственной строки соответствует правому краю кодированного изображения; и
на основе определения, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, выполнять синтаксический анализ потока битов кодированного видео для декодирования синтаксических элементов разбиения на слайсы из каждой соответственной строки CTU, в которой соответственный слайс начинается в положении, отличном от упомянутого начала, при этом синтаксические элементы разбиения на слайсы отделяют слайс, который заканчивается в пределах соответственной строки CTU, от последующего слайса кодированного изображения, и при этом последующий слайс начинается либо в соответственной строке CTU, либо в соответственной последующей строке CTU, которая следует за соответственной строкой CTU.
15. Устройство по п. 14, дополнительно содержащее по меньшей мере одно из:
одной или более интегральных схем;
одного или более микропроцессоров;
одного или более цифровых процессоров сигналов (DSP);
одной или более программируемых пользователем логических матриц (FPGA);
настольного компьютера;
переносного компьютера;
планшетного компьютера;
телефона;
телевизора;
камеры;
устройства отображения;
цифрового мультимедийного проигрывателя;
видеоигровой приставки, видеоигрового устройства;
устройства для потокового видео;
или устройства беспроводной связи.
16. Устройство по п. 14, в котором кодированное изображение включено во множество кодированных изображений потока битов кодированного видео, причем один или более процессоров дополнительно выполнены с возможностью декодировать все кодированные слайсы всех изображений потока битов кодированного видео, так что все из слайсов, которые начинаются в положении, отличном от начала соответствующей строки CTU, также заканчиваются в пределах соответствующей строки CTU.
17. Устройство по п. 14, в котором один или более процессоров дополнительно выполнены с возможностью декодировать множественные строки CTU кодированного изображения с использованием параллельной обработки волновых фронтов.
18. Устройство по п. 17, в котором для декодирования множественных строк CTU кодированного изображения с использованием параллельной обработки волновых фронтов один или более процессоров выполнены с возможностью определения, что на упомянутом устройстве задействована параллельная обработка волновых фронтов в отношении декодирования кодированного изображения.
19. Устройство по п. 17, в котором один или более процессоров дополнительно выполнены с возможностью задействования параллельной обработки волновых фронтов на упомянутом устройстве в отношении декодирования кодированного изображения.
20. Устройство по п. 14, в котором один или более процессоров дополнительно выполнены с возможностью декодировать CTU каждого слайса из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, в порядке растрового сканирования без перехода на соответственную последующую строку CTU в кодированном изображении до достижения синтаксических элементов разбиения на слайсы, которые отделяют слайс, который заканчивается в пределах соответственной строки CTU, от последующего слайса кодированного изображения.
21. Устройство по п. 14, в котором один или более процессоров дополнительно выполнены с возможностью декодировать часть первой строки из множественных строк CTU параллельно с декодированием части второй строки из множественных строк CTU.
22. Устройство по п. 21, в котором вторая строка CTU расположена рядом с и под первой строкой CTU в кодированном изображении.
23. Устройство по п. 21, в котором вторая строка CTU расположена рядом с над первой строкой CTU в кодированном изображении.
24. Устройство по п. 14, в котором один или более процессоров дополнительно выполнены с возможностью энтропийного декодирования всех множественных строк CTU кодированного изображения на основе определения, что ни один слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, не переходит на последующую строку CTU кодированного изображения.
25. Устройство по п. 14, в котором синтаксические элементы разбиения на слайсы включают в себя по меньшей мере одно из: (i) одного или более символов конца слайса, указывающих конец слайса, который заканчивается в пределах соответственной строки CTU, или (ii) синтаксических элементов заголовка слайса, указывающих начало последующего слайса.
26. Устройство для декодирования кодированных видеоданных, при этом упомянутое устройство содержит:
средство для приема потока битов кодированного видео, содержащего кодированное изображение, которое разделено на множество единиц дерева кодирования (CTU), причем множество CTU расположены в множественных строках, каждая соответственная строка CTU простирается на ширину упомянутого изображения, ширина упомянутого изображения начинается с левого края кодированного изображения и заканчивается на правом краю кодированного изображения;
средство для определения, что кодированное изображение включает в себя один или более слайсов, которые начинаются в соответственной строке CTU кодированного изображения в положении, отличном от начала упомянутой соответственной строки;
средство для определения, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, так что ни один слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, не переходит на последующую строку CTU кодированного изображения, при этом начало каждой соответственной строки соответствует левому краю кодированного изображения, и при этом конец каждой соответственной строки соответствует правому краю кодированного изображения; и
средство для синтаксического анализа потока битов кодированного видео на основе определения, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, для декодирования синтаксических элементов разбиения на слайсы из каждой соответственной строки CTU, при этом синтаксические элементы разбиения на слайсы отделяют слайс, который заканчивается в пределах соответственной строки CTU, от последующего слайса кодированного изображения, и при этом последующий слайс начинается либо в соответственной строке CTU, либо в соответственной последующей строке CTU, которая следует за соответственной строкой CTU.
27. Устройство по п. 26, в котором кодированное изображение включено во множество кодированных изображений потока битов кодированного видео, причем упомянутое устройство дополнительно содержит средство для декодирования всех слайсов всех кодированных изображений потока битов кодированного видео, так что все из слайсов, которые начинаются в положении, отличном от начала соответствующей строки CTU, также заканчиваются в пределах соответствующей строки CTU.
28. Устройство по п. 26, дополнительно содержащее средство для декодирования множественных строк CTU кодированного изображения с использованием параллельной обработки волновых фронтов.
29. Устройство по п. 26, дополнительно содержащее средство для декодирования CTU каждого слайса из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, в порядке растрового сканирования без перехода на соответственную последующую строку CTU в кодированном изображении до достижения синтаксических элементов разбиения на слайсы, которые отделяют слайс, который заканчивается в пределах соответственной строки CTU, от последующего слайса кодированного изображения.
30. Устройство по п. 26, дополнительно содержащее средство для декодирования части первой строки из множественных строк CTU параллельно с декодированием части второй строки из множественных строк CTU.
31. Невременный компьютерно-читаемый носитель информации, содержащий сохраненные на нем команды, которые при исполнении предписывают программируемому процессору вычислительного устройства:
принимать кодированные видеоданные потока битов кодированного видео, который содержит кодированное изображение, которое разделено на множество единиц дерева кодирования (CTU), причем множество CTU расположено в множественных строках, каждая соответственная строка CTU простирается на ширину упомянутого изображения;
определять, что кодированное изображение включает в себя один или более слайсов, которые начинаются в соответственной строке CTU кодированного изображения в положении, отличном от начала упомянутой соответственной строки;
определять, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, так что ни один слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, не переходит на последующую строку CTU кодированного изображения, при этом начало каждой соответственной строки соответствует левому краю кодированного изображения, и при этом конец каждой соответственной строки соответствует правому краю кодированного изображения; и
на основе определения, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, выполнять синтаксический анализ потока битов кодированного видео для декодирования синтаксических элементов разбиения на слайсы из каждой соответственной строки CTU, в которой соответственный слайс начинается в положении, отличном от упомянутого начала, при этом синтаксические элементы разбиения на слайсы отделяют слайс, который заканчивается в пределах соответственной строки CTU, от последующего слайса кодированного изображения, и при этом последующий слайс начинается либо в соответственной строке CTU, либо в соответственной последующей строке CTU, которая следует за соответственной строкой CTU.
32. Невременный компьютерно-читаемый носитель информации по п. 31, в котором кодированное изображение включено во множество кодированных изображений потока битов кодированного видео, при этом команды при исполнении дополнительно предписывают программируемому процессору вычислительного устройства декодировать все слайсы всех кодированных изображений потока битов кодированного видео, так что все из слайсов, которые начинаются в положении, отличном от начала соответствующей строки CTU, также заканчиваются в пределах соответствующей строки CTU.
33. Невременный компьютерно-читаемый носитель информации по п. 31, в котором команды при исполнении дополнительно предписывают программируемому процессору вычислительного устройства декодировать множественные строки CTU кодированного изображения с использованием параллельной обработки волновых фронтов.
34. Невременный компьютерно-читаемый носитель информации по п. 31, в котором команды при исполнении дополнительно предписывают программируемому процессору вычислительного устройства декодировать CTU каждого слайса из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, в порядке растрового сканирования без перехода на соответственную последующую строку CTU в кодированном изображении до достижения синтаксических элементов разбиения на слайсы, которые отделяют слайс, который заканчивается в пределах соответственной строки CTU, от последующего слайса кодированного изображения.
35. Невременный компьютерно-читаемый носитель информации по п. 31, в котором команды при исполнении дополнительно предписывают программируемому процессору вычислительного устройства декодировать часть первой строки из множественных строк CTU параллельно с декодированием части второй строки из множественных строк CTU.
36. Способ кодирования видеоданных, при этом упомянутый способ содержит этапы, на которых:
определяют, что изображение видеоданных включает в себя один или более слайсов, которые начинаются в соответственной строке единиц дерева кодирования (CTU) изображения в положении, отличном от начала упомянутой соответственной строки;
определяют, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, так что ни один слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, не переходит на последующую строку CTU изображения, при этом каждая соответственная строка CTU простирается на ширину упомянутого изображения, которая начинается с левого края изображения и заканчивая на правом краю изображения, при этом начало каждой соответственной строки соответствует левому краю изображения и при этом конец каждой соответственной строки соответствует правому краю изображения; и
на основе определения, что каждый слайс из одного или более слайсов, которые начинаются в положении, отличном от начала соответственной строки CTU, заканчивается в пределах соответственной строки CTU, генерируют поток битов кодированного видео по меньшей мере частично посредством кодирования синтаксических элементов разбиения на слайсы в каждой соответственной строке CTU, в которой соответственный слайс начинается в положении, отличном от упомянутого начала, при этом синтаксические элементы разбиения на слайсы отделяют слайс, который заканчивается в пределах соответственной строки CTU, от последующего слайса изображения и при этом последующий слайс начинается либо в соответственной строке CTU, либо в последующей строке CTU, которая следует за соответственной строкой CTU.
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
G | |||
CLARE et al | |||
"Wavefront Parallel Processing for HEVC Encoding and Decoding", JCTVC-F274 (version 2), опубл | |||
Устройство для электрической сигнализации | 1918 |
|
SU16A1 |
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
СИСТЕМА И СПОСОБ ДЛЯ ЭФФЕКТИВНОЙ АДАПТАЦИИ МАСШТАБИРУЕМЫХ ПОТОКОВ | 2006 |
|
RU2407217C2 |
Авторы
Даты
2018-02-02—Публикация
2013-02-26—Подача