Выполнение предсказания вектора движения для кодирования видео

Иллюстрации

Показать все

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

Реферат

[0001] По данной заявке испрашивается приоритет Предварительной Заявки США №61/579465, поданной 22 декабря 2011 г., и Предварительной Заявки США №61/584096, поданной 06 января 2012 г., каждая из которых во всей своей полноте включена в настоящее описание посредством ссылки.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

[0002] Данное изобретение относится к кодированию видео и, в частности, к аспектам компенсации движения кодирования видео.

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

[0003] Возможности цифрового видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового непосредственного вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), компьютеры класса лэптоп или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые мультимедийные проигрыватели, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, устройства проведения видео телеконференций, и подобное. Устройства цифрового видео реализуют методики сжатия видео, такие как те, что описаны в стандартах, которые определяются стандартами MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Расширенное Кодирование Видео (AVC), и расширениях таких стандартов, для более эффективной передачи и приема информации цифрового видео. Разрабатываются новые стандарты кодирования видео, такие как стандарт Высокоэффективного Кодирования Видео (HEVC), разрабатываемый «Совместной Объединенной Группой - Кодирование Видео» (JCT-VC), которая является объединением MPEG и ITU-T. Развивающийся стандарт HEVC иногда именуется как H.265, несмотря на то, что такое название официально не было принято.

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

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

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

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

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

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

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

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

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

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

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

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

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

[0015] Фиг. 6 является схемой, иллюстрирующей примерную компоновку смежных соседних предсказывающих единиц (PU) и временной совместно расположенной PU для текущей PU.

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

[0016] Варианты осуществления методик, описываемых в данном изобретении, предоставляют кодировщикам видео (которые могут представлять собой понятие, используемое в данном описание как относящее к одному из или к обоим из кодера видео и декодера видео) возможность удержания в определенных пределах диапазона выбранных векторов движения - кандидатов таким образом, чтобы он находился в точно определенном диапазоне, при выполнении процесса предсказания вектора движения. Другими словами, методики предоставляют кодировщику видео возможность определения списка векторов движения - кандидатов (при этом эти векторы движения - кандидаты также могут именоваться как «кандидаты - предикторы вектора движения», а список может именоваться как «список кандидатов») для текущего блока видеоданных и выбора одного из векторов движения - кандидатов в данном списке для представления предиктора вектора движения (MVP) для текущего блока видеоданных. Затем кодировщик видео может определять, был ли масштабирован выбранный вектор движения - кандидат. После определения того, что выбранный вектор движения - кандидат был масштабирован, затем кодировщик видео может определять, укладывается ли горизонтальная составляющая и/или вертикальная составляющая выбранного вектора движения - кандидата в точно определенный диапазон значений горизонтальной составляющей и/или точно определенный диапазон значений вертикальной составляющей, соответственно. Эти указанные диапазоны могут эффективно представлять собой то, что может именоваться как ограничение горизонтального смещения и/или ограничение вертикального смещения. Если не укладывается в точно определенный диапазон значений горизонтальной составляющей и/или точно определенный диапазон значений вертикальной составляющей, то тогда кодировщик видео может усекать значения таким образом, что значения горизонтальной и/или вертикальной составляющей укладываются в точно определенный диапазон значений горизонтальной составляющей и/или точно определенный диапазон значений вертикальной составляющей.

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

[0018] Другими словами, когда вектор движения - кандидат из списка кандидатов указывает на блок предсказания, расположенный за пределами ограничения смещения вектора движения, кодировщик видео (который также может именоваться как «устройство кодирования видео») может усекать или иным образом урезать значение вектора движения - кандидата. Затем кодировщик видео может кодировать текущий видеоблок на основании выбранного усеченного вектора движения - кандидата из списка кандидатов.

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

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

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

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

[0023] Как дополнительно показано в примере на Фиг. 1, устройство-источник 12 включает в себя источник 18 видео, кодер 20 видео, модулятор/демодулятор 22 («модем 22») и передатчик 24. В устройстве-источнике 12, источник 18 видео может включать в себя источник, такой как устройство захвата видео. Устройство захвата видео, в качестве примера, может включать в себя одно или более из устройств: видеокамеру; видеоархив, содержащий ранее захваченное видео; интерфейс внешнего видеосигнала для приема видео от поставщика видео контента; и/или систему компьютерной графики для генерирования данных компьютерной графики в качестве источника видео. В качестве одного примера, если источником 18 видео является видеокамера, то устройство-источник 12 и устройство-получатель 14 могут образовывать так называемые камерофоны или видеофоны. Тем не менее, методики, описываемые в данном изобретении, не ограничиваются беспроводными приложениями или настройками, и могут быть применены к не беспроводным устройствам, включающим в себя возможности кодирования и/или декодировании видео. Вследствие этого, устройство-источник 12 и устройство-получатель 14 являются лишь примерами кодирующих устройств, которые могут поддерживать описываемые здесь методики.

[0024] Кодер 20 видео может кодировать захваченное, предварительно захваченное, или генерируемое компьютером видео. Как только закодировано, кодер 20 видео может выводить данное закодированное видео на модем 22. Затем модем 22 может модулировать закодированное видео в соответствии со стандартом связи, таким как протокол беспроводной связи, после чего передатчик 24 может передавать модулированные данные закодированного видео устройству-получателю 14. Модем 22 может включать в себя различные преобразователи частоты, фильтры, усилители или другие компоненты, разработанные для модуляции сигнала. Передатчик 24 может включать в себя схемы, разработанные для передачи данных, включая усилители, фильтры, и одну или более антенн.

[0025] Захваченное, предварительно захваченное, сгенерированное компьютером видео, которое кодируется кодером 20 видео, также может быть сохранено на носителе 34 данных или файловом сервере 36 для извлечения, декодирования и потребления позже. Носитель 34 данных может включать в себя диски Blu-ray, DVD, CD-ROM, флэш-память, или любой другой пригодный цифровой носитель данных для хранения закодированного видео. Устройство-получатель 14 может осуществлять доступ к закодированному видео, хранящемуся на носителе 34 данных или файловом сервере 36, декодировать данное закодированное видео, чтобы сгенерировать декодированное видео, и воспроизводить данное декодированное видео.

[0026] Файловый сервер 36 может быть любым типом сервера, выполненного с возможностью хранения закодированного видео и передачи этого закодированного видео устройству-получателю 14. Примерные файловые серверы включают в себя web-сервер (например, для web-сайта), FTP сервер, устройства подключаемого к сети накопителя (NAS), локальный накопитель на дисках, или любой другой тип устройства, выполненного с возможностью хранения закодированных видеоданных и передачи их устройству-получателю. Передача закодированных видеоданных от файлового сервера 36 может быть потоковой передачей, передачей загрузки, или сочетанием обоих. Устройство-получатель 14 может получать доступ к файловому серверу 36 в соответствии с любым стандартным соединением для передачи данных, включая Интернет соединение. Данное соединение может включать в себя беспроводной канал (например, Wi-Fi соединение или беспроводное сотовое соединение для передачи данных), проводное соединение (например, DSL, кабельный модем, и т.д.), сочетание как проводного, так и беспроводного каналов, или любой другой тип канала связи пригодный для получения доступа к закодированным видеоданным, хранящимся на файловом сервере.

[0027] Устройство-получатель 14, в примере на Фиг. 1, включает в себя приемник 26, модем 28, декодер 30 видео, и устройство 32 отображения. Приемник 26 устройства-получателя 14 принимает информацию по каналу 16, а модем 28 демодулирует информацию для того, чтобы создать демодулированный битовый поток для декодера 30 видео. Информация, передаваемая по каналу 16, может включать в себя разнообразную информацию синтаксиса, сгенерированную кодером 20 видео для использования декодером 30 видео при декодировании связанных закодированных видеоданных. Такой синтаксис также может быть включен в закодированные видеоданные, хранящиеся на носителе 34 данных или файловом сервере 36. Как кодер 20 видео, так и декодер 30 видео могут быть частью соответствующего кодера-декодера (Кодека), который выполнен с возможностью кодирования или декодирования видеоданных.

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

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

[0030] Кодер 20 видео и декодер 30 видео могут функционировать в соответствии со стандартом сжатия видео, таким как стандарт Высокоэффективного Кодирования Видео (HEVC), который разрабатывается в настоящее время, и могут соответствовать Тестовой Модели HEVC (HM). В качестве альтернативы, кодер 20 видео и декодер 30 видео могут функционировать в соответствии с другими частными или промышленными стандартами, такими как стандарт ITU-T H.264, альтернативно именуемый как MPEG-4, Часть 10, Расширенное Кодирование Видео (AVC), или расширения таких стандартов. Тем не менее, методики данного изобретения, не ограничиваются каким-либо конкретным стандартом кодирования. Прочие примеры включают в себя MPEG-2 и ITU-T H.263.

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

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

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

[0034] Данные, определяющие вектор движения, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность в одну четвертую пикселя или точность в одну восьмую пикселя), опорный кадр, на который указывает вектор движения, направление предсказания, которое определяет, находится ли идентифицированный опорный кадр до или после текущего кадра, и/или опорный список (например, список 0 или список 1) для вектора движения. В качестве альтернативы, данные, определяющие вектор движения могут, описывать вектор движения с точки зрения того, что именуется как предиктор вектора движения (MVP). Предиктор вектора движения может включать в себя вектор движения соседней PU или временной совместно расположенной PU. Как правило, список из пяти векторов движения - кандидатов формируется определенным образом (как например, посредством перечисления векторов движения - кандидатов, начиная с тех, что обладают наивысшей амплитудой, до тех, что обладают наименьшей амплитудой, т.е., наибольшее или наименьшее смещение между текущей PU, которая должна быть закодирована, и опорной PU, или посредством перечисления векторов движения - кандидатов на основании местоположения, т.е., верхние блоки, левые блоки, угловые блоки, временные блоки), где четыре из пяти векторов движения - кандидатов являются пространственными векторами движения, выбранными из четырех соседних PU, а пятый вектор движения - кандидат является вектором движения с общим местоположением по времени, выбранным из временной совместно расположенной PU в опорном кадре.

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

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

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

[0038] В дополнение к наличию одной или более PU, которые определяют один или более векторов движения, CU может включать в себя одну или более единиц преобразования (TU). Вслед за предсказанием при помощи PU, кодер видео может вычислять остаточное значение для части CU, соответствующей PU, где данное остаточное значение также может именоваться как остаточные данные. Остаточное значение может быть преобразовано, квантовано, и просканировано. TU не обязательно ограничивается размером PU. Таким образом, TU может быть больше или меньше чем соответствующая PU для той же самой CU. В некоторых примерах, максимальный размер TU может быть размером соответствующей CU. Данное изобретение также использует понятие «блок» для обращения к любой одной или сочетанию из CU, PU, и/или TU.

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

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

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

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

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