Эффективное по памяти моделирование контекста

Изобретение относится к технологиям кодирования и декодирования видеоданных. Техническим результатом является повышение эффективности кодирования или декодирования за счет того, что энтропийное кодирование или декодирование осуществляется с использованием контекстной информации, определенной на основании глубины в структуре квадродерева. Предложен способ кодирования видеоданных. Способ включает в себя этап, на котором определяют контекстную информацию для одного или более синтаксических элементов, связанных с блоком видеоданных, причем упомянутый блок включен в единицу кодирования (CU) видеоданных. При этом видеоданные определяют структуру квадродерева, и единица кодирования является узлом структуры квадродерева. Определение контекстной информации содержит определение контекстной информации на основе глубины в структуре квадродерева. Далее, согласно способу, осуществляют энтропийное кодирование одного или более синтаксических элементов с использованием определенной контекстной информации. 4 н. и 40 з.п. ф-лы, 11 ил.

 

[0001] Настоящая заявка испрашивает приоритет предварительной заявки США № 61/493,361, поданной 3 июня 2011 года, предварительной заявки США № 61/504,153, поданной 1 июля 2011 года, и предварительной заявки США 61/546,732, поданной 13 октября 2011 года, содержание каждой из которых включено в настоящий документ посредством ссылки во всей их полноте.

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

[0002] Настоящее изобретение относится к видеокодированию и, более конкретно, к энтропийному кодированию видеоданных.

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0015] На Фиг.4А и 4B представлены концептуальные схемы, иллюстрирующие пример квадродерева и соответствующую наибольшую единицу кодирования (LCU).

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

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

[0018] На Фиг.7 представлена блок-схема последовательности операций, иллюстрирующая примерный способ энтропийного кодирования блока видеоданных.

[0019] На Фиг.8 представлена блок-схема, иллюстрирующая другой примерный способ энтропийного кодирования блока видеоданных.

[0020] На Фиг.9 представлена блок-схема, иллюстрирующая другой примерный способ энтропийного кодирования блока видеоданных.

[0021] На Фиг.10 представлена блок-схема, иллюстрирующая другой примерный способ энтропийного кодирования блока видеоданных.

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

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

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

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

[0025] Что касается (CABAC), видеокодер может выбрать модель контекста, которая работает на контексте для кодирования символов, ассоциированных с блоком видеоданных. Контекст может относиться, например, к тому, являются ли значения нулевыми или ненулевыми для символов, соседних с символом, кодируемым в текущий момент.

[0026] Согласно некоторым примерам, позиции значимых коэффициентов (т.е. ненулевых коэффициентов преобразования) в видеоблоке могут кодироваться до значений коэффициентов преобразования, которые могут упоминаться как "уровни" коэффициентов преобразования. Процесс кодирования местоположений значимых коэффициентов может упоминаться как кодирование карты значимости. Карта значимости (SM) включает в себя двумерный массив двоичных значений, которые указывают местоположения значимых коэффициентов. Например, SM для блока видеоданных может включать в себя двумерный массив из единиц и нулей, в котором единицы указывают позиции значимых коэффициентов преобразования в блоке, а нули указывают позиции незначимых (обнуленные) коэффициентов преобразования в блоке. Единицы и нули упоминаются как "флаги значимых коэффициентов".

[0027] После того как SM закодирована, видеокодер может энтропийно кодировать уровень каждого значимого коэффициента преобразования. Например, видеокодер может преобразовывать абсолютное значение каждого ненулевого коэффициента преобразования в двоичную форму. Таким образом, каждый ненулевой коэффициент преобразования может быть "бинаризован", например, с использованием унарного кода, содержащего один или более битов, или "бинов" (элементов кодированных данных). Кроме того, ряд других бинаризованных синтаксических элементов может быть включен, чтобы позволить видеодекодеру декодировать видеоданные.

[0028] Видеокодер может кодировать каждый “бин” для блока видеоданных, в соответствии с коэффициентами преобразования и с синтаксической информацией для блока, используя вероятностные оценки для каждого бина. Вероятностные оценки могут указывать вероятность того, что бин имеет данное двоичное (бинарное) значение (например, "0" или "1"). Вероятностные оценки могут быть включены в модель вероятности, также известную как "модель контекста". Видеокодер может выбрать модель контекста путем определения контекста для бина. Контекст для бина синтаксического элемента может включать в себя значения соответствующих бинов ранее кодированных соседних синтаксических элементов. В некоторых примерах контекст для кодирования текущего синтаксического элемента может включать в себя соседние синтаксические элементы, расположенные сверху и слева от текущего синтаксического элемента. В любом случае, отличающаяся модель вероятности определяется для каждого контекста. После кодирования бина, модель контекста дополнительно обновляется на основании значения бина, чтобы отразить самые актуальные вероятностные оценки.

[0029] В некоторых примерах блоки видеоданных величиной 4x4 пикселей могут быть использованы для кодирования изображения. Например, кадр из 1920x1080 пикселей (например, для видео 1080p) может включать в себя 495 блоков 4x4 пикселей. Соответственно, для того чтобы бит контекстной информации был сохранен на каждый блок, видеокодер может буферизовать 495 битов информации. Кроме того, в некоторых примерах более чем один бит информации может быть использован в качестве контекста для кодирования конкретного синтаксического элемента, что может значительно увеличить количество данных, буферизуемых для энтропийного кодирования.

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

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

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

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

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

[0035] Аспекты настоящего раскрытия могут быть реализованы, чтобы ограничить местоположения, из которых выводится контекст. То есть, согласно некоторым аспектам настоящего раскрытия, видеокодер не может использовать контекстную информацию из некоторых соседних блоков, а вместо этого выводит контекстную информацию из других источников. Соответственно, методы настоящего раскрытия могут устранить контекстные зависимости, описанные выше, и улучшить пропускную способность синтаксического анализа.

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

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

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

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

[0040] Настоящее раскрытие может в целом относиться к видеокодеру 20, "сигнализирующему" определенную информацию к другому устройству, такому как видеодекодер 30. Следует понимать, однако, что видеокодер 20 может сигнализировать информацию путем ассоциирования определенных синтаксических элементов с различными участками кодированных видеоданных. То есть, видеокодер 20 может "сигнализировать" данные путем сохранения определенных синтаксических элементов в заголовках различных кодированных частей видеоданных. В некоторых случаях такие синтаксические элементы могут быть закодированы и сохранены (например, сохранены в носителе 34 хранения данных или файловом сервере 36), прежде чем приниматься и декодироваться видеодекодером 30. Таким образом, термин "сигнализация" может в целом относиться к передаче синтаксиса или других данных для декодирования сжатых видеоданных, независимо от того, происходит ли такая передача в реальном или почти реальном времени или в течение определенного периода времени, как это может происходить при сохранении синтаксических элементов на носителе во время кодирования, которые затем могут быть извлечены с помощью декодирующего устройства в любое время после сохранения на этом носителе.

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

[0042] В примере на Фиг.1 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20 и интерфейс 22 вывода. Целевое устройство 14 включает интерфейс 28 ввода, видеодекодер 30 и устройство 32 отображения. В соответствии с настоящим раскрытием, видеокодер 20 из устройства-источника 12 может быть выполнен с возможностью применять методы для кодирования векторов движения и для выполнения двунаправленного предсказания в HEVC и его расширениях, таких как многовидовые или 3DV расширения. В других примерах, устройство-источник и целевое устройство могут включать в себя другие компоненты или конфигурации. Например, устройство-источник 12 может принимать видеоданные от внешнего источника 18 видео, например, внешней камеры. Аналогичным образом, целевое устройство 14 может взаимодействовать с внешним устройством отображения, но не включать в себя интегрированное устройство отображения.

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

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

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

[0046] Интерфейс 28 ввода целевого устройства 14 получает информацию из машиночитаемого носителя 16. Информация машиночитаемого носителя 16 может включать в себя синтаксическую информацию, определенную видеокодером 20, которая также используется видеодекодером 30, которая включает в себя синтаксические элементы, которые описывают характеристики и/или обработку блоков и других кодируемых единиц, например GOP. В частности, настоящее раскрытие относится к «кодированной единице" в качестве единицы данных, включающей в себя несколько блоков, таких как сегмент, изображение, набор волновых фронтов, или элемент мозаичного изображения. Таким образом, термин "кодированная единица" следует понимать как включающий в себя несколько блоков, например, несколько наибольших единиц кодирования (LCU). Кроме того, термин "кодированная единица" не следует путать с термином «единица кодирования" или CU, как используется в HEVC. Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества устройств отображения, таких как электронно-лучевая трубка (ЭЛТ), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или устройство отображения другого типа.

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

[0048] Стандарт ITU-T H.264/MPEG-4 (AVC) был сформулирован ITU-T Экспертной группой по кодированию видео (VCEG) вместе с ISO/IEC Экспертной группой по движущимся изображениям (MPEG) в виде продукта коллективного партнерства, известного как Объединенная видео группа (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.

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

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

[0051] Каждый узел структуры данных квадродерева может предоставить данные синтаксиса для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, показывающий, разделена ли CU, соответствующая вершине, на суб-CU. Элементы синтаксиса для CU могут быть определены рекурсивно и могут зависеть от того, разделена ли CU на суб-CU. Если CU не разделена дальше, то она называется листовой (концевой) CU. В настоящем раскрытии четыре суб-CU концевой CU также будут упоминаться как концевые CU, даже если нет явного разделения исходной концевой CU. Например, если CU размером 16x16 не разделена далее, четыре суб-CU размером 8х8 будут также упоминаться как концевые CU, хотя 16x16 CU не была разделена.

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

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

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

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

[0056] Концевая CU, имеющая одну или более PU, может также включать одну или более единиц преобразования (TU). Единицы преобразования могут быть определены с помощью RQT (также упоминается как структура квадродерева TU), как описано выше. Например, флаг разделения может указывать, является ли концевая CU разделенной на четыре единицы преобразования. Затем каждая единица преобразования может быть разделена далее на дальнейшие суб-TU. Если TU не разделяется далее, она может упоминаться как концевая TU. Как правило, для интра-кодирования, все концевые TU, принадлежащие к концевой CU, имеют тот же самый режим интра-предсказания. То есть, тот же самый режим интра-предсказания, как правило, применяется для расчета предсказанных значений для всех TU из концевых CU. Для интра-кодирования, видеокодер 20 может вычислять остаточное значение для каждой концевой TU с использованием режима интра-предсказания, как разность между частью CU, соответствующей TU, и исходным блоком. TU не обязательно ограничивается размером PU. Таким образом, TU может быть больше или меньше, чем PU. Для интра-кодирования, PU может быть соотнесена с соответствующей концевой TU для той же CU. В некоторых примерах максимальный размер концевой TU может соответствовать размеру соответствующей концевой CU.

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

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

[0059] В качестве примера, HM поддерживает предсказания в различных размерах PU. Если предположить, что размер определенной CU равен 2N×2N, HM поддерживает интра-предсказание в PU с размерами 2N×2N или N×N, и интер-предсказание в симметричных размерах PU, равных 2N×2N, 2N×N, N×2N или N×N. HM также поддерживает асимметричное разделение для интер-предсказания в PU с размерами 2N×nU, 2N×nD, nL×2N и nR×2N. В асимметричном разделении одно направление CU не разделено, а другое направление разбивается на 25% и 75%. Часть CU, соответствующая 25%-разделению, обозначается "n", с последующим указанием "Вверх", "Вниз", "Влево" или "Вправо". Так, например, "2N×nU" относится к 2N×2N CU, которая разделена горизонтально с 2N×0,5N PU сверху и 2N×1,5 N PU внизу.

[0060] В настоящем раскрытии записи "N×N" и "N на N» могут использоваться как взаимозаменяемые для ссылки на размеры в пикселях видеоблока в терминах вертикального и горизонтального размера, например, 16×16 пикселей или 16 на 16 пикселей. В общем, 16×16 блок будет иметь 16 пикселей в вертикальном направлении (y = 16) и 16 пикселей в горизонтальном направлении (х = 16). Кроме того, блок N×N, как правило, имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет собой неотрицательное целое число. Пиксели в блоке могут быть расположены в строках и столбцах. Кроме того, блоки не обязательно должны иметь то же самое число пикселей в горизонтальном направлении, что и в вертикальном направлении. Например, блоки могут содержать N×M пикселей, где М не обязательно равно N.

[0061] После кодирования с интра-предсказанием или интер-предсказанием с использованием PU в CU, видеокодер 20 может вычислить остаточные данные для TU в CU. PU могут содержать синтаксические данные, описывающие метод или режим генерации пиксельных данных предсказания в пространственной области (также упоминается как пиксельная область), и TU может содержать коэффициенты в области преобразования, следующие применению преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлет-преобразования, или концептуально подобного преобразования в остаточные видеоданные. Остаточные данные могут соответствовать пиксельным разностям между пикселями некодированного изображения и значениями предсказания, соответствующими PU. Видеокодер 20 может формировать TU, включающие остаточные данные для CU, а затем преобразовывать TU для формирования коэффициентов преобразования для CU.

[0062] После любых преобразований, чтобы сформировать коэффициенты преобразования, видеокодер 20 может выполнять квантование коэффициентов преобразования. Квантование в целом относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить объем данных, используемых для представления коэффициентов, обеспечивая дальнейшее сжатие. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Например, n-битное значение можно округлить вниз до m-битного значения при квантовании, где n больше m.

[0063] После квантования, видеокодер может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть спроектировано так, чтобы помещать коэффициенты более высокой энергии (следовательно, низкой частоты) в переднюю часть матрицы и помещать коэффициенты более низкой энергии (следовательно, высокой частоты) в заднюю часть матрицы. В некоторых примерах, видеокодер 20 может использовать предопределенный порядок сканирования для сканирования квантованных коэффициентов преобразования для получения сериализованного (преобразованного в последовательную форму) вектора, который может быть энтропийно кодирован. В других примерах видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы сформировать одномерный вектор, видеокодер 20 может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивным кодированием переменной длины (CAVLC), контекстно-адаптивным двоичным арифметическим кодированием (CABAC), основанным на синтаксисе контекстно-адаптивным двоичным арифметическим кодированием (SBAC), энтропийным кодированием с разбиением на интервалы вероятности (PIPE) или другим методом энтропийного кодирования. Видеокодер 20 может также энтропийно кодировать синтаксические элементы, связанные с кодированными видеоданными, для использования видеодекодером 30 в декодировании видеоданных.

[0064] Для выполнения CABAC, видеокодер 20 может назначить контекст в рамках модели контекста символу, который должен передаваться. Контекст может относиться, например, к тому, являются ли соседние значения символа ненулевыми или нет. Видеокодер 20 может также энтропийно кодировать синтаксические элементы, такие как флаг коэффициента значимости и флаг последнего коэффициента, сформированные при выполнении адаптивного сканирования.

[0065] В общем, процесс декодирования видео, выполняемый с помощью видеодекодера 30, может включать в себя взаимно обратные методы по отношению к методам кодирования, выполняемым посредством видеокодера 20. Хотя в принципе взаимно обратно, видеодекодер 30 может, в некоторых случаях, выполнять методы, аналогичные тем, которые выполняются посредством видеокодера 20. Видеодекодер 30 также может полагаться на синтаксические элементы или другие данные, содержащиеся в принимаемом битовом потоке, который включает в себя данные, описанные в связи с видеокодером 20.

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

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

[0068] На Фиг.2 представлена блок-схема, иллюстрирующая примерный видеокодер 20, который может реализовать способы, описанные в настоящем раскрытии для энтропийного кодирования видеоданных. Видеокодер 20 может выполнять интра- и интер-кодирование видеоблоков в видео сегментах. Интра-кодирование опирается на пространственное предсказание для уменьшения или устранения пространственной избыточности в видео в пределах определенного видеокадра или изображения. Интер-кодирование основывается на временном предсказании для уменьшения или устранения временной избыточности в видео в пределах смежных кадров или изображений видеопоследовательности. Интра-режим (режим I) может относиться к любому из различных пространственных режимов сжатия. Интер-режимы, такие как однонаправленное предсказание (режим P) или двунаправленное предсказание (режим B), может относиться к любому из различных временных режимов сжатия.

[0069] Как показано на Фиг.2, видеокодер 20 принимает видеоданные, которые должны кодироваться. В примере на Фиг.2, видеокодер 20 включает в себя модуль 40 выбора режима, сумматор 50, модуль 52 преобразования, модуль 54 квантования, модуль 56 энтропийного кодирования и память 64 опорных изображений. Модуль 40 выбора режима, в свою очередь, включает в себя модуль 42 оценки движения, модуль 44 компенсации движения, модуль 46 интра-предсказания и модуль 48 разделения. Для восстановления видеоблока, видеокодер 20 также включает в себя модуль 58 инверсного квантования, модуль 58 инверсного преобразования и сумматор 62. Деблокирующий фильтр (не показан на Фиг.2) также может быть включен для фильтрации границ блоков, чтобы удалять артефакты блочности из восстановленного видео. При желании деблокирующий фильтр будет в типичном случае фильтровать выход сумматора 62. Дополнительные фильтры контура (внутриконтурные или постконтурные) также могут быть использованы в дополнение к деблокирующему фильтру. Такие фильтры не показаны для краткости, но при желании могут фильтровать выход сумматора 50 (в качестве внутриконтурного фильтра).

[0070] Во время процесса кодирования видеокодер 20 принимает видеокадр или сегмент, подлежащий кодированию. Кадр или сегмент может быть разделен на несколько видеоблоков. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с интер-предсказанием принимаемого видеоблока по отношению к одному или более блоков в одном или более опорных кадров, чтобы обеспечить временное сжатие. Модуль 46 интра-предсказания может альтернативно выполнять кодирование с интра-предсказанием принятого видеоблока по отношению к одному или более соседних блоков в том же кадре или сегменте как блока, который должен быть закодирован, чтобы обеспечить пространственное сжатие. Видеокодер 20 может выполнять несколько проходов кодирования, например, чтобы выбрать соответствующий режим кодирования для каждого блока видеоданных.

[0071] Кроме того, модуль 48 разделения может разделять блоки видеоданных на суб-блоки, на основе оценки предыдущих схем разделения в предыдущих проходах кодирования. Например, модуль 48 разделения может первоначально разделить кадр или сегмент на LCU, и разделить каждую из LCU на суб-CU на основе анализа скорости-искажения (например, оптимизации соотношения скорость-искажение). Модуль 40 выбора режима может дополнительно формировать структуру данных квадродерева, указывающего разделение LCU на суб-CU. CU концевого узла квадродерева могут включать в себя одну или более PU и одну или более TU.

[0072] Модуль 40 выбора режима может выбрать один из режимов кодирования, интра- или интер-, например, на основе результатов ошибок, и предоставляет результирующий интра- или интер-кодированный блок на сумматор 50 для генерации данных остаточного блока и на сумматор 62, чтобы восстановить кодированный блок для использования в качестве опорного кадра. Модуль 40 выбора режима также предоставляет синтаксические элементы, такие как вектора движения, указатели интра-режима, информация разделения и другая такая синтаксическая информация, на модуль 56 энтропийного кодирования.

[0073] Модуль 42 оценки движения и модуль 44 компенсации движения могут быть с высокой степени интегрированы, но проиллюстрированы отдельно для концептуальных целей. Оценка движения, выполняемая модулем 42 оценки движения, является процессом создания векторов движения, которые оценивают движение для видео блоков. Вектор движения, например, может указывать на смещение PU видеоблока внутри текущего видеокадра или изображения по отношению к блоку предсказания в опорном кадре (или другой кодированной единице) относительно текущего блока, кодируемого в пределах текущего кадра (или другой кодированной единицы).

[0074] Блок предсказания представляет собой блок, который предполагается точно соответствующим кодируемому блоку, в терминах пиксельной разности, что может быть определено суммой абсолютных разностей (SAD), суммой квадратов разностей (SSD) или других метрик разностей. В некоторых примерах, видеокодер 20 может вычислить значения для суб-целочисленных пиксельных позиций опорных изображений, хранящихся в памяти 64 опорных изображений. Например, видеокодер 20 может интерполировать значения пиксельных позиций в одну четверть, пиксельных позиций в одну восьмую или других дробных пиксельных позиций опорного изображения. Таким образом, модуль 42 оценки движения может выполнить поиск движения относительно полных пиксельных позиций и дробных пиксельных позиций и выводить вектора движения с точностью, определяемой долей пикселя.

[0075] Модуль 42 оценки движения вычисляет вектор движения для PU в видеоблока в интра-кодированном сегменте путем сравнения позиции PU с позицией блока предсказания опорного изображения. Опорное изображение может быть выбрано из первого списка опорных изображений (список 0) или второго списка опорных изображений (список 1), каждый из которых идентифицирует одно или более опорных изображений, сохраненных в памяти 64 опорных кадров. Модуль 42 оценки движения посылает вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.

[0076] Компенсация движения, выполняемая модулем 44 компенсации движения, может включать в себя извлечение или генерацию блока предсказания на основе вектора движения, определенного модулем 42 оценки движения. Вновь, модуль 42 оценки движения и модуль 44 компенсации движения могут быть функционально интегрированы, в некоторых примерах. После приема вектора движения для PU текущего блока видео, модуль 44 компенсации движения может поместить блок предсказания, на который указывает вектор движения, в один из списков опорных изображений. Сумматор 50 формирует остаточный видеоблок путем вычитания пиксельных значений блока предсказания из пиксельных значений текущего видеоблока, который кодируется, формируя пиксельные разностные значения, как обсуждается ниже. В целом, модуль 42 оценки движения выполняет оценку движения по отношению к компонентам яркости, и модуль 44 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости, для компонентов цветности и компонентов яркости. Модуль 40 выбора режима также может генерировать синтаксические элементы, связанные с видеоблоками и видеосегментами для использования видеодекодером 30 в декодирования видеоблоков видеосегмента.

[0077] Модуль 46 интра-предсказания может выполнять интра-предсказание текущего блока, в качестве альтернативы интер-предсказанию, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как описано выше. В частности, модуль 46 интра-предсказания может определить режим интра-предсказания, используемый для кодирования текущего блока. В некоторых примерах модуль 46 интра-предсказания может кодировать текущий блок, используя различные режимы интра-предсказания, например, во время отдельного прохода кодирования, и модуль 46 интра-предсказания (или модуль 40 выбора режима, в некоторых примерах) может выбрать соответствующий режим интра-предсказания для использования из тестируемых режимов.

[0078] Например, модуль 46 интра-предсказания может вычислять значения скорости-искажения с использованием анализа скорости-искажения для различных тестируемых режимов интра-предсказания и выбирать режим интра-предсказания, имеющий лучшие характеристики скорости-искажения среди тестируемых режимов. Анализ скорости-искажения обычно определяет степень искажения (или ошибку) между кодированным блоком и исходным, некодированным блоком, который кодировался, чтобы сформировать кодированный блок, а также битовую скорость (то есть число битов), используемую для формирования кодированного блока. Модуль 46 интра-предсказания может вычислить отношения из искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим интра-предсказания демонстрирует лучшее значение скорости-искажения для блока.

[0079] Видеокодер 20 формирует остаточный видеоблок путем вычитания данных предсказания из модуля 40 выбора режима из исходного видеоблока, который кодируется. Сумматор 50 представляет собой компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 обработки преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT) или концептуально сходное преобразование к остаточному блоку, формируя видеоблок, содержащий остаточные значения коэффициентов преобразования. Модуль 52 обработки преобразования может выполнять другие преобразования, которые концептуально подобны на DCT. Вейвлет-преобразования, целочисленные преобразования, поддиапазонные преобразования или другие типы преобразований также могут использоваться. В любом случае, модуль 52 обработки преобразования применяет преобразование к остаточному блоку, формируя блок остаточных коэффициентов преобразования. Преобразование может преобразовать остаточную информацию из области пиксельных значений в область преобразования, такую как частотная область.

[0080] Модуль 52 обработки преобразования может посылать результирующие коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования для дальнейшего снижения битовой скорости. Процесс квантования может уменьшить битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена путем регулировки параметра квантования. В некоторых примерах, модуль 54 квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы, модуль 56 энтропийного кодирования может выполнять сканирование.

[0081] После квантования, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с разбиением на интервалы вероятности (PIPE) или другой метод энтропийного кодирования. В случае контекстно-зависимого энтропийного кодирования, контекст может быть основан на соседних блоках.

[0082] Что касается САВАС, модуль 56 энтропийного кодирования может выбрать модель контекста, которая работает на контексте для кодирования символов, связанных с блоком видеоданных. Например, блок 56 энтропийного кодирования может энтропийно кодировать каждый синтаксический элемент для блока видеоданных с использованием оценки вероятности для каждого синтаксического элемента. Оценки вероятности могут указывать вероятность того, что элемент имеет заданное значение. Оценки вероятности могут быть включены в модель вероятности, также упоминаемую как модель контекста. Модуль 56 энтропийного кодирования может выбрать модель контекста путем определения контекстной информации (или, проще говоря, "контекста") для синтаксического элемента. Отличающаяся модель вероятности определяется для каждого контекста. После кодирования синтаксического элемента, модуль 56 энтропийного кодирования может обновить выбранную модель контекста на основе фактического значения синтаксического элемента, чтобы отражать наиболее актуальные оценки вероятности. То есть, например, модуль 56 энтропийного кодирования может обновлять способ, которым выбирается модель контекста для перехода к новой модели контекста.

[0083] В некоторых примерах контекст для конкретного синтаксического элемента может включать значения связанных синтаксических элементов из ранее кодированных соседних синтаксических элементов. Например, модуль 56 энтропийного кодирования может определить контекст для кодирования текущего синтаксического элемента на основе соседних синтаксических элементов, расположенных сверху и слева от текущего синтаксического элемента. Как отмечалось выше, новый стандарт HEVC позволяет рекурсивно разделять LCU на суб-CU величиной 4×4 пикселя. Соответственно, пиксельное изображение 1920×1080 (например, для 1080p видео) может включать в себя больше, чем 495 4×4 пиксельных блоков в буфере строки, продолжающемся горизонтально по изображению. Если видеокодер 20 буферизует бит контекстной информации на каждый блок, видеокодер 20 может буферизовать 495 битов информации.

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

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

[0086] В качестве еще одного примера, модуль 56 энтропийного кодирования может выводить контекст для кодирования синтаксических элементов, связанных с текущим блоком, на основе локальной информации LCU. Например, модуль 56 энтропийного кодирования может получить контекстную информацию для данных интер-предсказания на основе глубины CU, которая обычно соответствует количеству раз разделения LCU, чтобы достичь CU. В качестве примера для целей объяснения, предположим, что эта LCU имеет размер 64×64 пикселов (глубина равна нулю). Суб-CU из LCU может быть размером 32×32 пикселей на глубине CU, равной единице, в то время как дополнительная суб-CU этой суб-CU может быть размером 16×16 пикселей на глубине CU, равной двум.

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

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

[0089] После энтропийного кодирования модулем 56 энтропийного кодирования, кодированный битовый поток может быть передан на другое устройство (например, видеодекодер 30) или сохранен для последующей передачи или извлечения. Модуль 58 инверсного квантования и модуль 60 инверсного преобразования применяют инверсное квантование и инверсное преобразование, соответственно, для восстановления остаточного блока в пиксельной области, например, для последующего использования в качестве опорного блока. Модуль 44 компенсации движения может вычислить опорный блок путем добавления остаточного блока к блоку предсказания одного из кадров памяти 64 опорных кадров. Модуль 44 компенсации движения может также применять один или несколько фильтров интерполяции к восстановленному остаточному блоку для вычисления значения суб-целочисленных пиксельных значений для использования в оценке движения. Сумматор 62 добавляет восстановленный остаточный блок к скомпенсированному по движению блоку предсказания, сформированному модулем 44 компенсации движения, для получения восстановленного видеоблока для сохранения в системе 64 опорных кадров. Восстановленный видеоблок может быть использован модулем 42 оценки движения и модулем 44 компенсации движения в качестве опорного блока, чтобы интер-кодировать блок в последующем видеокадре.

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

[0091] На Фиг.3 представлена блок-схема, иллюстрирующая примерный видеодекодер 30, который может реализовать способы, описанные в настоящем раскрытии, для энтропийного кодирования видеоданных. В примере на Фиг.3 видеодекодер 30 включает в себя модуль 80 энтропийного декодирования, модуль 81 предсказания, модуль 86 инверсного квантования, модуль 88 инверсного преобразования, сумматор 90 и память 92 опорных кадров. Модуль 81 предсказания включает в себя модуль 82 компенсации движения 82 и модуль 84 интра-предсказания.

[0092] Во время процесса декодирования, видеодекодер 30 принимает кодированный битовый поток видеоданных, который представляет видеоблоки кодированных видеосегментов и связанные с ними синтаксические элементы из видеокодера 20. Модуль 80 энтропийного декодирования видеодекодера 30 энтропийно декодирует битовый поток для генерации квантованных коэффициентов, векторов движения и других синтаксических элементов.

[0093] Видеодекодер 30 может получить синтаксические элементы на уровне видео сегмента и/или на уровне видеоблока. Например, в качестве примера, видеодекодер 30 может получать сжатые видеоданные, которые были сжаты для передачи через сеть в так называемые “единицы уровня сетевой абстракции" или NAL единицы. Каждая NAL единица может содержать заголовок, который идентифицирует тип данных, сохраненных в NAL единице. Существуют два типа данных, которые обычно хранятся в NAL единице. Данные первого типа, хранящиеся в NAL единице, являются данными уровня видеокодирования (VCL), которые включают в себя сжатые видеоданные. Данные второго типа, хранящиеся в NAL единице, называются не-VCL данными, которые включают в себя дополнительную информацию, такую как наборы параметров, которые определяют данные заголовка, общие для большого количества NAL единиц, и дополнительную информацию расширения (SEI). Например, наборы параметров могут содержать информацию последовательности на уровне заголовка (например, в наборах параметров последовательности (SPS)) и нечасто изменяющуюся информацию заголовка на уровне изображения (например, в наборах параметров изображения (PPS)). Нечасто изменяющуюся информацию, содержащуюся в наборах параметров, не требуется повторять для каждой последовательности или изображения, тем самым улучшая эффективность кодирования. Кроме того, использование наборов параметров позволяет осуществлять внедиапазонную передачу информации заголовка, тем самым избегая необходимости избыточных передач для обеспечения устойчивости к ошибкам.

[0094] Модуль 80 энтропийного декодирования может быть выполнен аналогично модулю 56 энтропийного кодирования, как описано выше со ссылкой на видеокодер 20 по Фиг.2. Например, модуль 80 энтропийного декодирования может выбрать модель контекста, которая работает на контексте для декодирования символов, связанных с блоком видеоданных. То есть, модуль 80 энтропийного декодирования может энтропийно декодировать каждый синтаксический элемент для блока видеоданных при помощи вероятностной оценки для каждого синтаксического элемента. В соответствии с методами настоящего раскрытия модуль 80 энтропийного декодирования может определить контекст для энтропийного декодирования видеоданных таким образом, что уменьшает или устраняет количество информации, которое буферизуется видеодекодером 30. Например, в соответствии с аспектами данного описания, вместо использования данных соседних сверху блоков в качестве контекста при декодировании синтаксических элементов, связанных с текущим блоком (например, блока, который находится не в верхней строке кодированной единицы, например, кадра или сегмента), модуль 80 энтропийного декодирования может использовать только данные из соседних слева блоков.

[0095] В качестве другого примера, модуль 80 энтропийного декодирования может использовать данные из соседнего сверху блока в качестве контекста для декодирования синтаксических элементов, связанных с текущим блоком, но только тогда, когда текущий блок является суб-CU из секционированной наибольшей единицы кодирования (LCU), и соседний сверху блок находится в той же LCU. Другими словами, модуль 80 энтропийного декодирования может быть сконфигурирован, чтобы избегать использования контекста, который пересекает верхнюю границу LCU. В качестве еще одного примера, модуль 80 энтропийного декодирования может выводить контекст для декодирования синтаксических элементов, связанных с текущим блоком, на основе локальной информации LCU (например, глубина CU, глубина TU и т.п.). В другом примере модуль 80 энтропийного декодирования может использовать один контекст для декодирования некоторых синтаксических элементов синтаксиса на основе самих элементов. Модуль 80 энтропийного декодирования может в некоторых случаях использовать сочетание этих методов, чтобы определить контекст. После определения контекста для декодирования конкретного синтаксического элемента, модуль 80 энтропийного декодирования может выбрать вероятностную модель, соответствующую контексту, и декодировать синтаксический элемент с использованием выбранной вероятностной модели.

[0096] Модуль 80 энтропийного декодирования отсылает вектора движения и другие декодированные синтаксические элементы в модуль 81 предсказания 81. Когда видео сегмент кодируется как интра-кодированный (I) сегмент, модуль 84 интра-предсказания модуля 81 предсказания может генерировать данные предсказания для видеоблока текущего видео сегмента на основе сигнализированного режима интра-предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда видео кадр кодируется как интер-кодированный (т.е. B, P или GPB) сегмент, модуль 82 компенсации движения модуля 81 предсказания 81 формирует блоки предсказания для видеоблока текущего видео сегмента на основе векторов движения и других синтаксических элементов, принятых из модуля 80 энтропийного декодирования. Блоки предсказания могут быть сформированы из одного из опорных изображений в одном из списков опорных изображений. Видео декодер 30 может сформировать списки опорных кадров, список 0 и список 1, используя методы формирования по умолчанию на основе опорных изображений, хранящихся в памяти 92 опорных изображений.

[0097] Модуль 82 компенсации движения определяет информацию предсказания для видеоблока текущего видео сегмента путем анализа векторов движения и другие синтаксических элементов и использует информацию предсказания для получения блоков предсказания для текущего декодируемого видеоблока. Например, модуль 82 компенсации движения использует некоторые из полученных синтаксических элементов для определения режима предсказания (например, интра- или интер-предсказания), использованных для кодирования видеоблоков видеосегментов, тип сегмента интер-предсказания (например, B-сегмент, P-сегмент или GPB-сегмент), информацию формирования для одного или более списков опорных изображений для сегмента, векторов движения для каждого интер-кодированного видеоблока сегмента, статус интер-предсказания для каждого интер-кодированного видеоблока сегмента и другую информацию для декодирования видеоблоков в текущем видеосегменте.

[0098] Модуль 82 компенсации движения также может выполнять интерполяцию на основе фильтров интерполяции. Модуль 82 компенсации движения может использовать фильтры интерполяции, которые используются видеокодером 20 во время кодирования видеоблоков для расчета интерполированных значений для суб-целочисленных пикселей опорных блоков. В этом случае модуль 82 компенсации движения может определить фильтры интерполяции, используемые видеокодером 20, из принятых синтаксических элементов и использовать фильтры интерполяции для формирования блоков предсказания.

[0099] Модуль 86 инверсного квантования инверсно квантует, т.е. де-квантует, квантованные коэффициенты преобразования, предусмотренные в битовом потоке и декодированные модулем 80 энтропийного декодирования. Процесс инверсного квантования может включать в себя использование параметра квантования, вычисленного посредством видеокодера 20 для каждого видеоблока в видеосегменте, чтобы определить степень квантования и, аналогично, степень инверсного квантования, которая должна быть применена.

[0100] Модуль 88 инверсного преобразования применяет инверсное преобразование, например, инверсное ДКП, инверсное целочисленное преобразование или концептуально подобный процесс инверсного преобразования, к коэффициентам преобразования для получения остаточных блоков в пиксельной области. Согласно аспектам настоящего раскрытия, модуль 88 инверсного преобразования может определить, каким образом преобразования были применены к остаточным данных. То есть, например, модуль 88 инверсного преобразования может определить RQT, представляющий то, каким образом преобразования (например, DCT, целочисленное преобразование, вейвлет-преобразование или одно или более других преобразований) были применены к остаточным выборкам яркости и остаточным выборкам цветности, связанным с блоком принятых видеоданных.

[0101] После того, как модуль 82 компенсации движения генерирует блок предсказания для текущего видеоблока на основе векторов движения и других синтаксических элементов, видеодекодер 30 формирует декодированный видеоблок путем суммирования остаточных блоков из модуля 88 инверсного преобразования с соответствующими блоками предсказания, сформированными модулем 82 компенсации движения. Сумматор 90 представляет собой компонент или компоненты, которые выполняют эту операцию суммирования. При желании фильтр устранения блочности может также применяться для фильтрации декодированных блоков, чтобы удалить артефакты блочности. Другие фильтры контура (в контуре кодирования или после контура кодирования) также могут быть использованы для сглаживания пиксельных переходов или иным образом улучшения качества видео. Декодированные видеоблоки в данном кадре или изображении затем сохраняются в памяти 92 опорных изображений, в которой хранятся опорные кадры, используемые для последующей компенсации движения. Память 92 опорных изображений также сохраняет декодированное видео для последующего представления на устройстве отображения, таком как устройство отображения 32 на Фиг.1. Таким образом, видеодекодер 30 является примером видеодекодера, который может выполнять способ, включающий в себя определение контекстной информации для блока видеоданных, где этот блок включен в кодированную единицу видеоданных, где блок находится ниже верхнего ряд блоков в кодируемой единице, и где контекстная информация не включает в себя информацию из соседнего сверху блока в кодированной единице. Способ может также включать энтропийное декодирование данных блока с использованием определенной контекстной информации.

[0102] Фиг.4А и 4В представляют собой концептуальные схемы, иллюстрирующие пример квадродерева 150 и соответствующей наибольшей единицы 172 кодирования. Фиг.4А показывает примерное квадродерево 150, которое включает в себя узлы, расположенные в иерархическом порядке. Квадродерево 150 может быть связано, например, с блоком дерева в соответствии с предлагаемым стандартом HEVC. Каждый узел в квадродереве, например, квадродереве 150, может быть концевым узлом без потомков или с четырьмя дочерними узлами. В примере на Фиг.4А, квадродерево 150 включает в себя корневой узел 152. Корневой узел 152 имеет четыре дочерних узла, в том числе концевые узлы 156A-156C (концевые узлы 156) и узел 154. Поскольку узел 154 не является концевым узлом, узел 154 включает в себя четыре дочерних узла, которые в этом примере являются концевыми узлами 158A-158D (концевые узлы 158).

[0103] Квадродерево 150 может включать в себя данные, описывающие характеристики соответствующей наибольшей единицы кодирования (LCU), такой как LCU 172 в этом примере. Например, квадродерево 150, по своей структуре, может описывать расщепление LCU на суб-CU. Предположим, что LCU 172 имеет размер 2N×2N. LCU 172, в этом примере, имеет четыре суб-CU 176A-176C (суб-CU 176) и 174, каждая размером N×N. Суб-CU 174 дополнительно разбита на четыре подгруппы CU 178А-178D (суб-CU 178), каждая размером N/2×N/2. Структура квадродерева 150 соответствует разбиению LCU 172, в данном примере. То есть, корневой узел 152 соответствует LCU 172, концевые узлы 156 соответствуют суб-CU 176, узел 154 соответствует суб-CU 174 и концевые узлы 158 соответствуют суб-CU 178.

[0104] Данные для узлов квадродерева 150 могут описывать, разделена ли CU, соответствующая узлу. Если CU разделена, четыре дополнительных узла могут присутствовать в квадродереве 150. В некоторых примерах, узел квадродерева может быть реализован аналогично следующему псевдокоду:

квадродерево_узел{

булево разделение_флаг(1);

//данные сигнализации

если (разделение_флаг){

квадродерево_дочерний узел1;

квадродерево_дочерний узел2;

квадродерево_дочерний узел3;

квадродерево_дочерний узел4;

}

}

Значение разделение_флаг (split_flag) может быть однобитным значением, представляющим, разделена ли CU, соответствующая текущему узлу. Если CU не разделена, то значение split_flag может быть равно '0', а если CU разделена, то значение split_flag может быть равно '1'. Что касается примера квадродерева 150, массив значений split_flag может быть 101000000.

[0105] Как уже отмечалось выше, глубина CU может относиться к степени, в которой LCU, такая как LCU 172, была разделена. Например, корневой узел 152 может соответствовать глубине CU, равной нулю, в то время как узел 154 и концевые узлы 156 могут соответствовать глубине CU, равной единице. Кроме того, концевые узлы 158 могут соответствовать глубине CU, равной двум. Согласно аспектам настоящего раскрытия, глубина CU и/или глубина TU может быть использована в качестве контекста для энтропийного кодирования определенных синтаксических элементов. В качестве примера для целей объяснения, один или более синтаксических элементов, связанных с концевым узлом 156A, могут быть энтропийно кодированы с использованием отличающихся моделей контекста, по сравнению с концевым узлом 158A, так как концевой узел 156A находится на глубине, равной единице, а концевой узел 158А находится на глубине, равной двум.

[0106] В то время как Фиг.4А иллюстрирует пример CU квадродерева, следует понимать, что аналогичные квадродеревья могут быть применены к TU концевого узла CU. То есть, концевой узел CU может включать в себя TU квадродерево (упоминаемое как остаточное квадродерево (RQT)), которое описывает разбиение TU для CU. TU квадродерево может в целом напоминать CU квадродерево, за исключением того, что TU квадродерево может сигнализировать режимы интра-предсказания для единиц TU единицы CU в индивидуальном порядке.

[0107] В соответствии со способами настоящего раскрытия, видеокодер (например, видеокодер 20 и/или видеодекодер 30) может определить контекст для данных интер-предсказания текущего блока на основе CU глубины текущего блока. То есть, например, при кодировании синтаксических элементов для CU на определенной глубине CU, видеокодер может использовать CU глубину как контекстную информацию для выбора вероятностной модели для кодирования синтаксических элементов. В качестве другого примера, видеокодер может выводить контекстную информацию для данных интра-предсказания на основе информации глубины преобразования. То есть, например, при кодировании синтаксических элементов для TU на определенной глубине TU, модуль 56 энтропийного кодирования может использовать глубину TU как контекстную информацию для выбора вероятностной модели для кодирования синтаксических элементов.

[0108] На Фиг.5 показана блок-схема, иллюстрирующая пример соседних блоков, из которых может быть определен контекст для энтропийного кодирования блока. В то время как Фиг.5 описана в отношении видеодекодера 30, следует понимать, что методы данного изобретения могут быть выполнены с помощью различных других видеокодеров, в том числе видеокодера 20 (Фиг.1 и 2), других процессоров, блоков обработки, аппаратный модулей кодирования, таких как кодеры/декодеры (кодеки), и тому подобное.

[0109] Видеодекодер 30 может принимать энтропийно кодированные данные, связанные с текущим блоком 180. Например, видеодекодер 30 может принимать энтропийно кодированную карту значимости, коэффициенты преобразования, а также ряд других синтаксических элементов, чтобы позволить видеодекодеру 30 надлежащим образом декодировать текущий блок 180. Видеодекодер 30 может определить контекст для одного или более из принятых синтаксических элементов на основе значений синтаксических элементов, связанных с соседним сверху блоком 182 и соседним слева блоком 184.

[0110] Предположим, для целей пояснения, что видеодекодер 30 в текущий момент декодирует синтаксический элемент, указывающий конкретный режим предсказания (например, режим интра-предсказания) пикселей в пределах текущего блока 180. В этом примере видеодекодер 30 может идентифицировать режимы интра- предсказания из соседнего сверху блока 182 и соседнего слева блока 184, чтобы определить контекст для текущего синтаксического элемента. Соответственно, модель контекста, используемая для энтропийного декодирования текущего синтаксического элемента, может зависеть от режимов интра-предсказания соседнего сверху блока 182 и соседнего слева блока 184. Таким образом, видеодекодер 30 может хранить или буферизовать данные, указывающие режимы интра-предсказания из соседнего сверху блока 182 и соседнего слева блока 184, так что такие данные доступны при выполнении энтропийного декодирования.

[0111] В то время как энтропийное кодирование синтаксического элемента, связанного с режимом интра-предсказания, описано для примера, другие синтаксические элементы могут также кодироваться на основании данных соседних блоков. Например, по отношению к новому стандарту HEVC, следующие синтаксические элементы могут быть энтропийно кодированы с использованием контекста, который включает в себя данные из соседних блоков, в том числе соседнего сверху блока 182 и соседнего слева блока 184:

1. skip_flag [х0] [у0].

а) spkip_flag, равный 1, указывает, что для текущей CU, при декодировании P или B-сегмента, никакие дополнительные синтаксические элементы не обрабатываются после skip_flag[х0][y0], кроме индексов предсказателя вектора движения. skip_flag[х0][y0], равный 0, указывает, что единица кодирования не пропускается. Индексы х0, у0 массива указывают местоположение (х0, у0) верхней левой выборки яркости блока кодирования относительно верхней левой выборки яркости изображения.

2. split_coding_unit_flag

а) split_coding_unit_flag [х0] [y0] указывает, разделена ли единица кодирования на единицы кодирования с половинным горизонтальным и вертикальным размером. Индексы х0, у0 массива указывают местоположение (х0, у0) верхней левой выборки яркости блока кодирования относительно верхней левой выборки яркости изображения.

3. cpb блока яркости

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

4. cbp блока цветности

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

5. bin0 интра-режима цветности

а) intra_chroma_pred_mode[х0][y0] определяет режим интра- предсказания для выборок цветности. Индексы х0, у0 массива указывают местоположение (х0, у0) верхней левой выборки яркости блока предсказания (PU) по отношению к верхней левой выборке яркости изображения.

6. no_residual_data_flag (флаг отсутствия остаточных данных)

а) no_residual_data_flag, равный 1, указывает, что остаточные данные отсутствуют в текущей единице кодирования. no_residual_data_flag, равный 0, указывает, что остаточные данные присутствуют в текущей единице кодирования.

7. merge_flag (флаг слияния)

а) merge_flag[х0][y0] указывает, выведены ли параметры интер-предсказания для текущей PU из соседнего раздела интер-предсказания. Индексы х0, у0 массива указывают местоположение (х0, у0) верхней левой выборки яркости рассматриваемого блока предсказания относительно верхней левой выборки яркости изображения.

8. bin0 of ref_idx

а) ref_idx_10[х0][y0] определяет индекс опорного изображения списка 0 для текущего PU. Индексы х0, у0 указывают местоположение (х0, у0) верхней левой выборки яркости блока предсказания относительно верхней левой выборки яркости изображения.

b) ref_idx_11[х0][y0] имеет ту же семантику, что и ref_idx_10, причем 10 и список 0 заменены на 11 и список 1, соответственно.

с) ref_idx_1c[х0][y0] имеет ту же семантику, что и ref_idx_10, причем 10 и список 0 заменены на 1c и комбинацию списков, соответственно.

9. bin0 of mvd

а) mvd_10[х0][y0][compIdx] определяет разницу между векторным компонентом списка 0, который будет использоваться, и вектором предсказания. Индексы х0, у0 массива указывают местоположение (х0, у0) верхней левой выборки яркости блока предсказания относительно верхней левой выборки яркости изображения. Разности горизонтальных компонентов вектора движения назначается compIdx=0, а вертикальной компоненте вектора движения назначается compIdx = 1.

b) mvd_11[х0][y0][compIdx] имеет ту же семантику, что и mvd_10, причем 10 и список 0 заменены на 11 и список 1, соответственно.

c) mvd_1c[х0][y0][compIdx] имеет ту же семантику, что и mvd_10, причем 10 и список 0 заменены на 1с и комбинацию списков, соответственно.

10. inter_pred_flag

а) inter_pred_flag[х0][y0] указывает, используется ли однонаправленное предсказание или двунаправленное предсказание для текущего блока предсказания. Индексы массива х0, у0 указывают местоположение (х0, у0) верхней левой выборки яркости блока предсказания относительно верхней левой выборки яркости изображения.

11. cbp внутреннего блока цветности

а) Структура кодируемого блока (CBP) определяет, какие блоки могут содержать ненулевые уровни коэффициентов преобразования.

[0112] Синтаксические элементы, перечисленные выше, представлены только в качестве примера. То есть, видеодекодер 30 может использовать данные из соседних блоков, таких как соседний сверху блок 182 и соседний слева блок 184, при выполнении энтропийного кодирования других синтаксических элементов, связанных с текущим блоком 180.

[0113] На Фиг.6 показана блок-схема, иллюстрирующая пример соседних блоков, из которых может быть определен контекст для энтропийного кодирования блока, в соответствии с аспектами настоящего изобретения. В то время как Фиг.6 описана по отношению к видеодекодеру 30, следует понимать, что способы настоящего изобретения могут быть выполнены с помощью различных других видеокодеров, в том числе видеокодера 20 (Фиг.1 и 2), других процессоров, модулей обработки, аппаратных модулей кодирования, таких как кодеры/декодеры (кодеки), и тому подобное.

[0114] Видеодекодер 30 может принять энтропийно кодированные данные, связанные с текущим блоком 190 кодированной единицы 191. Например, видеодекодер 30 может принять энтропийно кодированную карту значимости, коэффициенты преобразования (интра- или интер-предсказания), а также ряд других синтаксических элементов, чтобы позволить видеодекодеру 30 надлежащим образом декодировать текущий блок 190 кодированной единицы 191. Кодированная единица 191 может в общем случае включать в себя предопределенное количество видеоданных, включая множество блоков видеоданных, таких как, например, сегмент, элемент мозаичного изображения или набор элементов мозаичного изображения, набор волновых фронтов, или любой другой предопределенной блок, который включает в себя множество блоков видеоданных. В то время как соседние сверху блоки 194, соседние слева блоки 192 и блоки 196 в общем показаны в виде неразделенных блоков в примере на Фиг.6, следует понимать, что такие блоки могут быть разделены на один или более меньших блоков.

[0115] В соответствии с аспектами настоящего раскрытия, вместо использования данных из соседних сверху блоков 194 (как показано, например, на Фиг.5), в качестве контекстной информации для определения вероятностной модели при кодировании синтаксического элемента, видеодекодер 30 может использовать только данные из соседнего слева блока 192 как контекстную информацию для энтропийного кодирования текущего блока 190. Например, видеодекодер 30 может не использовать данные из соседних сверху блоков 194 или ранее кодированных блоков 196, которые не расположены рядом с текущим блоком 190, в качестве контекстной информации для определения вероятностной модель для энтропийного кодирования текущего блока 190. В этом примере видеодекодер 30 может буферизовать меньше данных, чем в примере, показанном на Фиг.5. Например, в предположении, что максимальный размер LCU равен 64×64 пикселя и наименьший размер CU равен 4×4 пикселей, видеодекодер 30 может потенциально буферизовать данные, связанные только с 16 блоками видеоданных (например, 64/4 = 16 потенциальных соседних слева блоков).

[0116] В соответствии с другими аспектами настоящего раскрытия, видеодекодер 30 может использовать только данные из соседних блоков при определении контекста для энтропийного кодирования текущего блока 190, когда соседние блоки являются частью одной и той же LCU как текущего блока 190. Например, видеодекодер 30 может использовать только данные из соседних блоков для определения контекста для текущего блока 190, когда текущий блок 190 и соседние блоки являются суб-CU той же самой LCU. То есть, в некоторых примерах видеодекодер 30 не использует данные с пересечением границы LCU при определении контекста для энтропийного кодирования текущего блока 190. Ограничение на границу LCU может быть наложено на соседние сверху блоки 194, соседние слева блоки 192 или как на соседние сверху блоки 194, так и соседние слева блоки 192.

[0117] В соответствии с другими аспектами настоящего раскрытия видеодекодер 30 может определить контекст для энтропийного кодирования текущего блока 190 в зависимости от информации локальной CU и/или LCU, связанной с текущим блоком 190. Например, видеодекодер 30 может определить контекст для данных интер-предсказания (например, inter_pred_flag) на основе глубины CU, которая в общем случае соответствует количеству раз, в которое была разделена LCU, к которой принадлежит текущий блок 190. В качестве другого примера, видеодекодер 30 может определить контекст для данных интра-предсказания (например, cbp внутреннего блока цветности) на основе глубины TU, которая в общем случае соответствует количеству раз, на которое была разделена TU текущего блока 190.

[0118] В некоторых примерах видео декодер 30 может использовать данные из комбинации источников в качестве контекстной информации при определении вероятностной модели для энтропийного кодирования текущего блока 190. Например, видеодекодер 30 может реализовать любую комбинацию способов настоящего раскрытия при определении контекста для энтропийного кодирования текущего блока 190. То есть, в качестве примера, видеодекодер 30 может использовать данные из соседних слева блоков 192 (например, исключая соседние сверху блоки или другие блоки), а также данные из информации локальной CU и/или LCU, связанной с текущим блоком 190, в качестве контекстной информации при определении вероятностной модели. В другом примере, видео декодер 30 может использовать данные из соседних блоков, которые являются частью той же LCU, что и текущий блок 190 (например, исключая другие соседние блоки), а также из информации локальной CU и/или LCU, связанной с текущим блоком 190, в качестве контекстной информации при определении вероятностной модели.

[0119] Дополнительно или альтернативно, видеодекодер 30 может использовать один контекст для энтропийного кодирования текущего блока 190. Например, видеодекодер 30 может определить контекст для конкретного синтаксического элемента, связанного с текущим блоком 190 на основании самого синтаксического элемента. В некоторых примерах видеодекодер 30 может использовать один контекст для синтаксических элементов, включая no_residual_data_flag, merge_flag, bin0 of ref_idx и bin0 of mvd, как описано выше со ссылкой на Фиг.5.

[0120] При ограничении местоположений, из которых выводится контекстная информация, как показано и описано на примере Фиг.6, видеодекодер 30 может уменьшить количество данных, буферизуемых в целях вывода контекста. Кроме того, видеодекодер 30 может увеличить пропускную способность и/или надежность синтаксического анализа. Например, как отмечено выше, видеодекодер 30 может анализировать принимаемые видеоданные в соответствии с конкретным процессом анализа (например, синтаксического анализа волнового фронта). В примерах, в которых видеодекодер 30 не определяет контекст с использованием данных из определенных соседних блоков, видеодекодер 30 может устранить контекстные зависимости, чтобы улучшить пропускную способность анализа и возможность обработки видеоданных параллельно. Кроме того, устранение контекстных зависимостей может снизить вероятность ошибок вывода контекста, тем самым улучшая надежность анализа.

[0121] На Фиг.7 представлена блок-схема, иллюстрирующая примерный метод энтропийного кодирования блока видеоданных. Пример, показанный на Фиг.7, в общем, описан как выполняемый видеокодером. Следует понимать, что в некоторых примерах метод по Фиг.7 может быть выполнен посредством видеокодера 20 (фиг.1 и 2) или видеодекодера 30 (Фиг.1 и 3), описанных выше. В других примерах, метод по Фиг.7 может быть выполнен различными другими процессорами, модулями обработки, аппаратными модулями кодирования, такими как кодеры/декодеры (кодеки), и тому подобное.

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

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

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

[0125] В другом примере согласно аспектам настоящего раскрытия, видео кодер может определить контекст для энтропийного кодирования блока на основе информации локальной CU и/или LCU, связанной с блоком. Например, видеокодер может определить контекст на основе глубины CU или глубины TU (например, в соответствии со структурой квадродерева, как показано на Фиг.4), размера LCU или других характеристик. То есть, видеокодер может определить контекст для данных интра-предсказания на основе глубины CU, которая обычно соответствует количеству раз, в которое была разделена LCU, чтобы достичь текущего блока. В качестве другого примера, видеокодер может определить контекст для данных интра-предсказания на основе глубины преобразования, которая описывает количество раз, в которое была разделена TU для текущего блока. Другие примеры также возможны, например, для определения контекста для текущего блока в зависимости от размера CU, к которой принадлежит блок, размера TU, связанного с блоком, и тому подобное.

[0126] В других примерах видеокодер может определить контекст для блока другими способами. Например, согласно некоторым аспектам, видеокодер может использовать один контекст при энтропийном кодировании блока. То есть, видеокодер может определить контекст для кодирования текущего блока на основе синтаксического элемента, кодируемого в настоящее время (например, синтаксический элемент отображается непосредственно на определенный контекст).

[0127] В некоторых примерах видеокодер может использовать информацию из комбинации источников при определении контекста для энтропийного кодирования блока. Например, видеокодер может использовать информацию как из соседних слева блоков, так и информацию из характеристик локальной CU и/или LCU характеристик. В другом примере, видеокодер может использовать информацию из соседних блоков, которые являются частью той же LCU, что и блок, и информацию из характеристик локальной CU и/или LCU. После определения контекста, видео кодер может энтропийно кодировать блок с использованием определенного контекста, как отмечалось выше (204).

[0128] В то время как процесс, показанный на Фиг.7, описан в общем по отношению к кодированию блока видеоданных, следует понимать, что блок видеоданных может включать в себя более одного связанных синтаксических элементов (как описано, например, в отношении Фиг.5 и 6 выше). Соответственно, процесс, показанный и описанный в примере на Фиг.7, может выполняться много раз при энтропийном кодировании блока видеоданных. То есть, например, видеокодер может энтропийно кодировать некоторые синтаксические элементы, связанные с блоком видеоданных, иначе, чем другие. Таким образом, один синтаксический элемент может энтропийно кодироваться с использованием контекста на основе характеристики блока, а другой синтаксический элемент может энтропийно кодироваться другим способом.

[0129] Следует также понимать, что этапы, показанные и описанные со ссылкой на Фиг.7, приведены лишь как один из примеров. То есть, этапы способа по Фиг.7 не обязательно должны выполняться в порядке, показанном на Фиг.7, и может выполняться меньше этапов, или могут выполняться дополнительные или альтернативные этапы.

[0130] На Фиг.8 показана блок-схема, иллюстрирующая примерный метод энтропийного кодирования блока видеоданных. Пример, показанный на Фиг.8, в общем, описан как выполняемый видеокодером. Следует понимать, что в некоторых примерах метод согласно Фиг.8 может быть выполнен посредством видеокодера 20 (фиг.1 и 2) или видеодекодера 30 (Фиг.1 и 3), описанных выше. В других примерах, метод по Фиг.8 может выполняться различными другими процессорами, модулями обработки, аппаратными модулями кодирования, такими как кодеры/декодеры (кодеки), и тому подобное.

[0131] Согласно некоторым примерам, методы примера, показанного на Фиг.8, могут выполняться с методами, показанными на Фиг.7. Например, методы примера, показанного на Фиг.8 могут выполняться на этапе 202 по Фиг.7.

[0132] В примере на Фиг.8, видеокодер определяет, следует ли использовать данные из соседних слева блоков как контекстную информацию для выбора вероятностной модели энтропийного кодирования конкретного синтаксического элемента (210). Например, как отмечено выше со ссылкой на Фиг.7, видеокодер может не использовать информацию из соседнего сверху блока при определении контекста для энтропийного кодирования одного или более синтаксических элементов. Согласно аспектам настоящего раскрытия, вместо использования информации из соседних сверху блоков, видеокодер может использовать информацию из соседних слева блоков при определении контекста для выбора вероятностной модели. В таких примерах (например, ветвь ДА на этапе 210), видеокодер может извлечь по меньшей мере часть контекстной информации из соседних слева блоков (212). В некоторых примерах соседние слева блоки могут быть включены в ту же LCU, что и блок, кодируемый в настоящее время. В других примерах соседние слева блоки могут быть включены в LCU иную, чем для блока, кодируемого в настоящее время.

[0133] Видеокодер может затем определить, следует ли использовать данные из других источников в качестве контекста для энтропийного кодирования (214). Если видеокодер не использует данные из соседних слева блоков в качестве контекста (например, ветвь НЕТ на этапе 210), видеокодер может перейти непосредственно к этапу 214. В любом случае, видеокодер может определить контекст, основанный на информации локальной CU и/или LCU, связанной с блоком. То есть, видеокодер может определить контекст на основе глубины CU или глубины TU (например, в соответствии со структурой квадродерева, как показано на Фиг.4), размера LCU или других характеристик. В других примерах видеокодер может определить один контекст. То есть, видеокодер может определить контекст на основе синтаксического элемента, кодируемого в настоящее время (например, синтаксический элемент отображается непосредственно на определенный контекст).

[0134] Если видеокодер действительно использует данные из других источников в качестве контекста (например, ветвь ДА на этапе 214), видеокодер может извлекать соответствующую контекстную информацию из другого источника или источников (216). Видеокодер может затем выбрать вероятностную модель, основанную на определенной контекстной информации (218). Если видеокодер не использует данные из других источников в качестве контекста, видеокодер может перейти непосредственно к этапу 218.

[0135] Следует также понимать, что этапы, показанные и описанные со ссылкой на Фиг.8, приведены лишь как один из примеров. То есть, этапы способа по Фиг.8 не обязательно должны выполняться в порядке, показанном на Фиг.8, и может выполняться меньше этапов, или могут выполняться дополнительные или альтернативные этапы.

[0136] На Фиг.9 показана блок-схема, иллюстрирующая примерный метод энтропийного кодирования блока видеоданных. Пример, показанный на Фиг.9, в общем, описан как выполняемый видеокодером. Следует понимать, что в некоторых примерах метод по Фиг.9 может быть выполнен посредством видеокодера 20 (фиг.1 и 2) или видеодекодера 30 (Фиг.1 и 3), описанных выше. В других примерах, метод по Фиг.9 может выполняться различными другими процессорами, модулями обработки, аппаратными модулями кодирования, такими как кодеры/декодеры (кодеки), и тому подобное.

[0137] Согласно некоторым примерам, методы примера, показанного на Фиг.9, могут выполняться с методами, показанными на Фиг.7. Например, методы примера, показанного на Фиг.9 могут выполняться на этапе 202 по Фиг.7.

[0138] В примере на Фиг.9, видеокодер определяет, следует ли использовать данные из текущей LCU в качестве контекстной информации для выбора вероятностной модели, чтобы энтропийно кодировать конкретный синтаксический элемент из текущей LCU (230). Например, как отмечено выше со ссылкой на Фиг.7, в некоторых случаях видеокодер может не использовать информацию из соседнего сверху блока при определении контекста для энтропийного кодирования одного или нескольких синтаксических элементов. Тем не менее, согласно аспектам настоящего раскрытия, видеокодер может использовать данные, связанные с соседним сверху блоком, при определении контекста, но только тогда, когда соседний сверху блок находится в той же LCU, что и блок, кодируемый в настоящее время. То есть, видеокодер может воздержаться от пересечения границы LCU при определении контекста для кодирования синтаксических элементов, связанных с LCU.

[0139] В таких примерах (например, ветвь ДА на этапе 230), видеокодер может извлекать по меньшей мере часть контекстной информации из блоков для LCU (232). Видеокодер может затем определить, следует ли использовать данные из других источников в качестве контекста для энтропийного кодирования (234). Если видеокодер не использует данные из текущей CU в качестве контекста (например, ветвь НЕТ на этапе 230), видеокодер может перейти непосредственно к этапу 234. В любом случае, видеокодер может определить контекст на основе информации локальной CU и/или LCU, связанной с данным блоком. То есть, видеокодер может определить контекст на основе глубины CU или глубины TU (например, в соответствии со структурой квадродерева, как показано на Фиг.4), размера LCU или других характеристик. В других примерах видеокодер может определить один контекст. То есть, видеокодер может определить контекст на основе синтаксического элемента, кодируемого в настоящее время (например, синтаксический элемент отображается непосредственно на определенный контекст).

[0140] Если видеокодер действительно использует данные из других источников в качестве контекста (например, ветвь ДА на этапе 234), видеокодер может получить соответствующую контекстную информацию из другого источника или источников (236). Видеокодер может затем выбрать вероятностную модель на основе определенной контекстной информации (238). Если видеокодер не использует данные из других источников в качестве контекста, видеокодер может перейти непосредственно к этапу 238.

[0141] Следует также понимать, что этапы, показанные и описанные со ссылкой на Фиг.9, приведены лишь как один из примеров. То есть, этапы способа по Фиг.9 не обязательно должны выполняться в порядке, показанном на Фиг.9, и может выполняться меньше этапов, или могут выполняться дополнительные или альтернативные этапы

[0142] На Фиг.10 показана блок-схема, иллюстрирующая примерный способ энтропийного кодирования блока видеоданных. Пример, показанный на Фиг.10, в общем, описан как выполняемый видеокодером. Следует понимать, что в некоторых примерах способ по Фиг.10 может быть выполнен посредством видеокодера 20 (фиг.1 и 2) или видеодекодера 30 (Фиг.1 и 3), описанных выше. В других примерах, способ по Фиг.8 может быть выполнен различными другими процессорами, модулями обработки, аппаратными модулями кодирования, такими как кодеры/декодеры (кодеки) и тому подобное.

[0143] Согласно некоторым примерам, способы в примере, показанном на Фиг.10, могут выполняться со способами, показанными на Фиг.7. Например, способы примера, показанного на Фиг.10, могут выполняться на этапе 202 по Фиг.7.

[0144] В примере на Фиг.10, видеокодер определяет, следует ли использовать данные из информации локального блока в качестве контекстной информации для выбора вероятностной модели, чтобы энтропийно кодировать конкретный синтаксический элемент (260). Например, как отмечено выше со ссылкой на Фиг.7, видеокодер может не использовать информацию из соседнего сверху блока при определении контекста для энтропийного кодирования одного или более синтаксических элементов. Согласно аспектам настоящего раскрытия, вместо использования информации из соседних сверху блоков, видеокодер может использовать данные из информации локального блока. В таких примерах (например, ветвь ДА на этапе 210), видеокодер может извлечь по меньшей мере часть контекстной информации из информации локального блока (212).

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

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

[0147] Видеокодер может затем определить, следует ли использовать данные из других источников в качестве контекста для энтропийного кодирования (264). Например, видеокодер может определить контекст для энтропийного кодирования, используя данные из соседних слева блоков (например, на Фиг.8) или данные из других блоков в кодируемой LCU (например, Фиг.9). В других примерах видеокодер может определить контекст на основе синтаксического элемента, кодируемого в настоящее время (например, синтаксический элемент отображается непосредственно на определенный контекст).

[0148] Если видеокодер действительно использует данные из других источников в качестве контекста (например, ветвь ДА на этапе 264), видеокодер может получить соответствующую контекстую информацию из другого источника или источников (266). Видеокодер может затем выбрать вероятностную модель на основе определенной контекстной информации (268). Если видеокодер не использует данные из других источников в качестве контекста, то видеокодер может перейти непосредственно к этапу 268.

[0149] Следует также понимать, что этапы, показанные и описанные со ссылкой на Фиг.10, приведены лишь как один из примеров. То есть, этапы способа по Фиг.10 не обязательно должны выполняться в порядке, показанном на Фиг.10, и может выполняться меньше этапов, или могут выполняться дополнительные или альтернативные этапы.

[0150] Кроме того, следует понимать, что, в зависимости от примера, некоторые действия или события любого из способов, описанных здесь, могут быть выполнены в другом порядке, могут быть дополнены, объединены или исключены совсем (например, не все описанные действия или события являются необходимыми для практической реализации способа). Кроме того, в некоторых примерах действия или события могут выполняться одновременно, например, за счет многопоточной обработки, обработки прерываний или нескольких процессоров, а не последовательно. Кроме того, в то время как некоторые аспекты этого раскрытия описаны как выполняемые в одном модуле или устройстве для ясности, следует понимать, что способы данного изобретения могут быть выполнены с помощью комбинации блоков или модулей, связанных с видеокодером.

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

[0152] Таким образом, машиночитаемые носители обычно могут соответствовать (1) материальному машиночитаемому носителю, который является не временный (нетранзитивным) или (2) коммуникационной среде, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым можно получить доступ одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.

[0153] В качестве примера, а не ограничения, такие машиночитаемые носители хранения могут содержать RAM, ROM, EEPROM, CD-ROM или другой оптический диск, накопитель на магнитных дисках или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и к которому можно обращаться с помощью компьютера. Кроме того, любое подключение корректно называть машиночитаемым носителем. Например, если инструкции передаются от веб-сайта, сервера или другого удаленного источника с помощью коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная, радио и микроволновая, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная, радио и микроволновая, включаются в определение носителя.

[0154] Следует понимать, однако, что считываемые компьютером носители данных и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие переходные среды, а направлены, напротив, на непереходные, материальные носители. Магнитный диск и немагнитный диск, как используется здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и Blu-ray диск, где магнитные диски (disks) обычно воспроизводят данные магнитным способом, в то время как немагнитные диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем машиночитаемых носителей.

[0155] Инструкции могут выполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, специализированных интегральных схемах (ASIC), программируемых логических матриц (FPGA), или другие эквивалентные интегрированные или дискретные логические схемы. Соответственно, термин "процессор", как он использован здесь, может относиться к любой из указанных выше структур или любой другой структуре, пригодной для реализации описанных здесь методов. Кроме того, в некоторых аспектах, функциональность, описанная здесь, может быть представлена в специализированных аппаратных средствах и/или программных модулях, сконфигурированных для кодирования и декодирования, или включена в комбинированный кодек. Кроме того, эти способы могут быть полностью реализованы в одной или более схем или логических элементов.

[0156] Способы настоящего раскрытия могут быть реализованы в широком спектре приборов или устройств, в том числе беспроводном телефоне, интегральной схеме (IC) или наборе микросхем (например, чипсете). Различные компоненты, модули или блоки описаны в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения описанных способов, но не обязательно требует реализации различными электронными устройствами. Скорее, как описано выше, различные модули могут быть объединены в аппаратном модуле кодека или обеспечиваются комбинацией взаимодействующих электронных устройств, в том числе одного или более процессоров, как описано выше, в сочетании с соответствующим программным обеспечением и/или программно-аппаратными средствами.

[0157] Выше были описаны различные аспекты раскрытия. Эти и другие аспекты находятся в пределах объема следующей формулы изобретения.

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

2. Способ по п. 1, в котором определение контекстной информации для одного или более синтаксических элементов содержит определение первой контекстной информации для первого набора синтаксических элементов, при этом способ дополнительно содержит этап, на котором:
определяют вторую контекстную информацию для второго набора синтаксических элементов на основе по меньшей мере части контекстной информации из блока, соседнего с упомянутым блоком.

3. Способ по п. 2, в котором блок содержит один или более блоков наибольшей единицы кодирования (LCU), которые расположены ниже ряда блоков, принадлежащих одной или более других LCU, причем определение контекстной информации для второго набора синтаксических элементов содержит определение контекстной информации с использованием информации, связанной с одним или более блоками LCU и исключая информацию вне LCU.

4. Способ по п. 1, в котором определение контекстной информации для одного или более синтаксических элементов содержит определение контекстной информации для данных интер-предсказания CU на основе глубины CU.

5. Способ по п. 4, в котором определение контекстной информации для данных интер-предсказания CU содержит определение контекстной информации для одного или более синтаксических элементов, которые указывают, разделена ли CU на основе глубины CU.

6. Способ по п. 4, в котором определение контекстной информации для данных интер-предсказания CU содержит определение контекстной информации для флага интер-предсказания (inter_pred_flag) на основе глубины CU.

7. Способ по п. 1, в котором блок CU содержит единицу преобразования (TU), и причем определение контекстной информации для одного или более синтаксических элементов содержит определение контекстной информации для одного или более синтаксических элементов, связанных с TU на основе глубины TU.

8. Способ по п. 7, в котором определение контекстной информации для одного или более синтаксических элементов, связанных с TU, содержит определение контекстной информации для остаточных данных интра-предсказания TU на основе глубины TU.

9. Способ по п. 8, в котором определение контекстной информации для остаточных данных интра-предсказания TU содержит определение контекстной информации для одного или более синтаксических элементов, которые указывают, содержит ли TU уровни ненулевых коэффициентов преобразования на основе глубины TU.

10. Способ по п. 1, дополнительно содержащий этап, на котором генерируют один или более синтаксических элементов, при этом энтропийное кодирование одного или более синтаксических элементов содержит энтропийное кодирование одного или более синтаксических элементов.

11. Способ по п. 10, дополнительно содержащий кодирование блока видеоданных, содержащее этапы, на которых:
применяют преобразование к одному или более остаточным значениям блока для генерации коэффициентов преобразования;
выполняют квантование коэффициентов преобразования для генерации квантованных коэффициентов преобразования, и
выполняют энтропийное кодирование квантованных коэффициентов преобразования.

12. Способ по п. 1, дополнительно содержащий этап, на котором принимают один или более синтаксических элементов из кодированного битового потока, при этом энтропийное кодирование одного или более синтаксических элементов содержит энтропийное декодирование одного или более синтаксических элементов блока видеоданных.

13. Способ по п. 12, дополнительно содержащий декодирование блока видеоданных, которое содержит этапы, на которых:
выполняют энтропийное декодирование принятого битового потока для генерации квантованных коэффициентов преобразования, связанных с блоком видеоданных;
выполняют инверсное квантование квантованных коэффициентов преобразования для генерации коэффициентов преобразования, и
применяют инверсное преобразование к коэффициентам преобразования для генерации остаточных значений, связанных с блоком видеоданных.

14. Устройство для кодирования видеоданных, причем устройство содержит:
память, выполненную с возможностью хранения блока видеоданных; и
один или более процессоров, выполненных с возможностью:
определения контекстной информации для одного или более синтаксических элементов, связанных с блоком видеоданных, причем упомянутый блок включен в единицу кодирования (CU) видеоданных, а видеоданные определяют структуру квадродерева, и CU является узлом структуры квадродерева, при этом определение контекстной информации содержит определение контекстной информации на основе глубины в структуре квадродерева, и
энтропийного кодирования одного или более синтаксических элементов с использованием определенной контекстной информации, причем для энтропийного кодирования одного или более синтаксических элементов один или более процессоров выполнены с возможностью выполнения контекстно-адаптивного двоичного арифметического кодирования одного или более синтаксических элементов, и один или более процессоров выполнены с возможностью выбирать вероятностную модель из множества вероятностных моделей для кодирования одного или более синтаксических элементов с использованием определенной контекстной информации.

15. Устройство по п. 14, в котором, чтобы определить контекстную информацию для одного или более синтаксических элементов, включая определение первого набора синтаксических элементов, один или более процессоров выполнены с возможностью:
определения второй контекстной информации для второго набора синтаксических элементов на основе по меньшей мере части контекстной информации из блока, соседнего с упомянутым блоком.

16. Устройство по п. 15, в котором блок содержит один или более блоков наибольшей единицы кодирования (LCU), которые расположены ниже ряда блоков, принадлежащих одной или более других LCU, причем, чтобы определить контекстную информацию для второго набора синтаксических элементов, один или более процессоров выполнены с возможностью определения контекстной информации с использованием информации, связанной с одним или более блоками LCU и исключая информацию вне LCU.

17. Устройство по п. 14, в котором, чтобы определить контекстную информацию для одного или более синтаксических элементов, один или более процессоров выполнены с возможностью определения контекстной информации для данных интер-предсказания CU на основе глубины CU.

18. Устройство по п. 17, в котором, чтобы определить контекстную информацию для данных интер-предсказания CU, один или более процессоров выполнены с возможностью определения контекстной информации для одного или более синтаксических элементов, которые указывают, разделена ли CU на основе глубины CU.

19. Устройство по п. 18, в котором, чтобы определить контекстную информацию для данных интер-предсказания CU, один или более процессоров выполнены с возможностью определения контекстной информации для флага интер-предсказания (inter_pred_flag) на основе глубины CU для CU.

20. Устройство по п. 14, в котором блок CU содержит единицу преобразования (TU), причем, чтобы определить контекстную информацию для одного или более синтаксических элементов, один или более процессоров выполнены с возможностью определения контекстной информации для одного или более синтаксических элементов, связанных с TU на основе глубины TU.

21. Устройство по п. 20, в котором, чтобы определить контекстную информацию для одного или более синтаксических элементов, связанных с TU, один или более процессоров выполнены с возможностью определения контекстной информации для остаточных данных интра-предсказания TU на основе глубины TU.

22. Устройство по п. 21, в котором, чтобы определить контекстную информацию для остаточных данных интра-предсказания TU, один или более процессоров выполнены с возможностью определения контекстной информации для одного или более синтаксических элементов, которые указывают, содержит ли TU уровни ненулевых коэффициентов преобразования на основе глубины TU.

23. Устройство по п. 14, в котором один или более процессоров дополнительно выполнены с возможностью генерации одного или более синтаксических элементов, при этом, чтобы выполнять энтропийное кодирование одного или более синтаксических элементов, один или более процессоров выполнены с возможностью энтропийного кодирования одного или более синтаксических элементов.

24. Устройство по п. 23, в котором один или более процессоров дополнительно выполнены с возможностью кодирования блока видеоданных, причем, чтобы кодировать блок видеоданных, один или более процессоров выполнены с возможностью:
применения преобразования к одному или более остаточным значениям блока для генерации коэффициентов преобразования;
квантования коэффициентов преобразования для генерации квантованных коэффициентов преобразования, и
энтропийного кодирования квантованных коэффициентов преобразования.

25. Устройство по п. 14, в котором один или более процессоров выполнены с возможностью приема одного или более синтаксических элементов из кодированного битового потока, при этом, чтобы выполнить энтропийное кодирование одного или более синтаксических элементов, один или более процессоров выполнены с возможностью энтропийного декодирования одного или более синтаксических элементов.

26. Устройство по п. 25, в котором один или более процессоров дополнительно выполнены с возможностью энтропийного декодирования блока видеоданных, при этом, чтобы декодировать блок видеоданных, один или более процессоров выполнены с возможностью:
энтропийного декодирования принятого битового потока для генерации квантованных коэффициентов преобразования, связанных с блоком видеоданных;
инверсного квантования квантованных коэффициентов преобразования для генерации коэффициентов преобразования, и
применения инверсного преобразования к коэффициентам преобразования для генерации остаточных значений, связанных с блоком видеоданных.

27. Устройство для кодирования видеоданных, причем устройство содержит:
средство для определения контекстной информации для одного или более синтаксических элементов, связанных с блоком видеоданных, причем упомянутый блок включен в единицу кодирования (CU) видеоданных, а видеоданные определяют структуру квадродерева, и единица кодирования является узлом структуры квадродерева, при этом определение контекстной информации содержит определение контекстной информации на основе глубины в структуре квадродерева; и
средство для энтропийного кодирования одного или более синтаксических элементов с использованием определенной контекстной информации, причем средство для энтропийного кодирования одного или более синтаксических элементов содержит средство для контекстно-адаптивного двоичного арифметического кодирования одного или более синтаксических элементов, причем средство для контекстно-адаптивного двоичного арифметического кодирования одного или более синтаксических элементов содержит средство для выбора вероятностной модели из множества вероятностных моделей для кодирования одного или более синтаксических элементов с использованием определенной контекстной информации.

28. Устройство по п. 27, в котором средство для определения контекстной информации для одного или более синтаксических элементов содержит определение первой контекстной информации для первого набора синтаксических элементов, при этом устройство дополнительно содержит:
средство для определения второй контекстной информации для второго набора синтаксических элементов на основе по меньшей мере части контекстной информации из блока, соседнего с упомянутым блоком.

29. Устройство по п. 28, в котором блок содержит один или более блоков наибольшей единицы кодирования (LCU), которые расположены ниже ряда блоков, принадлежащих одной или более других LCU, причем средство для определения контекстной информации для второго набора синтаксических элементов содержит средство для определения контекстной информации с использованием информации, связанной с одним или более блоками LCU и исключая информацию вне LCU.

30. Устройство по п. 27, в котором средство для определения контекстной информации для одного или более синтаксических элементов содержит средство для определения контекстной информации для данных интер-предсказания CU на основе глубины CU.

31. Устройство по п. 30, в котором средство для определения контекстной информации для данных интер-предсказания CU содержит средство для определения контекстной информации для одного или более синтаксических элементов, которые указывают, разделена ли CU на основе глубины CU.

32. Устройство по п. 31, в котором средство для определения контекстной информации для данных интер-предсказания CU содержит определение контекстной информации для флага интер-предсказания (inter_pred_flag) на основе глубины CU.

33. Устройство по п. 27, в котором CU содержит единицу преобразования (TU), причем средство для определения контекстной информации для одного или более синтаксических элементов содержит средство для определения контекстной информации одного или более синтаксических элементов, связанных с TU, на основе глубины TU.

34. Устройство по п. 33, в котором средство для определения контекстной информации для одного или более синтаксических элементов, связанных с TU, содержит средство для определения контекстной информации для остаточных данных интра-предсказания TU на основе глубины TU.

35. Устройство по п. 34, в котором средство для определения контекстной информации для остаточных данных интра-предсказания TU содержит средство для энтропийного кодирования остаточных данных интра-предсказания TU, которое содержит средство для определения контекстной информации для одного или более синтаксических элементов, которые указывают, содержит ли TU уровни ненулевых коэффициентов преобразования на основе глубины TU.

36. Машиночитаемый носитель, имеющий сохраненные на нем инструкции, которые при выполнении предписывают одному или более процессорам:
определять контекстную информацию для одного или более синтаксических элементов, связанных с блоком видеоданных, причем упомянутый блок включен в единицу кодирования (CU) видеоданных, а видеоданные определяют структуру квадродерева, и единица кодирования является узлом структуры квадродерева, при этом определение контекстной информации содержит определение контекстной информации на основе глубины в структуре квадродерева; и
выполнять энтропийное кодирование одного или более синтаксических элементов с использованием определенной контекстной информации, причем, чтобы выполнять энтропийное кодирование одного или более синтаксических элементов, инструкции предписывают одному или более процессорам выполнять контекстно-адаптивное двоичное арифметическое кодирование одного или более синтаксических элементов, и инструкции предписывают одному или более процессорам выбирать вероятностную модель из множества вероятностных моделей для кодирования одного или более синтаксических элементов с использованием определенной контекстной информации.

37. Машиночитаемый носитель по п. 36, в котором, чтобы определить контекстную информацию для одного или более синтаксических элементов, инструкции дополнительно предписывают одному или более процессорам определять первую контекстную информацию для первого набора синтаксических элементов, при этом инструкции дополнительно предписывают одному или более процессорам:
определять вторую контекстную информацию для второго набора синтаксических элементов на основе по меньшей мере части контекстной информации из блока, соседнего с упомянутым блоком.

38. Машиночитаемый носитель по п. 36, в котором блок содержит один или более блоков наибольшей единицы кодирования (LCU), которые расположены ниже ряда блоков, принадлежащих одной или более других LCU, причем инструкции дополнительно предписывают одному или более процессорам определять контекстную информацию для второго набора синтаксических элементов с использованием информации, связанной с одним или более блоками LCU и исключая информацию вне LCU.

39. Машиночитаемый носитель по п. 36, в котором, чтобы определить контекстную информацию для одного или более синтаксических элементов, инструкции предписывают одному или более процессорам определять контекстную информацию для данных интер-предсказания CU на основе глубины CU.

40. Машиночитаемый носитель по п. 39, в котором, чтобы определить контекстную информацию для данных интер-предсказания CU, инструкции предписывают одному или более процессорам определять контекстную информацию для одного или более синтаксических элементов, которые указывают, разделена ли CU на основе глубины CU.

41. Машиночитаемый носитель по п. 40, в котором, чтобы определить контекстную информацию для данных интер-предсказания CU, инструкции предписывают одному или более процессорам определять контекстную информацию для флага интер-предсказания (inter_pred_flag) на основе глубины CU для CU.

42. Машиночитаемый носитель по п. 36, в котором CU содержит единицу преобразования (TU), причем, чтобы определить контекстную информацию для одного или более синтаксических элементов, инструкции предписывают одному или более процессорам определять контекстную информацию для одного или более синтаксических элементов, связанных с TU на основе глубины TU.

43. Машиночитаемый носитель по п. 42, в котором, чтобы определить контекстную информацию для одного или более синтаксических элементов, связанных с TU, инструкции предписывают одному или более процессорам определять контекстную информацию для остаточных данных интра-предсказания TU на основе глубины TU.

44. Машиночитаемый носитель по п. 43, в котором, чтобы определить контекстную информацию для остаточных данных интра-предсказания TU, инструкции предписывают одному или более процессорам определять контекстную информацию для одного или более синтаксических элементов, которые указывают, содержит ли TU уровни ненулевых коэффициентов преобразования на основе глубины TU.



 

Похожие патенты:

Изобретение относится к интерполяции изображения и более конкретно к интерполяции между пиксельными значениями целочисленных пиксельных единиц. Техническим результатом является повышение точности генерирования пиксельных значений дробных пиксельных единиц посредством интерполяции пиксельных значений целочисленных пиксельных единиц.

Изобретение относится к технологиям кодирования и декодирования видеоданных. Техническим результатом является повышение качества изображения за счет уменьшения искажений блоков изображений посредством выполнения фильтрации в соответствии с длиной отвода фильтрации и диапазоном объекта фильтрации.

Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении совместного кодирования значений разности векторов движения.

Изобретение относится к вычислительной технике. Технический результат заключается в улучшении идентификации начала секций для первых секций в изображении.

Изобретение относится к вычислительной технике. Технический результат заключается в повышении эффективности сжатия изображения за счет выполнения внутрикадрового предсказания в различных направлениях.

Изобретение относится к технологиям кодирования/декодирования видеоизображений. Техническим результатом является повышение эффективности кодирования за счет установки предсказываемого параметра квантования с учетом множества параметров квантования, установленных для множества окружающих элементов кодирования.

Изобретение относится к вычислительной технике. Технический результат заключается в увеличении эффективности кодирования видеосигнала.

Изобретение относится к технологиям кодирования/декодирования видеоданных. Техническим результатом является сокращение количества битов, необходимых для сигнализации коэффициентов фильтра.

Изобретение относится к вычислительной технике. Технический результат заключается в уменьшении объема кода, связанного с режимом внутреннего предсказания без снижения эффективности предсказания. Устройство декодирования движущихся изображений содержит модуль декодирования переменной длины; модуль обратного квантования; модуль формирования изображений предсказания; и модуль суммирования изображений, при этом модуль декодирования переменной длины декодирует c переменной длиной информацию из битового потока и, когда информация указывает, что процесс внутреннего предсказания цветоразностного сигнала выполняется для целевого блока с использованием параметра внутреннего предсказания, который является таким же, как используемый для сигнала яркости, модуль формирования изображений предсказания выполняет процесс внутреннего предсказания цветоразностного сигнала для целевого блока с использованием того же параметра внутреннего предсказания, что используется для сигнала яркости, чтобы формировать изображение предсказания цветоразностного сигнала. 2 н.п. ф-лы, 15 ил.

Изобретение относится к технологиям кодирования и декодирования видео данных. Техническим результатом является уменьшение объема данных, используемых для представления коэффициентов, обеспечивающих обработку видео данных. Предложен способ кодирования блока видео данных. Способ включает в себя этап, на котором осуществляют разделение блока преобразования видео данных на множество поднаборов коэффициентов преобразования. Далее, согласно способу, определяют для поднабора из множества поднаборов коэффициентов преобразования генерировать ли элемент синтаксиса, который указывает, включает ли в себя упомянутый поднабор какие-либо ненулевые коэффициенты. 8 н. и 44 з.п. ф-лы, 8 ил.

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

Изобретение относится к области прогнозирования с компенсацией движения видео. Технический результат - обеспечение повышения эффективности кодирования и уменьшение вычислительной сложности, необходимой для определения предиктора вектора движения. Способ для прогнозирующего кодирования вектора движения содержит: этап определения вектора движения целевого фрагмента видеопоследовательности; этап определения первого варианта предиктора вектора движения, который определяется из вектора движения или векторов движения одного или более фрагментов, принадлежащих соседней слева области; этап определения второго варианта предиктора вектора движения, который определяется из вектора движения или векторов движения одного или более фрагментов, принадлежащих соседней сверху области; этап выбора оптимального предиктора вектора движения и вывода информации индикатора предиктора вектора движения; этап кодирования информации индикатора предиктора вектора движения. 4 н. и 12 з.п. ф-лы, 15 ил.

Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении возможности кодирования текущего изображения на основе модифицированного списка опорных изображений. Способ кодирования видеоданных содержит: кодирование информации, указывающей опорные изображения, относящиеся к набору опорных изображений; построение множества поднаборов опорных изображений; построение начального списка опорных изображений на основе построенных поднаборов опорных изображений, когда необходима модификация начального списка опорных изображений после построения начального списка опорных изображений: определение индекса по меньшей мере для одного из построенных поднаборов опорных изображений; идентификацию опорного изображения, идентифицированного в записи по меньшей мере одного из построенных поднаборов опорных изображений на основе определенного индекса; и добавление идентифицированного опорного изображения в текущую запись начального списка опорных изображений для построения модифицированного списка опорных изображений; и кодирование текущего изображения на основе модифицированного списка опорных изображений. 4 н. и 25 з.п. ф-лы, 10 ил., 8 табл.

Изобретение относится к вычислительной технике. Технический результат заключается в повышении эффективности кодирования за счет возможности снижения скорости передачи битов при сохранении высокого качества изображения. Способ кодирования информации об адаптивном смещении выборок в процессе кодирования видео, выполняемый устройством кодирования видео, в котором определяют информацию об адаптивном смещении выборок для текущего раздела видеоданных; сравнивают информацию об адаптивном смещении выборок текущего раздела с информацией об адаптивном смещении выборок одного или более соседних разделов видеоданных и кодируют элемент синтаксиса слияния, указывающий, что видеодекодер должен копировать информацию об адаптивном смещении выборок для текущего раздела из информации об адаптивном смещении выборок одного из упомянутых одного или более соседних разделов. 8 н. и 77 з.п. ф-лы, 13 ил.

Изобретение относится к кодированию и декодированию видеоинформации. Технический результат заключается в повышении разрешения видеоконтента. Предложены способ и устройство для кодирования видеоинформации, причем способ заключается в том, что кодируют видеоданные максимального элемента кодирования на основе более глубоких элементов кодирования иерархических структур в соответствии по меньшей мере с одной зоной разделения максимального элемента кодирования с осуществлением интерпредсказания с использованием областей, полученных путем разделения элемента кодирования согласно произвольным отношениям, и определяют глубину кодирования; и выводят поток битов, включающий в себя кодированные видеоданные, соответствующие глубине кодирования, в соответствии с максимальным элементом кодирования и информацией, касающейся глубины кодирования и режимов кодирования. 4 з.п. ф-лы 21 ил., 1 табл.

Изобретение относится к устройству прогнозирующего кодирования/декодирования изображений. Техническим результатом является подавление шума прогнозированных сигналов. Предложено при прогнозирующем кодировании изображений один или более наборов информации движения извлекаются из нескольких фрагментов информации движения, сохраненной в средстве записи информации движения. Каждый из одного или более наборов информации включает в себя два фрагмента информации движения, в которых любые из составляющих элементов отличаются по значению. Прогнозированный сигнал целевой области в изображении формируется посредством компенсации движения с использованием двух фрагментов информации движения в наборе информации движения, выбранном из одного или более наборов информации движения. Два фрагмента информации движения в выбранном наборе информации движения сохраняются в средстве записи информации движения и используются для формирования прогнозированного сигнала другой области. 3 н.п. ф-лы, 17 ил.

Изобретение относится к технологиям кодирования и декодирования видеоизображений. Техническим результатом является повышение эффективности кодирования или декодирования видеоданных за счет обеспечения предсказания между уровнями. Предложено устройство обработки изображения. Устройство содержит приемный блок и блок декодирования. Приемный блок выполнен с возможностью приема кодированных данных, в которых кодировано изображение с множеством основных уровней, и информацию управления межуровневым предсказанием, управляющую выполнением межуровневого предсказания, являющегося предсказанием между множеством основных уровней, с использованием подуровня. Блок декодирования выполнен с возможностью декодирования каждого основного уровня кодированных данных, принимаемых приемным блоком, посредством выполнения межуровневого предсказания только на подуровне, указанном в информации управления межуровневым предсказанием, принимаемой приемным блоком. 4 н. и 16 з.п. ф-лы, 103 ил.

Изобретение относится к средствам кодирования и декодирования видео. Технический результат заключается в формировании восстановленного изображения, имеющего минимальную ошибку относительно исходного изображения. В способе декодирования видео выполняют: синтаксический анализ информации объединения смещений, указывающей то, являются или нет параметры смещения текущего блока и, по меньшей мере, одного соседнего блока из числа блоков видео идентичными друг другу, восстановление типа смещения и значений смещения из числа параметров смещения текущего блока на основе информации объединения смещений; определение класса края или полосы пикселных значений восстановленного пиксела на основе типа края или типа полосы пикселных значений текущего блока, указывающего тип смещения; и определение значения смещения, соответствующего классу края или полосе пикселных значений восстановленного пиксела, из значений смещения и регулирование пикселного значения восстановленного пиксела согласно значению смещения. Устройства реализуют способы кодирования и декодирования. 5 н. и 10 з.п. ф-лы, 20 ил., 1 табл.
Наверх