ГЕНЕРИРОВАНИЕ ДОПОЛНИТЕЛЬНЫХ КАНДИДАТОВ ДЛЯ СЛИЯНИЯ Российский патент 2016 года по МПК H04N19/109 H04N19/52 

Описание патента на изобретение RU2577779C2

[0001] Эта заявка испрашивает приоритет по:

предварительной заявке США №61/556,746, поданной 07 ноября 2011; предварительной заявке США №61/562,284, поданной 21 ноября 2011; и предварительной заявке США №61/562,940, поданной 22 ноября 2011, все содержимое каждой из которых включено в настоящий документ посредством ссылки.

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

[0002] Это раскрытие относится к кодированию видео и, более конкретно к предсказанию видеоданных в режиме слияния. УРОВЕНЬ ТЕХНИКИ

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

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

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

[0005] Это раскрытие описывает способы генерирования списков кандидатов, для использования в кодировании с интерпредсказанием (внешним предсказанием), на видеокодере и для генерирования тех же списков кандидатов на видеодекодере. Видеокодер и видеодекодер могут генерировать одинаковые списки кандидатов посредством реализации одинаковых способов для формирования списка кандидатов. Например, как видеокодер, так и видеодекодер могут формировать списки с одинаковым числом кандидатов. Видеокодер и декодер могут сначала рассматривать пространственных кандидатов (например, соседние блоки в одном и том же изображении), затем рассматривать временных кандидатов (например, кандидатов в разных изображениях), и наконец, могут рассматривать искусственно сгенерированных кандидатов, пока в список не будет добавлено желаемое число кандидатов. Согласно способам данного раскрытия, во время формирования списка кандидатов для определенных типов кандидатов могут быть использованы операции отсечения, для того, чтобы удалить дубликаты из списка кандидатов, тогда как для других типов кандидатов, отсечение может не использоваться, для того, чтобы уменьшить сложность кодера.

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

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

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

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

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

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

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

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

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

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

[0015] Фиг. 5 является схемой последовательности операций, которая иллюстрирует примерную операцию слияния.

[0016] Фиг. 6 является схемой последовательности операций, которая иллюстрирует примерную операцию усовершенствованного предсказания вектора движения (AMVP).

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

[0018] Фиг. 8 является принципиальной схемой, которая иллюстрирует единицу кодирования (CU) и примерные исходные размещения, ассоциированные с CU.

[0019] Фиг. 9 является схемой последовательности операций, которая иллюстрирует примерную операцию формирования списка кандидатов.

[0020] Фиг. 10 показывает графический пример добавления объединенных кандидатов к списку кандидатов для слияния.

[0021] Фиг. 11 показывает графический пример добавления масштабированных кандидатов к списку кандидатов для слияния.

[0022] Фиг. 12 показывает графический пример добавления нулевых кандидатов к списку кандидатов для слияния.

[0023] Фиг. 13А и 13В показывают графический пример генерирования mv_offset-кандидатов.

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

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

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

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

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

[0028] После генерирования списка кандидатов для PU из CU, видеокодер может выбрать кандидата из списка кандидатов и вывести индекс кандидата в битовом потоке. Выбранный кандидат может быть кандидатом, который имеет вектор движения, который дает в результате предиктор, который больше всего совпадает с целевой PU, которая кодируется. Индекс кандидата может указывать положение выбранного кандидата в списке кандидатов. Видеокодер может также генерировать предсказательный видеоблок для PU на основе опорного блока, указанного посредством информации движения PU. Информация движения PU может быть определяемой на основе информации движения, указанной выбранным кандидатом. Например, в режиме слияния, информация движения PU может быть такой же как информация движения, указанная выбранным кандидатом. В режиме AM.VP, информация движения PU может быть определена на основе разности векторов движения PU и информации движения, указанной выбранным кандидатом. Видеокодер может генерировать один или более остаточных видеоблоков для CU на основе предсказательных видеоблоков PU из CU и первоначального видеоблока для CU. Видеокодер может затем кодировать и выводить один или более остаточных видеоблоков в битовом потоке.

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

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

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

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

[0033] Как показано на фиг. 1, система 10 кодирования видео включает в себя исходное устройство 12 и устройство 14 назначения. Исходное устройство 12 генерирует кодированные видеоданные. Соответственно, исходное устройство 12 может быть названо устройством кодирования видео. Устройство 14 назначения может декодировать кодированные видеоданные, сгенерированные исходным устройством 12. Соответственно, устройство 14 назначения может быть названо устройством декодирования видео. Исходное устройство 12 и устройство 14 назначения могут быть примерами устройств кодирования видео.

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

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

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

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

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

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

[0040] В примере по фиг. 1, устройство 14 назначения включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В некоторых случаях, входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства 14 назначения принимает кодированные видеоданные по каналу 16. Кодированные видеоданные могут включать в себя разнообразие синтаксических элементов, сгенерированных видеокодером 20, которые представляют видеоданные. В такие синтаксические элементы могут быть включены кодированные видеоданные, передаваемые по среде связи, хранящиеся на носителе данных или хранящиеся на файловом сервере.

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

[0042] Видеодекодер 20 и видеодекодер 30 могут функционировать согласно стандарту сжатия видео, такому как стандарт Высокоэффективного кодирования видео (HEVC), в настоящий момент в разработке, и могут соответствовать Тестовой модели HEVC (НМ). Недавний проект предстоящего стандарта HEVC, называемый "Рабочим проектом HEVC. 6" или "WD6", описан в документе JCTVC-H1003, Bross и др., "High efficiency video coding (HEVC) text specification draft 6", Объединенная команда по кодированию видео (JCT-VC) ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 8-ая встреча: Сан-Хосе, Калифорния, США, февраль 2012, который, по данным на 1 мая 2012, может быть загружен по: http://phenix.intevry.fr/jct/doc_end_user/documents/8_San%20Jose/wgl 1/JCTVC-H1003-v22.zip, все содержимое которого включено в настоящий документ посредством ссылки. Другой недавний проект стандарта HEVC, называемый "Рабочим проектом HEVC 7" или "WD7", описан в документе HCTVC-I1003, Bross и др., "High Efficiency Video Coding (HEVC) Text Specification Draft 7", Объединенная команда по кодированию видео (JCT-VC) ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 9-ая встреча: Женева, Швейцария, с 27 апреля 2012 по 7 мая 2012, который, по данным на 5 июня 2012, может быть загружен по: http://phenix.it-sudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-V3.zip.

[0043] В качестве альтернативы, видеокодер 20 и видеодекодер 30 могут функционировать согласно другим проприетарным или отраслевым стандартам, таким как стандарт ITU-T H.264, альтернативно называемый MPEG-4, Часть 10, Усовершенствованное кодирование видео (AVC), или расширениям таких стандартов. Однако, способы этого раскрытия не ограничены каким-либо конкретным стандартом или способом кодирования. Другие примеры стандартов и способов сжатия видео включают в себя MPEG-2, ITU-T H. 263 и проприетарные форматы сжатия с открытым исходным кодом, такие как VP8 и родственные форматы.

[0044] Хотя не показано в примере по фиг. 1, каждый из видеокодера 20 и видеодекодера 30 может быть интегрирован с аудиокодером или аудиодекодером, и может включать в себя соответствующие блоки MUX-DEMUX, или другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах, блоки MUX-DEMUX могут соответствовать протоколу мультиплексора ITU Н.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).

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

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

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

[0048] Чтобы сгенерировать битовый поток, видеокодер 20 может выполнить операции кодирования в отношении каждого изображения в видеоданных. Когда видеокодер 20 выполняет операции кодирования в отношении изображений, видеокодер 20 может генерировать ряд кодированных изображений и ассоциированных данных. Ассоциированные данные могут включать в себя наборы параметров последовательности, наборы параметров изображения и другие синтаксические структуры. Набор параметров последовательности (SPS) может содержать параметры, применимые к нулю или более последовательностям изображений. Набор параметров изображения (PPS) может содержать параметры, применимые к нулю или более изображениям. Набор параметров адаптации (APS) может содержать параметры, применимые к нулю или более изображениям. Параметры в APS могут быть параметрами, которые изменяются с большей вероятностью, чем параметры в PPS.

[0049] Чтобы сгенерировать кодированное изображение, видеокодер 20 может разбить изображение на видеоблоки. Видеоблоком может быть двухмерный массив выборок. Каждый из видеоблоков ассоциирован с древовидным блоком. В некоторых случаях, древовидный блок может быть назван наибольшей единицей кодирования (LCU). Древовидные блоки HEVC могут быть в широком смысле аналогичными макроблокам по предыдущим стандартам, таким как H.264/AVC. Однако древовидный блок необязательно ограничен конкретным размером и может включать в себя одну ли более единиц кодирования (CU). Видеокодер 20 может использовать разбиение дерева квадрантов для разбиения видеоблоков древовидных блоков на видеоблоки, ассоциированные с CU, отсюда и имя "древовидные блоки".

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

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

[0052] Чтобы сгенерировать кодированный слайс, видеокодер 20 может выполнить операции кодирования в отношении каждого древовидного блока в слайсе. Когда видеокодер 20 выполняет операцию кодирования в отношении древовидного блока, видеокодер 20 может сгенерировать кодированный древовидный блок. Кодированный древовидный блок может содержать данные, представляющие собой кодированную версию древовидного блока.

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

[0054] В результате кодирования древовидных блоков согласно порядку растрового сканирования, могут быть кодированы древовидные блоки выше и слева от заданного древовидного блока, но древовидные блоки ниже и справа от заданного древовидного блока еще не были кодированы. Следовательно, видеокодер 20 может иметь возможность осуществления доступа к информации, сгенерированной посредством кодирования древовидных блоков выше и слева от заданного древовидного блока, при кодировании заданного древовидного блока. Однако, видеокодер 20 может не иметь возможность осуществления доступа к информации, сгенерированной посредством кодирования древовидных блоков ниже и справа от заданного древовидного блока, при кодировании заданного древовидного блока.

[0055] Чтобы сгенерировать кодированный древовидный блок, видеокодер 20 может рекурсивно выполнить разбиение дерева квадрантов в отношении видеоблока древовидного блока, чтобы разделять видеоблок на все меньшие и меньшие видеоблоки. Каждый из меньших видеоблоков может быть ассоциирован с другой CU. Например, видеокодер 20 может разбить видеоблок древовидного блока на четыре подблока равного размера, разбить один или более подблоков на четыре подподблока равного размера и т.д. Разбитой CU может быть CU, чей видеоблок разбит на видеоблоки, ассоциированные с другими CU. Неразбитой CU может быть CU, чей видеоблок не разбит на видеоблоки, ассоциированные с другими CU.

[0056] Один или более синтаксических элементов в битовом потоке могут указывать максимальное число раз, которое видеокодер 20 может разбивать видеоблок древовидного блока. Видеоблок CU может быть квадратной формы. Размер видеоблока CU (т.е. размер CU) может ранжироваться от 8x8 пикселей до размера видеоблока древовидного блока (т.е. размера древовидного блока) с максимумом 64x64 пикселей или больше.

[0057] Видеокодер 20 может выполнить операции кодирования (т.е. кодировать) в отношении каждой CU древовидного блока согласно порядку z-сканирования. Другими словами, видеокодер 20 может кодировать верхнюю левую CU, верхнюю правую CU, нижнюю левую CU и затем нижнюю правую CU, в этом порядке. Когда видеокодер 20 выполняет операцию кодирования в отношении разбитой CU, видеокодер 20 может кодировать CU, ассоциированные с подблоками видеоблока разбитой CU, согласно порядку z-сканирования. Другими словами, видеокодер 20 может кодировать CU, ассоциированную с верхним левым подблоком, CU, ассоциированную с верхним правым подблоком, CU, ассоциированную с нижним левым подблоком, и затем CU, ассоциированную с нижним правым подблоком, в этом порядке.

[0058] В результате кодирования CU древовидного блока согласно порядку z-сканирования, могут быть кодированы CU сверху, сверху и слева, сверху и справа, слева, и снизу и слева от заданной CU. CU снизу и справа от заданной CU еще не были кодированы. Следовательно, видеокодер 20 может иметь возможность осуществления доступа к информации, сгенерированной посредством кодирования некоторых CU, которые соседствуют с заданной CU, при кодировании заданной CU. Однако, видеокодер 20 может не иметь возможности осуществления доступа к информации, сгенерированной посредством кодирования других CU, которые соседствуют с заданной CU, при кодировании заданной CU.

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

[0060] Когда видеокодер 20 использует интра-предсказание, чтобы сгенерировать предсказательный видеоблок PU, видеокодер 20 может сгенерировать предсказательный видеоблок PU на основе декодированных выборок изображения, ассоциированного с PU. Если видеокодер 20 использует интра-предсказание, чтобы сгенерировать предсказательные видеоблоки PU из CU, CU является CU, предсказанной посредством интра-предсказания. Когда видеокодер 20 использует интер-предсказание, чтобы сгенерировать предсказательный видеоблок PU, видеокодер 20 может сгенерировать предсказательный видеоблок PU на основе декодированных выборок одного или более изображений, отличных от изображения, ассоциированного с данной PU. Если видеокодер 20 использует интер-предсказание, чтобы сгенерировать предсказательные видеоблоки PU из CU, CU является CU, предсказанной посредством интер-предсказания.

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

[0062] После того, как видеокодер 20 сгенерирует предсказательные видеоблоки для одной или более PU из CU, видеокодер 20 может сгенерировать остаточные данные для CU на основе предсказательных видеоблоков для PU из CU. Остаточные данные для CU могут указывать разности между выборками в предсказательных видеоблоках для PU из CU и первоначальном видеоблоке CU.

[0063] Кроме того, в качестве части выполнения операции кодирования в отношении неразбитой CU, видеокодер 20 может выполнить рекурсивное разбиение дерева квадрантов в отношении остаточных данных CU, чтобы разбить остаточные данные CU на один или более блоков остаточных данных (т.е. остаточных видеоблоков), ассоциированных с единицами преобразования (TU) из CU. Каждая из TU из CU может быть ассоциирована с другим остаточным видеоблоком.

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

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

[0066] Видеокодер 20 может ассоциировать каждую CU со значением параметра квантования (QP). Значение QP, ассоциированное с CU, может определить как видеокодер 20 квантует блоки коэффициентов преобразования, ассоциированные с CU. Видеокодер 20 может регулировать степень квантования, применяемую к блокам коэффициентов преобразования, ассоциированным с CU, посредством регулирования значения QP, ассоциированного с CU.

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

[0068] Битовый поток, сгенерированный видеокодером 20 может включать в себя ряд блоков уровня сетевой абстракции (NAL). Каждый из блоков NAL может быть синтаксической структурой, содержащей указание типа данных в блоке NAL и байты, содержащие данные. Например, блок NAL может содержать данные, представляющие собой набор параметров последовательности, набор параметров изображения, кодированный слайс, дополнительную информацию по усовершенствованию (SEI), разграничитель блока доступа, заполняющие данные, или другой тип данных. Данные в блоке NAL могут включать в себя различные синтаксические структуры.

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

Видеодекодер 30 может реконструировать изображения видеоданных на основе синтаксических элементов, извлеченных из битового потока. Процесс для реконструкции видеоданных на основе синтаксических элементов может быть в общем противоположным процессу, выполняемому видеокодером 2 0 для генерирования синтаксических элементов.

[0070] После того, как видеодекодер 30 извлечет синтаксические элементы, ассоциированные с CU, видеодекодер 30 может сгенерировать предсказательные видеоблоки для PU из CU на основе синтаксических элементов. В дополнение, видеодекодер 30 может осуществить обратное квантование блоков коэффициентов преобразования, ассоциированных с TU из CU. Видеодекодер 30 может выполнить обратные преобразования в отношении блоков коэффициентов преобразования, чтобы реконструировать остаточные видеоблоки, ассоциированные с TU из CU. После генерирования предсказательных видеоблоков и реконструкции остаточных видеоблоков, видеодекодер 30 может реконструировать видеоблок CU на основе предсказательных видеоблоков и остаточных видеоблоков. Таким образом, видеодекодер 30 может реконструировать видеоблоки CU на основе синтаксических элементов в битовом потоке.

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

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

[0073] Для сигнализации информации движения заданной PU с использованием режима слияния или режима AMVP, видеокодер 20 может генерировать список кандидатов для заданной PU. Список кандидатов может включать в себя одного или более кандидатов. Каждый из кандидатов в списке кандидатов для заданной PU может точно определять информацию движения. Информация движения, указанная каждым кандидатом, может включать в себя вектор движения, индекс опорного изображения и указатель направления предсказания. Кандидаты в списке кандидатов могут включать в себя "первоначальных" кандидатов, каждый их которых указывает информацию движения одного из точно определенных размещений кандидатов внутри PU, отличной от заданной PU.

[0074] После генерирования списка кандидатов для PU, видеокодер 20 может выбрать одного из кандидатов из списка кандидатов для PU. Например, видеокодер может сравнить каждого кандидата с PU, которая кодируется, и может выбрать кандидата, который имеет желаемые показатели зависимости искажений от скорости передачи. Видеокодер 20 может выводить индекс кандидата для PU. Индекс кандидата может идентифицировать положение в списке кандидатов для выбранного кандидата.

[0075] Кроме того, видеокодер 20 может генерировать предсказательный видеоблок для PU на основе опорных блоков, указанных посредством. информации движения PU. Информация движения PU может быть определимой на основе информации движения, указанной выбранным кандидатом в списке кандидатов для PU. Например, в режиме слияния, информация движения PU может быть такой же как информация движения, указанная выбранным кандидатом. В режиме AMVP, информация движения PU может быть определимой на основе разности векторов движения (MVD) для PU и информации движения, указанной выбранным кандидатом. Видеокодер 20 может обрабатывать предсказательный видеоблок для каждой PU как описано выше.

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

[0077] Фиг. 2 является блок-схемой, которая иллюстрирует примерный видеокодер 20, который выполнен с возможностью реализации способов этого раскрытия. Фиг. 2 предоставляется в целях разъяснения и не должна рассматриваться как ограничивающая способы, которые приведены в качестве примера в широком смысле и описаны в этом раскрытии. В целях разъяснения, это раскрытие описывает видеокодер 20 в контексте HEVC-кодирования. Однако способы этого раскрытия могут быть применимы к другим стандартам или способам кодирования.

[0078] В примере по фиг. 2, видеокодер 20 включает в себя множество функциональных компонентов. Функциональные компоненты видеокодера 20 включают в себя модуль 100 предсказания, модуль 102 генерирования остатка, модуль 104 преобразования, модуль 106 квантования, модуль 108 обратного квантования, модуль 110 обратного преобразования, модуль 112 реконструкции, модуль 113 фильтра, буфер 114 декодированных изображений и модуль 116 энтропийного кодирования. Модуль 100 предсказания включает в себя модуль 121 интер-предсказания, модуль 122 оценки движения, модуль 124 компенсации движения и модуль 126 интра-предсказания. В других примерах, видеокодер 20 может включать в себя больше, меньше или другие функциональные компоненты. Кроме того, модуль 122 оценки движения и модуль 124 компенсации движения могут быть сильно интегрированы, но представлены в примере по фиг. 2 по отдельности в целях разъяснения.

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

[0080] В качестве части выполнения операции кодирования в отношении древовидного блока, модуль 100 предсказания может выполнить разбиение дерева квадрантов в отношении видеоблока древовидного блока, чтобы разделять видеоблок на все меньшие и меньшие видеоблоки. Каждый из меньших видеоблоков может быть ассоциирован с другой CU. Например, модуль 100 предсказания может разбить видеоблок древовидного блока на четыре подблока равного размера, разбить один или более подблоков на четыре подподблока равного размера и т.д.

[0081] Размеры видеоблоков, ассоциированных с CU, могут ранжироваться от 8×8 пикселей до размера древовидного блока с максимумом 64×64 выборок или больше. В этом раскрытии, "N×N" и "N на N" могут быть использованы взаимозаменяемо для ссылки на размеры выборки видеоблока в том, что касается вертикальных и горизонтальных размеров, например, 16×16 выборок или 16 на 16 выборок. В общем, видеоблок 16×16 имеет шестнадцать выборок в вертикальном направлении (у=16) и шестнадцать выборок в горизонтальном направлении (х=16). Аналогично, блок N×N, в общем, имеет N выборок вертикальном направлении и N выборок в горизонтальном направлении, где N представляет собой неотрицательное целое значение.

[0082] Кроме того, в качестве части выполнения операции кодирования в отношении древовидного блока, модуль 100 предсказания может сгенерировать иерархическую структуру данных дерева квадрантов для древовидного блока. Например, древовидный блок может соответствовать корневому узлу структуры данных дерева квадрантов. Если модуль предсказания 100 разбивает видеоблок древовидного блока на четыре подблока, корневой узел имеет четыре дочерних узла в структуре данных дерева квадрантов. Каждый из дочерних узлов соответствует CU, ассоциированной с одним из подблоков. Если модуль 100 предсказания разбивает один из подблоков на четыре подподблока, узел, соответствующий CU, ассоциированной с подблоком, может иметь четыре дочерних узла, каждый их которых соответствует CU, ассоциированной с одним из подподблоков.

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

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

[0085] В качестве части выполнения операции кодирования в отношении CU, модуль 100 предсказания может разбить видеоблок CU среди одной или более PU из CU. Видеокодер 20 и видеодекодер 30 может поддерживать различные размеры PU. Предполагая, что размер конкретной CU составляет 2N×2N, видеокодер 20 и видеодекодер 30 могут поддерживать размеры PU 2N×2N или N×N для интра-предсказания, и симметричные размеры PU 2N×2N, 2N×N, N×2N, N×N или аналогичные для интер-предсказания. Видеокодер 20 и видеодекодер 30 могут также поддерживать асимметричное разбиение для размеров PU 2N×nU, 2N×nD, nL×2N и nR×2N для интер-предсказания. В некоторых примерах, модуль 100 предсказания может выполнить геометрическое разбиение для разбиения видеоблока CU среди PU из CU вдоль границы, которая не совпадает со сторонами видеоблока CU при правильных углах.

[0086] Модуль 121 интер-предсказания может выполнить интер-предсказание в отношении каждой PU из CU. Интер-предсказание может предоставить временное сжатие. Для выполнения интер-предсказания в отношении PU, модуль 122 оценки движения может сгенерировать информацию движения для PU. Модуль 124 компенсации движения может генерировать предсказательный видеоблок для PU на основе информации движения и декодированных выборок изображений, отличных от изображения, ассоциированного с CU (т.е. опорных изображений). В этом раскрытии, видеоблок, предсказанный посредством предсказанного видеоблока, сгенерированного модулем 124 компенсации движения, может быть назван видеоблоком, предсказанным посредством интер-предсказания.

[0087] Слайсы могут быть I-слайсами, Р-слайсами или В-слайсами. Модуль 122 оценки движения и модуль 124 компенсации движения могут выполнять разные операции для PU из CU в зависимости от того, находится ли PU в I-слайсе, Р-слайсе или В-слайсе. В I-слайсе все PU предсказаны, посредством интра-предсказания. Поэтому, если PU находится в I-слайсе, модуль 122 оценки движения и модуль 124 компенсации движения не выполняют интер-предсказание в отношении PU.

[0088] Если PU находится в Р-слайсе, изображение, содержащее PU, ассоциировано со списком опорных изображений, называемым как "список 0". Каждое из опорных изображений в списке 0 содержит выборки, которые могут быть использованы для интер-предсказания других изображений. Когда модуль 122 оценки движения выполняет операцию оценки движения касательно PU в Р-слайсе, модуль 122 оценки движения может осуществить поиск опорных изображений в списке 0 для опорного блока для PU. Опорным блоком PU может быть набор выборок, например, блок выборок, который наиболее точно соответствует выборкам в видеоблоке PU. Модуль 122 оценки движения может использовать разнообразие показателей для определения, насколько точно набор выборок в опорном изображении соответствует выборкам в видеоблоке PU. Например, модуль 122 оценки движения может определять, насколько точно набор выборок в опорном изображении соответствует выборкам в видеоблоке PU, посредством суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD) или других разностных показателей.

[0089] После идентификации опорного блока PU в Р-слайсе, модуль 122 оценки движения может сгенерировать опорный индекс, который указывает опорное изображение в списке 0, содержащее опорный блок, и вектор движения, который указывает пространственное смещение между PU и опорным блоком. В различных примерах, модуль 122 оценки движения может генерировать векторы движения с переменными степенями точности. Например, модуль 122 оценки движения может генерировать векторы движения с точностью в одну четвертую выборки, точностью в одну восьмую выборки или другой дробной точностью выборки. В случае дробной точности выборки, значения опорного блока могут быть интерполированы из значений выборки с целочисленным положением в опорном изображении. Модуль 122 оценки движения может выводить опорный индекс и вектор движения в качестве информации движения PU. Модуль 124 компенсации движения может генерировать предсказательный видеоблок PU на основе опорного блока, идентифицированного посредством информации движения PU.

[0090] Если PU размещается в В-слайсе, изображение, содержащее PU, ассоциированное двумя списками опорных изображений, называемыми как "список 0" и "список 1". В некоторых примерах, изображение, содержащее В-слайс может быть ассоциировано с комбинацией списков, которая является комбинацией списка 0 и списка 1.

[0091] Кроме того, если PU размещается в В-слайсе, модуль 122 оценки движения может выполнить однонаправленное предсказание или двунаправленное предсказание для PU. Когда модуль 122 оценки движения выполняет однонаправленное предсказание для PU, модуль 122 оценки движения может осуществить поиск опорных изображений из списка 0 и списка 1 для опорного блока для PU. Модуль 122 оценки движения может затем сгенерировать опорный индекс, который указывает опорное изображение в списке 0 или списке 1, которое содержит опорный блок, и вектор движения, который указывает пространственное смещение между PU и опорным блоком. Модуль 122 оценки движения может выводить опорный индекс, указатель направления предсказания и вектор движения в качестве информации движения PU. Указатель направления предсказания может указывать, указывает ли опорный индекс опорное изображение в списке 0 или списке 1. Модуль 124 компенсации движения может генерировать предсказательный видеоблок PU на основе опорного блока, указанного посредством информации движения PU.

[0092] Когда модуль 122 оценки движения выполняет двунаправленное предсказание для PU, модуль 122 оценки движения может осуществить поиск опорных изображений в списке 0 для опорного блока для PU и может также осуществить поиск опорных изображений в списке 1 для другого опорного блока для PU. Модуль 122 оценки движения может затем сгенерировать опорные индексы, которые указывают опорные изображения в списке 0 или списке 1, содержащие опорные блоки, и векторы движения, которые указывают пространственные смещения между опорными блоками и PU. Модуль 122 оценки движения может выводить опорные индексы и векторы движения PU в качестве информации движения PU. Модуль 124 компенсации движения может генерировать предсказательный видеоблок PU на основе опорных блоков, указанных посредством информации движения PU.

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

[0094] Как описано ниже, модуль 121 интер-предсказания может сгенерировать список кандидатов для каждой PU из CU. Один или более списков кандидатов может включать в себя один или более первоначальных кандидатов и один или более дополнительных кандидатов, которые получены из первоначальных кандидатов.

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

[0096] Чтобы выполнить интра-предсказание в отношении PU, модуль 126 интра-предсказания может использовать многочисленные режимы интра-предсказания, чтобы сгенерировать многочисленные наборы данных предсказания для PU. Когда модуль 126 интра-предсказания использует режим интра-предсказания, чтобы сгенерировать набор данных предсказания для PU, модуль 126 интра-предсказания может продолжить выборки от видеоблоков соседних PU через видеоблок PU в направлении и/или с уклоном, ассоциированным с режимом интра-предсказания. Соседние PU могут быть сверху, сверху и справа, сверху и слева, или слева от PU, предполагая порядок кодирования слева направо, сверху вниз для PU, CU и древовидных блоков. Модуль 126 интра-предсказания может использовать различное число режимов интра-предсказания, например, 33 режима направленного интра-предсказания. В некоторых примерах, число режимов интра-предсказания может зависеть от размера PU.

[0097] Модуль 100 предсказания может выбрать данные предсказания для PU из числа данных предсказания для PU, сгенерированных модулем 124 компенсации движения, или данных предсказания для PU, сгенерированных модулем 12 6 интра-предсказания. В некоторых примерах, модуль 100 предсказания выбирает данные предсказания для PU на основе показателей зависимости искажений от скорости передачи из наборов данных предсказания.

[0098] Если модуль 100 предсказания выбирает данные предсказания, сгенерированные модулем 126 интра-предсказания, модуль 100 предсказания может сигнализировать режим интра-предсказания, который был использован, чтобы сгенерировать данные предсказания для PU, т.е., выбранный режим интра-предсказания. Модуль 100 предсказания может сигнализировать выбранный режим интра-предсказания различным образом. Например, вероятно, что выбранный режим интра-предсказания является таким же как режим интра-предсказания соседней PU. Другими словами, режим интра-предсказания соседней PU может быть наиболее вероятным режимом для текущей PU. Таким образом, модуль 100 предсказания может сгенерировать синтаксический элемент для указания, что выбранный режим интра-предсказания является таким же как режим интра-предсказания соседней PU.

[0099] После того, как модуль 100 предсказания выберет данные предсказания для PU из CU, модуль 102 генерирования остатка может сгенерировать остаточные данные для CU посредством вычитания предсказательных видеоблоков PU из CU из видеоблока CU. Остаточные данные CU могут включать в себя остаточные видеоблоки, которые соответствуют разным компонентам выборки для выборок в видеоблоке CU. Например, остаточные данные могут включать в себя видеоблок, который соответствует разностям между компонентами яркости выборок в предсказательных видеоблоках PU из CU и компонентами яркости выборок в первоначальном видеоблоке CU. В дополнение, остаточные данные CU могут включать в себя остаточные видеоблоки, которые соответствуют разностям между компонентами цветности выборок в предсказательных видеоблоках PU из CU и компонентами цветности выборок в первоначальном видеоблоке CU.

[0100] Модуль 100 предсказания может выполнить разбиение дерева квадрантов для того, чтобы разбить остаточные видеоблоки CU на подблоки. Каждый неразделенный остаточный видеоблок может быть ассоциирован с другой TU из CU. Размеры и положения остаточных видеоблоков, ассоциированных с TU из CU могут или не могут быть основаны на размерах и положениях видеоблоков, ассоциированных с PU из CU. Структура дерева квадрантов, известная как "остаточное дерево квадрантов" (RQT) может включать в себя узлы, ассоциированные с каждым из остаточных видеоблоков. TU из CU могут соответствовать концевым узлам RQT.

[0101] Модуль 104 преобразования может сгенерировать один или более блоков коэффициентов преобразования для каждой TU из CU посредством применения одного или более преобразований к остаточному блоку, ассоциированному с TU. Каждый из блоков коэффициентов преобразования может быть 2D матрицей коэффициентов преобразования. Модуль 104 преобразования может применять различные преобразования к остаточным видеоблокам, ассоциированным с TU. Например, модуль 104 преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование или принципиально аналогичное преобразование к остаточному видеоблоку, ассоциированному с TU.

[0102] После того, как модуль 104 преобразования сгенерирует блок коэффициентов преобразования, ассоциированный с TU, модуль 106 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования. Модуль 106 квантования может квантовать блок коэффициентов преобразования, ассоциированный с TU из CU, на основе значения QP, ассоциированного с CU.

[0103] Видеокодер 20 может ассоциировать значение QP с CU различным образом. Например, видеокодер 20 может выполнить анализ зависимости искажений от скорости передачи в отношении древовидного блока, ассоциированного с CU. При анализе зависимости искажений от скорости передачи, видеокодер 20 может генерировать многочисленные кодированные представления древовидного блока посредством выполнения операции кодирования многочисленное число раз в отношении древовидного блока. Видеодекодер 20 может ассоциировать разные значения QP с CU, когда видеокодер 20 генерирует разные кодированные представления древовидного блока. Видеодекодер 20 может сигнализировать, что заданное значение QP ассоциировано с CU, когда заданное значение QP ассоциировано с CU в кодированном представлении древовидного блока, который имеет наименьший показатель зависимости искажений от скорости передачи битов.

[0104] Модуль обратного квантования 108 и модуль 110 обратного преобразования могут применять обратное квантование и обратные преобразования к блоку коэффициентов преобразования, соответственно, чтобы реконструировать остаточный видеоблок из блока коэффициентов преобразования.

Модуль 112 реконструкции может добавить реконструированный остаточный видеоблок к соответствующим выборкам из одного или более предсказательных видеоблоков, сгенерированных модулем 100 предсказания, чтобы произвести реконструированный видеоблок, ассоциированный с TU. Посредством реконструирования видеоблоков для каждой TU из CU таким образом, видеокодер 20 может реконструировать видеоблок CU.

[0105] После того, как модуль 112 реконструкции реконструирует видеоблок CU, модуль 113 фильтра может выполнить операцию удаления блочности для уменьшения артефактов блочности в видеоблоке, ассоциированном с CU. После выполнения одной или более операций удаления блочности, модуль 113 фильтра может сохранить реконструированный видеоблок CU в буфере 114 декодированных изображений. Модуль 122 оценки движения и модуль 124 компенсации движения могут использовать опорное изображение, которое содержит реконструированный видеоблок, чтобы выполнить интер-предсказание в отношении PU последовательных изображений. В дополнение, модуль 126 интра-предсказания может использовать реконструированные видеоблоки в буфере 114 декодированных изображений для выполнения интра-предсказания в отношении других PU в том же изображении, как и CU.

[0106] Модуль 116 энтропийного кодирования может принимать данные от других функциональных компонентов видеокодера 20. Например, модуль 116 энтропийного кодирования может принимать блоки коэффициентов преобразования от модуля 10 6 квантования и может принимать синтаксические элементы от модуля 100 предсказания. Когда модуль 116 энтропийного кодирования принимает данные, модуль 116 энтропийного кодирования может выполнить одну или более операций кодирования, чтобы сгенерировать энтропийно кодированные данные. Например, видеокодер 20 может выполнить операцию контекстно-адаптированного кодирования с переменной длиной кодового слова (CAVLC), операцию САВАС, операцию перекодирования с переменной (V2V) длиной кодового слова, операцию зависимого от синтаксиса контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию кодирования с энтропией разбиения по вероятностному интервалу (PIPE) или любую другую операцию энтропийного кодирования в отношении данных. Модуль 116 энтропийного кодирования может выводить битовый поток, который включает в себя энтропийно кодированные данные.

[0107] В качестве части выполнения операции энтропийного кодирования в отношении данных, модуль 116 энтропийного кодирования может выбрать контекстную модель. Если модуль 116 энтропийного кодирования выполняет операцию САВАС, контекстная модель может указывать оценки вероятностей конкретных двоичных элементов, имеющих конкретные значения. В контексте САВАС, термин "двоичный элемент" используется для ссылки на бит бинаризованной версии синтаксического элемента.

[0108] Фиг. 3 является блок-схемой, которая иллюстрирует примерный видеодекодер 30, который выполнен с возможностью реализации способов этого раскрытия. Фиг. 3 предоставляется в целях разъяснения и не является ограничивающей в отношении способов, которые приведены в качестве примера в широком смысле и описаны в этом раскрытии. В целях разъяснения, это раскрытие описывает видеодекодер 30 в контексте HEVC-кодирования. Однако, способы этого раскрытия могут быть применимы к другим стандартам или способам кодирования.

[0109] В примере по фиг. 3, видеодекодер 30 включает в себя множество функциональных компонентов. Функциональные компоненты видеодекодера 30 включают в себя модуль 150 энтропийного декодирования, модуль 152 предсказания, модуль 154 обратного квантования, модуль 156 обратного преобразования, модуль 158 реконструкции, модуль 159 фильтра и буфер 160 декодированных изображений. Модуль 152 предсказания включает в себя модуль 162 компенсации движения и модуль 164 интра-предсказания. В некоторых примерах, видеодекодер 30 может выполнить проход декодирования, в общем противоположный проходу кодирования, описанному относительно видеокодера 20 по фиг. 2. В других примерах, видеодекодер 30 может включать в себя больше, меньше или другие функциональные компоненты.

[0110] Видеодекодер 30 может принимать битовый поток, который содержит кодированные видеоданные. Битовый поток может включать в себя множество синтаксических элементов. Когда видеодекодер 30 принимает битовый поток, модуль 150 энтропийного декодирования может выполнить операцию синтаксического анализа в отношении битового потока. В результате выполнения операции синтаксического анализа в отношении битового потока, модуль 150 энтропийного декодирования может извлечь синтаксические элементы из битового потока. В качестве части выполнения операции синтаксического анализа, модуль 150 энтропийного декодирования может энтропийно декодировать энтропийно кодированные синтаксические элементы в битовом потоке. Модуль 152 предсказания, модуль 154 обратного квантования, модуль 156 обратного преобразования, модуль 158 реконструкции и модуль 159 фильтра могут выполнить операцию реконструкции, которая генерирует декодированные видеоданные на основе синтаксических элементов, извлеченных из битового потока.

[0111] Как рассмотрено выше, битовый поток может содержать ряд блоков NAL. Блоки NAL битового потока могут включать в себя блоки NAL набора параметров последовательности, блоки NAL набора параметров изображения, блоки NAL SEI и т.д. В качестве части выполнения операции синтаксического анализа в отношении битового потока, модуль 150 энтропийного декодирования может выполнить операции синтаксического анализа, которые осуществляют извлечение и энтропийное декодирование наборов параметров последовательности из блоков NAL наборов параметров последовательности, наборов параметров изображения из блоков NAL наборов параметров изображения, данных SEI из блоков NAL SEI и т.д.

[0112] В дополнение, блоки NAL битового потока могут включать в себя блоки NAL кодированного слайса. В качестве части выполнения операции синтаксического анализа в отношении битового потока, модуль 150 энтропийного декодирования может выполнить операции синтаксического анализа, которые осуществляют извлечение и энтропийное декодирование кодированных слайсов из блоков NAL кодированных слайсов. Каждый из кодированных слайсов может включать в себя заголовок слайса и данные слайса. Заголовок слайса может содержать синтаксические элементы, относящиеся к слайсу. Синтаксические элементы в заголовке слайса могут включать в себя синтаксический элемент, который идентифицирует набор параметров изображения, ассоциированный с изображением, которое содержит слайс. Модуль 150 энтропийного декодирования может выполнить операции энтропийного декодирования, такие как операции декодирования САВАС, в отношении синтаксических элементов в заголовке кодированного слайса для восстановления заголовка слайса.

[0113] В качестве части извлечения данных слайса из блоков NAL кодированного слайса, модуль 150 энтропийного декодирования может выполнить операции синтаксического анализа, которые осуществляют извлечение синтаксических элементов из кодированных CU в данных слайса. Извлеченные синтаксические элементы могут включать в себя синтаксические элементы, ассоциированные с блоками коэффициентов преобразования. Модуль 150 энтропийного декодирования может затем выполнить операции декодирования САВАС в отношении синтаксических элементов.

[0114] После того, как модуль 150 энтропийного декодирования выполнит операцию синтаксического анализа в отношении неразбитой CU, видеодекодер 30 может выполнить операцию реконструкции в отношении неразбитой CU. Чтобы выполнить операцию реконструкции в отношении неразбитой CU, видеодекодер 30 может выполнить операцию реконструкции в отношении каждой из TU из CU. Посредством выполнения операции реконструкции для каждой TU из CU, видеодекодер 30 может реконструировать остаточный видеоблок, ассоциированный с CU.

[0115] В качестве части выполнения операции реконструкции в отношении TU, модуль 154 обратного квантования может осуществить обратное квантование, т.е. деквантование, блока коэффициентов преобразования, ассоциированного с TU. Модуль 154 обратного квантования может осуществить обратное квантование блока коэффициентов преобразования аналогичным образом для процессов обратного преобразования, предложенных для HEVC или заданных стандартом кодирования Н.2 64 ITU-T. Модуль 154 обратного квантования может использовать параметр квантования QP, вычисленный видеокодером 20 для CU блока коэффициентов преобразования, для определения степени квантования и, аналогично, степени обратного квантования для модуля 154 обратного квантования, которую следует применять.

[0116] После того, как модуль 154 обратного квантования осуществит обратное квантование блока коэффициентов преобразования, модуль 156 обратного преобразования может сгенерировать блок коэффициентов преобразования для TU, ассоциированной с блоком коэффициентов преобразования. Модуль 156 обратного преобразования может применять обратное преобразование для преобразования блока коэффициентов преобразования для того, чтобы сгенерировать остаточный видеоблок для TU. Например, модуль 156 обратного преобразования может применить обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов преобразования.

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

[0118] Если PU из CU была кодирована с использованием интер-предсказания, модуль 162 компенсации движения может сгенерировать список кандидатов для PU. Битовый поток может включать в себя данные, которые идентифицируют положение выбранного кандидата в списке кандидатов PU. После генерирования списка кандидатов для PU, модуль 162 компенсации движения может сгенерировать предсказательный видеоблок для PU на основе одного или более опорных блоков, указанных посредством информации движения PU. Опорные блоки PU могут быть в других временных изображениях, чем PU. Модуль 162 компенсации движения может определить информацию движения PU на основе информации движения, указанной выбранным кандидатом в списке кандидатов PU.

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

[0120] Если PU кодирована с использованием интра-предсказания, модуль 164 интра-предсказания может выполнить интра-предсказание, чтобы сгенерировать предсказательный видеоблок для PU. Например, модуль 164 интра-предсказания может определить режим интра-предсказания для PU на основе синтаксических элементов в битовом потоке. Битовый поток может включать в себя синтаксические элементы, которые модуль 164 интра-предсказания может использовать для определения режима интра-предсказания PU.

[0121] В некоторых случаях, синтаксические элементы могут указывать, что модуль 164 интра-предсказания должен использовать режим другой PU для определения режима интра-предсказания текущей PU. Например, может быть вероятно, что режим интра-предсказания текущей PU является таким же как режим интра-предсказания соседней PU. Другими словами, режим интра-предсказания соседней PU может быть наиболее вероятным режимом для текущей PU. Поэтому, в этом примере, битовый поток может включать в себя небольшой синтаксический элемент, который указывает, что режим интра-предсказания PU является таким же как режим интра-предсказания соседней PU. Модуль 164 интра-предсказания может затем использовать режим интра-предсказания, чтобы сгенерировать данные предсказания (например, предсказательные выборки) для PU на основе видеоблоков пространственно соседних PU.

[0122] Модуль 158 реконструкции может использовать остаточные видеоблоки, ассоциированные с TU из CU и предсказательные видеоблоки PU из CU, т.е. либо данные интра-предсказания, либо данные интер-предсказания, по мере необходимости, чтобы реконструировать видеоблок CU. Таким образом, видеодекодер 30 может сгенерировать предсказательный видеоблок и остаточный видеоблок на основе синтаксических элементов в битовом потоке и может сгенерировать видеоблок на основе предсказательного видеоблока и остаточного видеоблока.

[0123] После того, как модуль 158 реконструкции реконструирует видеоблок CU, модуль 159 фильтра может выполнить одну или более операций фильтрации для улучшения общего качества кодирования. Примеры операций фильтрации, выполняемых модулем 159 фильтра, могут включать в себя одну или более операций фильтрации для удаления блочности, операции адаптивной фильтрации сдвига выборок и операций адаптивной контурной фильтрации. После того, как модуль 159 фильтра выполнит операции фильтрации, видеодекодер 30 может сохранить видеоблок CU в буфере 160 декодированных изображений. Буфер 160 декодированных изображений может предоставить опорные изображения для последующей компенсации движения, интра-предсказания и представления на устройстве отображения, таком как устройство 32 отображения по фиг. 1. Например, видеодекодер 30 может выполнить, на основе видеоблоков в буфере 160 декодированных изображений, операции интра-предсказания или интер-предсказания в отношении PU других CU.

[0124] Фиг. 4 является принципиальной схемой, которая иллюстрирует примерную конфигурацию модуля 121 интерпредсказания. Модуль 121 интер-предсказания может разбить текущую CU на PU согласно многочисленным режимам разбиения. Например, модуль 121 интер-предсказания может разбить текущую CU на PU согласно режимам разбиения 2N×2N, 2Ν×Ν, Ν×2Ν и Ν×Ν.

[0125] Модуль 121 интер-предсказания может выполнить целочисленную оценку движения (IME) и затем выполнить дробную оценку движения (FME) в отношении каждой из PU. Когда модуль 121 интер-предсказания выполняет IME в отношении PU, модуль 121 интер-предсказания может осуществить поиск одной или более опорных изображений для опорного блока для PU. После обнаружения опорного блока для PU, модуль 121 интер-предсказания может сгенерировать вектор движения, который указывает, с целочисленной точностью, пространственное смещение между PU и опорным блоком для PU. Когда модуль 121 интер-предсказания выполняет FME в отношении PU, модуль 121 интер-предсказания может скорректировать вектор движения, сгенерированный посредством выполнения IME в отношении PU. Вектор движения, сгенерированный посредством выполнения FME в отношении PU, может иметь дробную точность (например, точность в 1/2 пикселя, точность в 1/4 пикселя и т.д.). После генерирования вектора движения для PU, модуль 121 интер-предсказания может использовать вектор движения для PU, чтобы сгенерировать предсказательный видеоблок для PU.

[0126] В некоторых примерах, где модуль 121 интер-предсказания сигнализирует информацию движения PU с использованием режима AMVP, модуль 121 интер-предсказания может сгенерировать список кандидатов для PU. Список кандидатов может включать в себя один или более первоначальных кандидатов и один или более дополнительных кандидатов, которые получены из первоначальных кандидатов. После генерирования списка кандидатов для PU, модуль 121 интер-предсказания может выбрать кандидата из списка кандидатов и сгенерировать разность векторов движения (MVD) для PU. MVD для PU может указывать разность между вектором движения, указанным выбранным кандидатом, и вектором движения, сгенерированным для PU с использованием IME и FME. В таких примерах, модуль 121 интер-предсказания может выводить индекс кандидатов, который идентифицирует размещение в списке кандидатов выбранного кандидата. Модуль 121 интер-предсказания может также выводить MVD для PU. Фиг. 6, описанная подробно ниже, иллюстрирует примерную операцию AMVP.

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

[0128] После генерирования списка кандидатов, модуль 121 интер-предсказания может выбрать одного из кандидатов из списка кандидатов. Модуль 121 интер-предсказания может, например, выбрать кандидата из списка кандидатов для достижения желаемого качества реконструированного видео и/или сжатия. Модуль 121 интер-предсказания может затем сгенерировать предсказательный видеоблок для PU на основе опорных блоков, указанных посредством информации движения PU. В режиме слияния, информация движения PU может быть такой же, как информация движения, указанная выбранным кандидатом. Фиг. 5, описанная ниже, является схемой последовательности операций, которая иллюстрирует примерную операцию слияния.

[0129] После генерирования предсказательного видеоблока для PU на основе IME и FME и после генерирования предсказательного видеоблока для PU на основе операции слияния, модуль 121 интерпредсказания может выбрать предсказательный видеоблок, сгенерированный посредством операции FME, или предсказательный видеоблок, сгенерированный посредством операции слияния. В некоторых примерах, модуль 121 интер-предсказания может выбрать предсказательный видеоблок для PU на основе анализа зависимости искажений от скорости передачи предсказательного видеоблока, сгенерированного посредством операции FME, и предсказательного видеоблока, сгенерированного посредством операции слияния.

[0130] После того, как модуль 121 интер-предсказания выбрал предсказательные видеоблоки для PU, сгенерированных посредством разбиения текущей CU согласно каждому из режимов разбиения, модуль 121 интер-предсказания может выбрать режим разбиения для текущей CU. В некоторых примерах, модуль 121 интер-предсказания может выбрать режим разбиения для текущей PU на основе анализа зависимости искажений от скорости передачи выбранных предсказательных видеоблоков для PU, сгенерированных посредством разбиения текущей CU согласно каждому из режимов разбиения. Модуль 121 интер-предсказания может выводить предсказательные видеоблоки, ассоциированные с PU, принадлежащими выбранному режиму разбиения, в модуль 102 генерирования остатка. Модуль 121 интер-предсказания может выводить синтаксические элементы, указывающие информацию движения PU, принадлежащих выбранному режиму разбиения, в модуль 116 энтропийного кодирования.

[0131] В примере по фиг. 4, модуль 121 интер-предсказания включает в себя модули 180A-180N IME (вместе "модули 180 IME"), модули FME 182A-182N (вместе "модули 182 FME"), модули 184A-184N слияния (вместе, модули 184 слияния), модули 186A-186N выбора режима PU (вместе "модули 186 выбора режима PU") и модуль 188 выбора режима CU.

[0132] Модули 180 IME, модули 182 FME и модули 184 слияния могут выполнять операции IME, операции FME и операции слияния в отношении PU текущей CU. Пример по фиг. 4 иллюстрирует модуль 121 интер-предсказания как включающий в себя отдельные модули 180 IME, модули 182 FME и модуль 184 слияния для каждой PU каждого режима разбиения CU. В других примерах, модуль 121 интер-предсказания не включает в себя отдельные модули 180 IME, модули 182 FME и модуль 184 слияния для каждой PU каждого режима разбиения CU.

[0133] Как проиллюстрировано в примере по фиг. 4, модуль 18OA IME, модуль 182А FME и модуль 184А слияния могут выполнить операцию IME, операцию FME и операцию слияния в отношении PU, сгенерированной посредством разбиения CU согласно режиму разбиения 2N×2N. Модуль 186А выбора режима PU может выбрать один из предсказательных видеоблоков, сгенерированных модулем 180А IME, модулем 182А FME и модулем 184А слияния.

[0134] Модуль 180В IME, модуль 182 В FME и модуль 184В слияния могут выполнить операцию IME, операцию FME и операцию слияния в отношении левой PU, сгенерированной посредством разбиения CU согласно режиму разбиения N×2N. Модуль 186В выбора режима PU может выбрать один из предсказательных видеоблоков, сгенерированных модулем 180В IME, модулем 182 В FME и модулем 184 В слияния.

[0135] Модуль 180С IME, модуль 182С FME и модуль 184С слияния могут выполнить операцию IME, операцию FME и операцию слияния в отношении правой PU, сгенерированной посредством разбиения CU согласно режиму разбиения N×2N. Модуль 186С выбора режима PU может выбрать один из предсказательных видеоблоков, сгенерированных модулем 180С IME, модулем 182С FME и модулем 184С слияния.

[0136] Модуль 18 ON IME, модуль 182N FME и модуль 184N слияния могут выполнить операцию IME, операцию FME и операцию слияния в отношении нижней PU, сгенерированной посредством разбиения CU согласно режиму разбиения Ν×Ν. Модуль 186Ν выбора режима PU может выбрать один из предсказательных видеоблоков, сгенерированных модулем 18 ON IME, модулем 182N FME и модулем 184N слияния.

[0137] Модули 186 выбора режима PU могут быть сконфигурированы для выбора предсказательных видеоблоков, которые дают желаемое качество реконструированного видео и/или желаемые коэффициенты сжатия. Модули выбора режима PU могут, например, выбирать предсказательные видеоблоки на основе анализа зависимости искажений от скорости передачи многочисленных возможных предсказательных видеоблоков и выбирать предсказательный видеоблок, который предоставляет наилучшее соотношение скорость передачи - искажение для заданного сценария кодирования. В качестве одного примера, для применений с ограниченной полосой пропускания, модули 186 выбора режима PU могут склоняться к выбору предсказательных видеоблоков, которые увеличивают коэффициент сжатия, тогда как для других применений, модули 186 выбора режима PU могут склоняться к выбору предсказательных видеоблоков, которые увеличивают качество реконструированного видео. После того, как модули 186 выбора режима PU выбирают предсказательные видеоблоки для PU текущей CU, модуль 188 выбора режима CU выбирает режим разбиения для текущей CU и выводит предсказательные видеоблоки и информацию движения PU, принадлежащих выбранному режиму разбиения.

[0138] Фиг. 5 является схемой последовательности операций, которая иллюстрирует примерную операцию 200 слияния. Видеокодер, такой как видеокодер 20, может выполнить операцию 200 слияния. В других примерах, видеокодер может выполнять операции слияния, отличные от операции 200 слияния. Например, в других примерах, видеокодер может выполнить операцию слияния, в которой видеокодер выполняет больше, меньше или другие этапы, нежели операция 200 слияния. В других примерах, видеокодер может выполнять этапы операции 200 слияния в других порядках или параллельно. Кодер может также выполнить операцию 200 слияния в отношении PU, кодированной в режиме пропуска.

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

[0140] Как кратко рассмотрено выше, список кандидатов для текущей PU может включать в себя временного кандидата. Временной кандидат может указывать информацию движения идентично расположенной PU. Идентично расположенная PU может быть пространственно идентично расположена с текущей PU, но находиться в опорном изображении вместо текущего изображения. В этом раскрытии опорное изображение, которое включает в себя идентично расположенную PU, может называться релевантным опорным изображением. В этом раскрытии индекс опорного изображения релевантного опорного изображения может называться индексом релевантного опорного изображения. Как описано выше, текущее изображение может быть ассоциировано с одним или более списками опорных изображений, например, списком 0, списком 1 и т.д. Индекс опорного изображения может указывать опорное изображение посредством указания положения опорного изображения в одном из списков опорных изображений. В некоторых примерах, текущее изображение может быть ассоциировано с объединенным списком опорных изображений.

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

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

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

[0144] В некоторых примерах, где видеокодер в явной форме задает индекс релевантного опорного изображения, видеокодер может в явной форме сигнализировать индекс релевантного опорного изображения в синтаксической структуре, такой как заголовок изображения, заголовок слайса, APS, или другой синтаксической структуре. В этом примере, видеокодер может сигнализировать индекс релевантного опорного изображения для каждой LCU, CU, PU, TU или другого типа подблока. Например, видеокодер может сигнализировать, что индексы релевантного опорного изображения для каждой PU из CU равны "1".

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

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

[0147] После выбора кандидата, видеокодер может вывести индекс кандидата (208). Индекс кандидата может указывать положение выбранного кандидата в списке кандидатов. В некоторых примерах, индекс кандидата может быть обозначен как "merge_idx".

[0148] Фиг. 6 является схемой последовательности операций, которая иллюстрирует примерную операцию 210 AMVP. Видеокодер, такой как видеокодер 20, может выполнить операцию 210 AMVP. Фиг. 6 является лишь одним примером операции AMVP.

[0149] После того, как видеокодер начинает операцию 210 AMVP, видеокодер может сгенерировать один или более векторов движения для текущей PU (211). Видеокодер может выполнить целочисленную оценку движения или дробную оценку движения, чтобы сгенерировать векторы движения для текущей PU. Как описано выше, текущее изображение может быть ассоциировано с двумя списками опорных изображений, списком 0 и списком 1. Если текущая PU предсказана посредством однонаправленного предсказания, видеокодер может сгенерировать вектор движения списка 0 или вектор движения списка 1 для текущей PU. Вектор движения списка 0 может указывать пространственное смещение между видеоблоком текущей PU и опорным блоком в опорном изображении в списке 0. Вектор движения списка 1 может указывать пространственное смещение между видеоблоком текущей PU и опорным блоком в опорном изображении в списке 1. Если текущая PU предсказана посредством двунаправленного предсказания, видеокодер может сгенерировать вектор движения списка 0 и вектор движения списка 1 для текущей PU.

[0150] После генерирования вектора движения или векторов движения для текущей PU, видеокодер может сгенерировать предсказательный видеоблок для текущей PU (212). Видеокодер может сгенерировать предсказательный видеоблок для текущей PU на основе одного или более опорных блоков, указанных посредством одного или более векторов движения для текущей PU.

[0151] В дополнение, видеокодер может сгенерировать список кандидатов для текущей PU (213). Видеокодер может сгенерировать список кандидатов для текущей PU различным образом. Например, видеокодер может сгенерировать список кандидатов для текущей PU, согласно одному или более из примерных способов, описанных ниже касательно фиг. 8-13 В. В некоторых примерах, когда видеокодер генерирует список кандидатов в операции 210 AMVP, список кандидатов может быть ограничен двумя кандидатами. В отличие от этого, когда видеокодер генерирует список кандидатов в операции слияния, список кандидатов может включать в себя больше кандидатов (например, пять кандидатов).

[0152] После генерирования списка кандидатов для текущей PU, видеокодер может сгенерировать одну или более разностей векторов движения (MVD) для каждого кандидата в списке кандидатов (214). Видеокодер может сгенерировать разность векторов движения для кандидата посредством определения разности между вектором движения, указанным кандидатом, и соответствующим вектором движения текущей PU.

[0153] Если текущая PU предсказана посредством однонаправленного предсказания, видеокодер может сгенерировать одну MVD для каждого кандидата.

[0153] Если текущая PU предсказана посредством двунаправленного предсказания, видеокодер может сгенерировать две MVD для каждого кандидата. Первая MVD может указывать разность между вектором движения кандидата и вектором движения списка 0 текущей PU. Вторая MVD может указывать разность между вектором движения кандидата и вектором движения списка 1 текущей PU.

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

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

[0156] В случаях, когда текущее изображение ассоциировано с двумя списками опорных изображений, списком 0 и списком 1, и текущая PU предсказана посредством однонаправленного предсказания, видеокодер может выводить индекс опорного изображения для списка 0 ("ref_idx_10") или списка 1 ("ref_idx_11"). Видеокодер может также выводить индекс кандидата ("mvp_10_flag"), который указывает положение выбранного кандидата в списке кандидатов для вектора движения списка 0 текущей PU. В качестве альтернативы, видеокодер может выводить индекс кандидата ("mvp_11_flag"), который указывает положение выбранного кандидата в списке кандидатов для вектора движения списка 1 текущей PU. Видеокодер может также выводить MVD для вектора движения списка 0 или вектора движения списка 1 текущей PU.

[0157] В случаях, когда текущее изображение ассоциировано с двумя списками опорных изображений, списком 0 и списком 1, и текущая PU предсказана посредством двунаправленного предсказания, видеокодер может выводить индекс опорного изображения для списка 0 ("ref_idx_10") и индекс опорного изображения для списка 1 ("ref_idx_11"). Видеокодер может также выводить индекс кандидата ("mvp_10_flag"), который указывает положение выбранного кандидата в списке кандидатов для вектора движения списка 0 текущей PU. В дополнение, видеокодер может выводить индекс кандидата ("mvp_11_flag"), который указывает положение выбранного кандидата в списке кандидатов для вектора движения списка 1 текущей PU. Видеокодер может также выводить MVD для вектора движения списка 0 текущей PU и MVD для вектора движения списка 1 текущей PU.

[0158] Фиг. 7 является схемой последовательности операций, которая иллюстрирует примерную операцию 220 компенсации движения, выполняемую видеодекодером, таким как видеодекодер 30. Фиг. 7 является лишь одним примером операции компенсации движения.

[0159] Когда видеодекодер выполняет операцию 220 компенсации движения, видеодекодер может принять указание выбранного кандидата для текущей PU (222). Например, видеодекодер может принять индекс кандидата, который указывает положение выбранного кандидата внутри списка кандидатов для текущей PU.

[0160] Если информация движения текущей PU кодирована с использованием режима AMVP, и текущая PU предсказана посредством двунаправленного предсказания, видеодекодер может принять первый индекс кандидата и второй индекс кандидата. Первый индекс кандидата указывает положение выбранного кандидата в списке кандидатов для вектора движения списка 0 текущей PU. Второй индекс кандидата указывает положение выбранного кандидата в списке кандидатов для вектора движения списка 1 текущей PU. В некоторых примерах, для идентификации обоих индексов кандидатов может быть использован один синтаксический элемент.

[0161] В дополнение, видеодекодер может сгенерировать список кандидатов для текущей PU (224). Видеодекодер может сгенерировать такой список кандидатов для текущей PU различным образом. Например, видеодекодер может использовать способы, описанные ниже со ссылкой на фиг. 8-14, чтобы сгенерировать список кандидатов для текущей PU. Когда видеодекодер генерирует временного кандидата для списка кандидатов, видеодекодер может в явной форме или неявной форме задать индекс опорного изображения, который идентифицирует опорное изображение, которое включает в себя идентично расположенную PU, как описано выше касательно фиг. 5.

[0162] После генерирования списка кандидатов для текущей PU, видеодекодер может определить информацию движения текущей PU на основе информации движения, указанной одним или более выбранными кандидатами в списке кандидатов для текущей PU (225). Например, если информация движения текущего PU кодирована с использованием режима слияния, информация движения текущего PU может быть такой же как информация движения, указанная выбранным кандидатом. Если информация движения текущей PU кодирована с использованием режима AMVP, видеодекодер может использовать один или более векторов движения, указанных выбранным кандидатом или кандидатами, и одну или более MVD, указанных в битовом потоке, для реконструкции вектора движения или векторов движения текущей PU. Индекс(ы) опорного изображения и указатель(и) направления предсказания текущей PU могут быть такими же как индекс(ы) опорного изображения и указатель(и) направления предсказания одного или более выбранных кандидатов. После определения информации движения для текущей PU, видеодекодер может сгенерировать предсказательный видеоблок для текущей PU на основе одного или более опорных блоков, указанных посредством информации движения текущей PU (226).

[0163] Информация движения соседнего элемента используется относительно размещения текущего видеоблока (плюс MVD с AMVP). Другими словами, MV соседнего элемента ссылается на движение относительно соседнего элемента. MV текущего блока ссылается на движение относительно текущего блока. Так если текущий блок заимствует информацию движения соседних элементов, заимствованный MV задает движение относительно текущего блока (не соседнего элемента, из которого он был заимствован).

[0164] Фиг. 8 является принципиальной схемой, которая иллюстрирует CU 250 и примерные размещения 252А-Е кандидатов, ассоциированные с CU 250. В этом раскрытии размещения 252А-252Е кандидатов, могут вместе называться размещениями 252 кандидатов. Размещения 252 кандидатов представляют собой пространственных кандидатов, которые находятся в том же изображении, как и CU 250. Размещение 252А кандидата размещается слева от CU 250. Размещение 252В кандидата размещается сверху CU 250. Размещение 252С кандидата размещается сверху справа от CU 250. Размещение 252D кандидата размещается снизу слева от CU 250. Размещение 252Е кандидата размещается сверху слева от CU 250. Фиг. 8 будет использована для предоставления примеров того, как модуль 121 интер-предсказания и модуль 162 компенсации движения могут генерировать списки кандидатов. Примеры ниже будут разъяснены со ссылкой на модуль 121 интер-предсказания, но следует понимать, что модуль 162 компенсации движения может реализовать те же способы и, таким образом, сгенерировать такой же список кандидатов.

[0165] Фиг. 9 является схемой последовательности операций, которая иллюстрирует примерный способ для формирования списка кандидатов в соответствии со способами этого раскрытия. Способы по фиг. 9 будут описаны со ссылкой на список, который включает в себя пять кандидатов, хотя способы, описанные в настоящем документе, могут также быть использованы со списками других размеров. Каждый из пяти кандидатов может иметь индекс слияния (например, 0-4). Способы по фиг. 9 будут описаны со ссылкой на типичный видеокодер. Типичным видеокодером может, например, быть видеокодер, такой как видеокодер 20, или видеодекодер, такой как видеодекодер 30.

[0166] Чтобы сформировать список кандидатов согласно примеру по фиг. 9, видеокодер сначала рассматривает четыре пространственных кандидата (902). Четыре пространственных кандидата могут, например, включать в себя размещения 252А, 252В, 252С и 252D кандидатов. Четыре пространственных кандидата соответствуют информации движения четырех PU в том же изображении, что и текущая CU (например, CU 250). Видеокодер может рассматривать четыре пространственных кандидата в списке в конкретном порядке. Например, размещение 252А кандидата может быть рассмотрено первым. Если размещение 252А кандидата доступно, то размещению 252А кандидата может быть присвоен индекс слияния 0. Если размещение 252А кандидата недоступно, то видеокодер может не включать размещение 252А кандидата в список кандидатов. Размещение кандидата может быть недоступно по различным причинам. Например, размещение кандидата может быть недоступно, если размещение кандидата не находится внутри текущего изображения. В другом примере, размещение кандидата может быть недоступно, если размещение кандидата предсказано посредством интра-предсказания. В другом примере, размещение кандидата может быть недоступно, если размещение кандидата находится в другом слайсе, нежели текущая CU.

[0167] После рассмотрения размещения 252А кандидата, видеокодер может далее рассматривать размещение 252В кандидата. Если размещение 252В кандидата и доступно, и отличается от размещения 252А кандидата, то видеокодер может добавить размещение 252В кандидата к списку кандидатов. В этом конкретном контексте, термины "одинаковый" и "разный" ссылаются на информацию движения, ассоциированную с размещением кандидата. Таким образом, два размещения кандидатов рассматриваются как одинаковые, если они имеют одинаковую информацию движения, и рассматриваются как разные, если они имеют разную информацию движения. Если размещение 252А было недоступно, то видеокодер может присвоить размещению 252В кандидата индекс слияния 0. Если размещение 252А было доступно, то видеокодер может присвоить размещению 252В кандидата индекс слияния 1. Если размещение 252В кандидата либо недоступно, либо является таким же как размещение 252А кандидата, то видеокодер пропускает размещение 252В кандидата и не включает его в список кандидатов.

[0168] Аналогичным образом видеокодером рассматривается размещение 252С кандидата для включения в список. Если размещение 252С кандидата и доступно, и не такое же, как размещения 252В и 252А кандидатов, то видеокодер присваивает размещению 252С кандидата следующий доступный индекс слияния. Если размещение 252С кандидата либо недоступно, либо не отличается от по меньшей мере одного из размещений 252А и 252В кандидатов, то видеокодер не включает размещение 252С кандидата в список кандидатов. Далее видеокодером рассматривается размещение 252D кандидата. Если размещение 252D кандидата и доступно, и не такое же как размещения 252А, 252В и 252С кандидатов, то видеокодер присваивает размещению 252D кандидата следующий доступный индекс слияния. Если размещение 252D кандидата либо недоступно, либо не отличается от по меньшей мере одного из размещений 252А, 252В и 252С кандидатов, то видеокодер не включает размещение 252D кандидата в список кандидатов. Хотя вышеприведенный пример в общем описывает кандидатов 252A-D, рассматриваемых по отдельности для включения в список кандидатов, в некоторых реализациях, все из кандидатов 252A-D могут быть сначала добавлены в список кандидатов с дальнейшим удалением дубликатов из списка кандидатов.

[0169] После того как видеокодер рассмотрит первые четыре пространственных кандидата, список кандидатов может включать в себя четыре пространственных кандидата, или список может включать в себя меньше, чем четыре пространственных кандидата. Если список включает в себя четыре пространственных кандидата (904, да), то видеокодер рассматривает временного кандидата (906). Временной кандидат может соответствовать информации движения идентично расположенной PU изображения, отличного от текущего изображения. Если временной кандидат и доступен, и отличается от первых четырех пространственных кандидатов, то видеокодер присваивает временному кандидату индекс слияния 4. Если временной кандидат либо недоступен, либо такой же, как один из первых четырех пространственных кандидатов, то видеокодер не включает временного кандидата в список кандидатов. Таким образом, после того, как видеокодер рассмотрит временного кандидата (906), список кандидатов может включать в себя пять кандидатов (первые четыре пространственных кандидата, рассмотренные в блоке 902, и временного кандидата, рассмотренного в блоке 904) или может включать в себя четыре кандидата (первые четыре пространственных кандидата, рассмотренных в блоке 902). Если список кандидатов включает в себя пять кандидатов (908, да), то видеокодер заканчивает формирование списка.

[0170] Если список кандидатов включает в себя четыре кандидата (908, нет), то видеокодер может рассмотреть пятого пространственного кандидата (910). Пятый пространственный кандидат может, например, соответствовать размещению 252Е кандидата. Если кандидат в размещении 252Е и доступен, и отличается от кандидатов в размещениях 252А, 252В, 252С и 252D, то видеокодер может добавить в список кандидатов пятого пространственного кандидата, которому присвоен индекс слияния 4. Если кандидат в размещении 252Е либо недоступен, либо не отличается от одного из размещений 252А, 252В, 252С и 252D кандидатов, то видеокодер может не включать кандидата в размещении 252Е в список кандидатов. Таким образом, после рассмотрения пятого пространственного кандидата (910), список может включать в себя пять кандидатов (первые четыре пространственных кандидата, рассмотренные в блоке 902, и пятого пространственного кандидата, рассмотренного в блоке 910) или может включать в себя четыре кандидата (первые четыре пространственных кандидата, рассмотренных в блоке 902).

[0171] Если список кандидатов включает в себя пять кандидатов (912, да), то видеокодер заканчивает генерирование списка кандидатов. Если список кандидатов включает в себя четыре кандидата (912, нет), то видеокодер добавляет сгенерированных кандидатов (914), пока список не будет включать в себя пять кандидатов (916, да).

[0172] Если после того, как видеокодер рассмотрит первые четыре пространственных кандидата, список включает в себя меньше, чем четыре пространственных кандидата (904, нет), то видеокодер может рассмотреть пятого пространственного кандидата (918). Пятый пространственный кандидат может, например, соответствовать размещению 252Е кандидата. Если кандидат в размещении 252Е и доступен, и отличается от кандидатов, уже включенных в список кандидатов, то видеокодер может добавить в список кандидатов пятого пространственного кандидата, которому присвоен следующий доступный индекс слияния. Если кандидат в размещении 252Е либо недоступен, либо не отличается от одного из кандидатов, уже включенных в список кандидатов, то видеокодер может не включать кандидата в размещении 252Е в список кандидатов. Видеодекодер может затем рассмотреть временного кандидата (920). Если временной кандидат и доступен, и отличается от кандидатов, уже включенных в список кандидатов, то видеокодер может добавить в список кандидатов временного кандидата, которому присвоен следующий доступный индекс слияния. Если временной кандидат либо недоступен, либо не отличается от одного из кандидатов, уже включенных в список кандидатов, то видеокодер может не включать временного кандидата в список кандидатов.

[0173] Если после рассмотрения пятого пространственного кандидата (блок 918) и временного кандидата (блок 920) список кандидатов включает в себя пять кандидатов (922, да), то видеокодер заканчивает генерирование списка кандидатов. Если список кандидатов включает в себя меньше, чем пять кандидатов (922, нет), то видеокодер добавляет сгенерированных кандидатов (914), пока список не будет включать в себя пять кандидатов (916, да).

[0174] Согласно способам этого раскрытия, дополнительные кандидаты для слияния могут быть искусственно сгенерированы, исходя из пространственных и временных кандидатов, чтобы сделать размер списка кандидатов для слияния фиксированным до точно определенного числа кандидатов для слияния, такого как пять в примере по фиг. 9 выше. Дополнительные кандидаты для слияния могут включать в себя, например, объединенного кандидата (кандидата 1) двунаправленного предсказания для слияния, масштабированного кандидата (кандидата 2) для слияния, предсказываемого посредством двунаправленного предсказания, и кандидатов для слияния с нулевыми векторами/AMVP-кандидатов (кандидата 3).

[0175] Фиг. 10 показывает пример объединенного кандидата для слияния. Объединенные кандидаты с двунаправленным предсказанием для слияния могут быть созданы посредством объединения первоначальных кандидатов для слияния. В частности, два кандидата из первоначальных кандидатов, которые имеют mvL0 и refIdxL0 или mvL1 и refIdxL1, могут быть использованы для создания кандидатов с двунаправленным предсказанием для слияния. Фиг. 10 показывает пример объединенных кандидатов с двунаправленным предсказанием для слияния. На фиг. 10, два кандидата включены в список первоначальных кандидатов для слияния. Типом предсказания одного кандидата является однонаправленное предсказание списка 0, и другим типом является однонаправленное предсказание списка 1. В этом примере, mvL0_A и ref0 подобраны из списка 0, и mvL1_B и ref0 подобраны из списка 1, и затем кандидат с двунаправленным предсказанием для слияния, который имеет mvL0_A и ref0 в списке 0 и mvL1_B и ref0 в списке 1, может быть создан и проверен, отличается ли он от кандидатов, уже включенных в список кандидатов. Если он отличается, то видеокодер может включить кандидата для слияния, предсказываемого посредством двунаправленного предсказания, в список кандидатов.

[0176] Фиг. 11 показывает пример масштабированного кандидата для слияния. Масштабированные кандидаты с двунаправленным предсказанием для слияния могут быть созданы посредством масштабирования первоначальных кандидатов для слияния. В частности, один кандидат из первоначальных кандидатов, который может иметь mvLX и refIdxLX, может быть использован для создания кандидатов с двунаправленным предсказанием для слияния. Фиг. 11 показывает пример масштабированного кандидата с двунаправленным предсказанием для слияния. В примере по Фиг. 11, два кандидата включены в список первоначальных кандидатов для слияния. Типом предсказания одного кандидата является однонаправленное предсказание списка 0, и другим типом является однонаправленное предсказание типа 1. В этом примере, mvL0_A и ref0 могут быть подобраны из списка 0, и ref0 может быть скопирован в опорный индекс ref0′ в списке 1. Затем, mvL0′_A может быть вычислен посредством масштабирования mvL0_A с помощью ref0 и ref0′. Масштабирование может быть зависимо от расстояния РОС. Затем, кандидат с двунаправленным предсказанием для слияния, который имеет mvL0_А и ref0 в списке 0 и mvL0′_А и ref0′ в списке 1, может быть создан и проверен, является ли он дубликатом или нет. Если он не является дубликатом, он может быть добавлен в список кандидатов для слияния.

[0177] Фиг. 12 показывает пример кандидатов для слияния с нулевыми векторами. Кандидаты для слияния с нулевыми векторами могут быть созданы посредством объединения нулевых векторов с опорными индексами, на которые могут ссылаться. Фиг. 12 показывает пример кандидатов для слияния с нулевыми векторами. Если кандидаты с нулевыми векторами не являются дубликатами, они могут быть добавлены в список кандидатов для слияния. Для каждого сгенерированного кандидата для слияния, информация движения может сравниваться с информацией движения предыдущего кандидата в списке. В одном примере, если новый сгенерированный кандидат отличается от кандидатов, уже включенных в список кандидатов, то сгенерированный кандидат добавляется в список кандидатов для слияния. Этот процесс определения, отличается ли кандидат от кандидатов, уже включенных в список кандидатов, иногда называют отсечением. С помощью отсечения, каждый новый сгенерированный кандидат может сравниваться с существующими кандидатами в списке, что может иметь высокие вычислительные затраты. В некоторых случаях, операция отсечения может включать в себя сравнение одного или более новых кандидатов с кандидатами, уже находящимися в списке кандидатов, и не добавление новых кандидатов, которые являются дубликатами кандидатов, уже находящихся в списке кандидатов. В некоторых случаях, операция отсечения может включать в себя добавление одного или более новых кандидатов в список кандидатов, и дальнейшее удаление дублированных кандидатов из списка.

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

[0179] Согласно дополнительным способам этого раскрытия, новый кандидат (кандидат со сдвигом) может быть добавлен и интегрирован с нулевым кандидатом, чтобы компенсировать любые возможные потери эксплуатационных характеристик, внесенные вышеупомянутым упрощением. Кандидаты со сдвигом могут быть сгенерированы посредством добавления некоторого mv со сдвигом к вектору движения существующих кандидатов для слияния. Mv со сдвигом, которые могут быть добавлены, могут быть включать в себя, например, (4, 0), (-4, 0), (0, 4) и (0, -4). Эти значения сдвига могут быть добавлены к другому вектору движения, чтобы сгенерировать кандидата со сдвигом. Могут быть использованы другие значения сдвига, нежели показанные значения сдвига.

[0180] Таблица 1 ниже показывает примеры mv_offset-кандидатов. В качестве примеров, показанных в Таблице 1, первые два кандидата происходят из пространственных и временных соседних элементов. Последние три кандидата сгенерированы посредством сдвига существующих кандидатов.

[0181] Согласно способам этого раскрытия, процедура для генерирования mv_offset-кандидатов может включать в себя нижеследующие этапы:

1. Если существующий кандидат для слияния является кандидатом с однонаправленным предсказанием, mv_offset-кандидат, основанный на существующем кандидате для слияния, может быть сгенерирован посредством добавления значения сдвига к вектору движения существующего кандидата для слияния и копирования опорного индекса, как показано кандидатом 3 для слияния Таблицы 1.

2. Если существующий кандидат для слияния является кандидатом с двунаправленным предсказанием, mv_offset-кандидат, основанный на существующем кандидате для слияния, может быть сгенерирован посредством:

a. Если два опорных кадра L0 и L1 с одной стороны от текущего кадра (спереди или сзади), mv_offset-кандидат может быть сгенерирован посредством добавления значения сдвига к вектору движения, указывающему на дальний опорный кадр от текущего кадра. См., например, фиг. 13А.

b. Если два опорных кадра L0 и L1 с разных сторон от текущего кадра, mv_offset-кандидат может быть сгенерирован посредством добавления значения сдвига к mv из одного списка и вычитания того же значения сдвига из mv из другого списка. См., например, фиг. 13В.

[0182] Фиг. 13А показывает графический пример генерирования mv_offset-кандидатов согласно этапу 2(a) выше. На фиг. 13А, оба опорных кадра (N-3 и N-2 в этом примере) находятся с одной стороны от текущего кадра. На фиг. 13А, оба опорных кадра находятся сзади по отношению к текущему кадру, но те же способы могут быть использованы по случаю, когда оба опорных кадра находятся спереди по отношению к текущему кадру. Опорный кадр N-2 имеет ассоциированный вектор движения mv1, и опорный кадр N-3 имеет ассоциированный вектор движения mv2. Чтобы сгенерировать искусственного кандидата, mv_offset добавляется к вектору движения, указывающему на дальний опорный кадр, которым является mv2 опорного кадра N-3 в примере по фиг. 13А. Таким образом, в примере по фиг. 13А, искусственно сгенерированный кандидат для слияния является кандидатом с двунаправленным предсказанием, с информацией движения опорного кадра N-2 и информацией движения (mv2+mv_offset), полученной из опорного кадра Ν-3.

[0183] Фиг. 13В показывает графический пример генерирования mv_offset-кандидатов согласно этапу 2(b) выше. На фиг. 13В, один опорный кадр (N-1) находится сзади по отношению к текущему кадру, и один опорный кадр (N+1) находится спереди по отношению к текущему кадру. Опорный кадр N-1 имеет ассоциированный вектор движения mv1, и опорный кадр N+1 имеет ассоциированный вектор движения mv2. Чтобы сгенерировать искусственного кандидата, mv_offset добавляется к вектору движения одного опорного кадра и вычитается из вектора движения другого опорного кадра. Таким образом, в примере по фиг. 13В, искусственно сгенерированный кандидат для слияния является кандидатом с двунаправленным предсказанием, с. информацией движения, полученной из опорного кадра N-1, и информацией движения, полученной из опорного кадра N+1.

[0184] Согласно способам этого раскрытия, нулевые кандидаты могут быть интегрированы в кандидатов со сдвигом. В таком способе, нулевые кандидаты могут быть добавлены условно перед кандидатами со сдвигом, как следует ниже:

Если в пространственных и временных соседних элементах кандидат не обнаружен, то перед кандидатами со сдвигом добавляется mv=(0, 0) refidx=0.

Если кандидат mv=(0, 0) refidx=0 уже был обнаружен в пространственных и временных соседних элементах, то перед кандидатами со сдвигом добавляется mv=(0, 0) refidx=1.

[0185] Согласно дополнительным способам этого раскрытия, итоговые дополнительные кандидаты могут включать в себя:

Кандидат 1: Объединенный кандидат с двунаправленным предсказанием (с операцией отсечения)

Кандидат 2: Сдвиг с нулевыми интегрированными кандидатами (без операции отсечения) Так как кандидаты в "Кандидате 2" не требуют отсечения, кандидаты 1 и 2 могут быть сгенерированы параллельно.

[0186] Фиг. 14 является схемой последовательности операций, показывающей пример способов, описанных в этом раскрытии. Способы по фиг. 14 могут быть выполнены видеокодером, таким как либо видеокодер 20, либо видеокодер 30. Видеодекодер может определить набор пространственных кандидатов, ассоциированных с текущим участком текущего видеокадра (142). Набор пространственных кандидатов может соответствовать соседним участкам текущего видеокадра, смежным с текущим участком. Каждый пространственный кандидат имеет ассоциированную информацию движения. Видеокодер может также определить временного кандидата, ассоциированного с текущим участком текущего видеокадра (144). Временной кандидат соответствует участку опорного видеокадра, и временной кандидат имеет ассоциированную информацию движения.

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

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

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

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

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

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

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

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

название год авторы номер документа
ОГРАНИЧЕНИЕ ОДНОНАПРАВЛЕННЫМ ИНТЕР-ПРЕДСКАЗАНИЕМ ДЛЯ БЛОКОВ ПРЕДСКАЗАНИЯ В В-СЛАЙСАХ 2013
  • Ван Сянлинь
  • Серегин Вадим
  • Карчевич Марта
RU2620723C2
ОПРЕДЕЛЕНИЕ РЕЖИМА ВЫВОДА ИНФОРМАЦИИ ДВИЖЕНИЯ ПРИ ВИДЕОКОДИРОВАНИИ 2016
  • Ли Сян
  • Чэнь Ин
  • Чжан Ли
  • Лю Хонгбинь
  • Чэнь Цзяньлэ
  • Карчевич Марта
RU2719296C2
ОБЪЕДИНЕННОЕ ПРЕДСКАЗАНИЕ МЕЖКАДРОВОЕ И С ВНУТРИКАДРОВОЙ КОПИЕЙ БЛОКА 2015
  • Пан Чао
  • Рапака Кришнакантх
  • Ван Е-Куй
  • Соле Рохальс Джоэль
  • Карчевич Марта
RU2697744C2
ВЫВЕДЕНИЕ ВЕКТОРА ДВИЖЕНИЯ ПРИ ВИДЕОКОДИРОВАНИИ 2016
  • Ли, Сян
  • Чэнь, Ин
  • Чжан, Ли
  • Лю, Хонгбинь
  • Чэнь, Цзяньлэ
  • Карчевич, Марта
RU2742298C2
СПОСОБЫ И УСТРОЙСТВА КОДИРОВАНИЯ ВИДЕО С ИСПОЛЬЗОВАНИЕМ ПРОГНОЗИРОВАНИЯ ВЕКТОРА ДВИЖЕНИЯ НА ОСНОВЕ ИСТОРИИ 2019
  • Ван, Сянлинь
  • Чэнь, И-Вэнь
RU2752644C1
ВЫВОД ИНФОРМАЦИИ ДВИЖЕНИЯ ДЛЯ ПОДБЛОКОВ ПРИ ВИДЕОКОДИРОВАНИИ 2016
  • Ли Сян
  • Чэнь Ин
  • Чжан Ли
  • Лю Хонгбинь
  • Чэнь Цзяньлэ
  • Карчевич Марта
RU2705428C2
СИГНАЛИЗАЦИЯ ПАРАМЕТРОВ ФИЛЬТРА УДАЛЕНИЯ БЛОЧНОСТИ ПРИ КОДИРОВАНИИ ВИДЕО 2013
  • Ван Дер Аувера Герт
  • Ван Е-Куй
  • Карчевич Марта
RU2573743C1
ВИДЕОКОДИРОВАНИЕ ИНТРА-РЕЖИМА 2012
  • Серегин Вадим
  • Чиэнь Вей-Дзунг
  • Карчевич Марта
RU2584498C2
ФИЛЬТР АДАПТИВНОГО СМЕЩЕНИЯ ЦЕНТРАЛЬНОЙ ПОЛОСЫ ДЛЯ ВИДЕОКОДИРОВАНИЯ 2012
  • Чонг Ин Сук
  • Кумар Санджив
  • Карчевич Марта
RU2575418C2
БУФЕРИЗАЦИЯ ДАННЫХ ПРЕДСКАЗАНИЯ ПРИ КОДИРОВАНИИ ВИДЕО 2012
  • Чиэнь Вэй-Цзюн
  • Чжэн Юньфэй
  • Ван Сянлинь
  • Карчевич Марта
  • Го Ливэй
RU2573744C2

Иллюстрации к изобретению RU 2 577 779 C2

Реферат патента 2016 года ГЕНЕРИРОВАНИЕ ДОПОЛНИТЕЛЬНЫХ КАНДИДАТОВ ДЛЯ СЛИЯНИЯ

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

Формула изобретения RU 2 577 779 C2

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

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

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

4. Способ по п. 1, дополнительно содержащий этап, на котором:
генерируют второго искусственно сгенерированного кандидата, при этом искусственно сгенерированный кандидат и второй искусственно сгенерированный кандидат генерируются параллельно.

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

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

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

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

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

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

11. Устройство по п. 8, при этом видеокодер дополнительно выполнен с возможностью генерирования второго искусственно сгенерированного кандидата, при этом искусственно сгенерированный кандидат и второй искусственно сгенерированный кандидат генерируются параллельно.

12. Устройство по п. 8, при этом видеокодер дополнительно выполнен с возможностью кодирования текущего участка текущего видеокадра с использованием режима слияния, при этом информация движения для режима слияния определяется на основе списка кандидатов.

13. Устройство по п. 8, при этом видеокодер является видеокодером, и при этом видеокодер выполнен с возможностью осуществления выбора кандидата из списка кандидатов и генерирования синтаксического элемента, указывающего индекс выбранного кандидата.

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

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

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

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

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

19. Устройство по п. 16, дополнительно содержащее:
средство для генерирования второго искусственно сгенерированного кандидата, при этом искусственно сгенерированный кандидат и второй искусственно сгенерированный кандидат генерируются параллельно.

20. Устройство по п. 16, дополнительно содержащее:
средство для кодирования текущего участка текущего видеокадра с использованием режима слияния, при этом информация движения для режима слияния определяется на основе списка кандидатов.

21. Устройство по п. 16, при этом устройство содержит видеокодер, и при этом устройство дополнительно содержит средство для осуществления выбора кандидата из списка кандидатов и средство для генерирования синтаксического элемента, указывающего индекс выбранного кандидата.

22. Устройство по п. 16, при этом устройство содержит видеодекодер, и при этом устройство дополнительно содержит средство для приема синтаксического элемента, идентифицирующего кандидата из списка кандидатов, и средство для декодирования текущего участка текущего видеокадра с использованием информации движения идентифицированного кандидата.

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

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

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

26. Компьютерно-читаемый носитель данных по п. 23, хранящий дополнительные инструкции, которые, при исполнении, предписывают одному или более процессорам:
сгенерировать второго искусственно сгенерированного кандидата, при этом искусственно сгенерированный кандидат и второй искусственно сгенерированный кандидат генерируются параллельно.

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

28. Компьютерно-читаемый носитель данных по п. 23, при этом один или более процессоров содержат видеокодер, при этом компьютерно-читаемый носитель данных хранит дополнительные инструкции, которые, при исполнении, предписывают одному или более процессорам осуществить выбор кандидата из списка кандидатов и сгенерировать синтаксический элемент, указывающий индекс выбранного кандидата.

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

Документы, цитированные в отчете о поиске Патент 2016 года RU2577779C2

Toshiyasu Sugio et al, Parsing Robustness for Merge/AMVP, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, JCTVC-F470, 6th Meeting: Torino, 14-22 July 2011
Jianle Chen et al, MVP index parsing with fixed number of candidates, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and

RU 2 577 779 C2

Авторы

Чжэн Юньфэй

Ван Сянлинь

Карчевич Марта

Даты

2016-03-20Публикация

2012-11-07Подача