ОПРЕДЕЛЕНИЕ ВЕКТОРА ДВИЖЕНИЯ ДЛЯ ВИДЕОКОДИРОВКИ
DETERMINATION OF MOTION VECTOR FOR VIDEO ENCODING

[0001] По данной заявке испрашивается приоритет по предварительной заявке на патент США № 61/535964, поданной 17 сентября 2011 г., предварительной заявке на патент США № 61/564764, поданной 29 ноября 2011 г., и предварительной заявке на патент США № 61/564799, поданной 29 ноября 2011 г., полное содержание каждой из которых включено в данное описание посредством ссылки.
Область техники, к которой относится изобретение
[0002] Изобретение относится к видеокодировке и, в частности, к межкадровому прогнозированию видеоданных.
Уровень техники
[0003] Возможности цифрового видео можно внедрять в разнообразные устройства, включая цифровые телевизоры, системы прямого цифрового вещания, беспроводные широковещательные системы, карманные персональные компьютеры (КПК), портативные или настольные компьютеры, цифровые камеры, цифровые устройства записи, цифровые медиапроигрыватели, устройства для видеоигр, консоли для видеоигр, сотовые или спутниковые радиотелефоны, устройства видеоконференцсвязи, и пр. Устройства цифрового видео реализуют методы сжатия видеосигнала, например, описанные в стандартах, заданных как MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), стандарте High Efficiency Video Coding (HEVC), в настоящее время находящемся в разработке, и расширениях таких стандартов, для более эффективного осуществления передачи, приема и сохранения цифровой видеоинформации.
[0004] Методы сжатия видеосигнала осуществляют пространственное (внутри изображения) прогнозирование и/или временное (между изображениями) прогнозирование для снижения или устранения избыточности, присущей видеопоследовательностям. Для кодирования видеосигнала на основе блоков, срез видео можно разбивать на видеоблоки, которые также могут именоваться блоками дерева, единицами (CU) кодирования и/или узлами кодирования. Видеоблоки во внутренне кодированном (I) срезе изображения кодируются с использованием пространственного прогнозирования в отношении опорных выборок в соседних блоках в одном и том же изображении. Видеоблоки во внешне кодированном (P или B) срезе изображения могут использовать пространственное прогнозирование в отношении опорных выборок в соседних блоках в одном и том же изображении или временное прогнозирование в отношении опорных выборок в других опорных изображениях. Изображения могут именоваться кадрами, и опорные изображения могут именоваться опорными кадрами.
Сущность изобретения
[0005] В целом, в этом изобретении описаны методы кодирования и декодирования видеоданных. Видеокодировщик генерирует списки кандидатов для каждой единицы (PU) прогнозирования текущей единицы (CU) кодирования согласно режиму слияния или процессу усовершенствованного прогнозирования вектора движения (AMVP). Видеокодировщик генерирует списки кандидатов таким образом, что каждый кандидат в списках кандидатов который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой другой PU, принадлежащей текущей CU. Кандидаты, которые генерируются на основании информации движения других PU может включать в себя первоначальные кандидаты, которые указывают информацию движения других PU и кандидаты, которые указывают информацию движения, полученную из информации движения одной или более других PU. После генерации списка кандидатов для PU, видеокодировщик может генерировать прогностический видеоблок для PU на основании одного или более опорных блоков, указанных информацией движения PU. Информация движения PU является определимой на основании информации движения, указанной одним или более выбранными кандидатами в списке кандидатов для PU. Поскольку ни один из кандидатов в списках кандидатов для PU текущей CU не генерируются с использованием информации движения любой другой PU текущей CU, видеокодировщик может генерировать списки кандидатов параллельно для одной или более из PU текущей CU.
[0006] В этом изобретении описан способ кодирования видеоданных. Способ содержит этап, на котором генерируют, для каждой PU во множестве PU, принадлежащих текущей CU, список кандидатов для PU, так что каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой другой PU, принадлежащей текущей CU. Кроме того, способ содержит этап, на котором генерируют, для каждой PU, принадлежащей текущей CU, прогностический видеоблок для PU на основании опорного блока, указанного информацией движения PU, причем информация движения PU является определимой на основании информации движения, указанной выбранным кандидатом в списке кандидатов для PU.
[0007] Кроме того, в этом изобретении описано видеокодировочное устройство, которое содержит один или более процессоров, выполненных с возможностью генерации, для каждой PU во множестве PU, принадлежащих текущей CU, списка кандидатов для PU, так что каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой из PU, принадлежащих текущей CU. Один или более процессоров дополнительно выполнены с возможностью генерации, для каждой PU, принадлежащей текущей CU, прогностического видеоблока для PU на основании опорного блока, указанного информацией движения PU, причем информация движения PU является определимой на основании информации движения, указанной выбранным кандидатом в списке кандидатов для PU.
[0008] Кроме того, в этом изобретении описано видеокодировочное устройство, которое содержит средство для генерации, для каждой PU во множестве PU, принадлежащих текущей CU, списка кандидатов для PU, так что каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой из PU, принадлежащих текущей CU. Кроме того, видеокодировочное устройство содержит средство для генерации, для каждой PU, принадлежащей текущей CU, прогностического видеоблока для PU на основании опорного блока, указанного информацией движения PU, причем информация движения PU является определимой на основании информации движения, указанной выбранным кандидатом в списке кандидатов для PU.
[0009] Кроме того, в этом изобретении описан компьютерный программный продукт, который содержит один или более машиночитаемых носителей данных, где хранятся инструкции, которые, при выполнении, предписывают одному или более процессорам генерировать, для каждой PU во множестве PU, принадлежащих текущей CU, список кандидатов для PU, так что каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой из PU, принадлежащих текущей CU. Инструкции также предписывают одному или более процессорам генерировать, для каждой PU, принадлежащей текущей CU, прогностический видеоблок для PU на основании опорного блока, указанного информацией движения PU, причем информация движения PU является определимой на основании информации движения, указанной выбранным кандидатом в списке кандидатов для PU.
[0010] Детали одного или более примеров представлены в прилагаемых чертежах и нижеприведенном описании. Другие признаки, задачи и преимущества явствуют из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
[0011] Фиг. 1 - блок-схема, демонстрирующая пример видеокодировочной системы, которая может использовать методы этого изобретения.
[0012] Фиг. 2 - блок-схема, демонстрирующая пример видеокодера, который выполнен с возможностью реализации методов этого изобретения.
[0013] Фиг. 3 - блок-схема, демонстрирующая пример видеодекодера, который выполнен с возможностью реализации методов этого изобретения.
[0014] Фиг. 4 - блок-схема, иллюстрирующая примерную конфигурацию модуля внешнего прогнозирования.
[0015] Фиг. 5 - блок-схема операций, которая иллюстрирует пример операции слияния.
[0016] Фиг. 6 - блок-схема операций, которая иллюстрирует пример операции усовершенствованного прогнозирования вектора движения (AMVP).
[0017] Фиг. 7 - блок-схема операций, которая иллюстрирует пример операции компенсации движения, осуществляемой видеодекодером.
[0018] Фиг. 8A - принципиальная схема, которая демонстрирует единицу (CU) кодирования и примерные исходные положения, связанные с CU.
[0019] Фиг. 8B - принципиальная схема, которая демонстрирует CU и примерные альтернативные исходные положения, связанные с CU.
[0020] Фиг. 9A - принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса левее CU с разбиением 2N×N.
[0021] Фиг. 9B - принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса левее CU с разбиением N×2N.
[0022] Фиг. 9C - принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса выше CU с разбиением 2N×N.
[0023] Фиг. 9D - принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса выше CU с разбиением N×2N.
[0024] Фиг. 9E - принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса левее CU с разбиением N×N.
[0025] Фиг. 9F - принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса выше CU с разбиением N×N.
[0026] Фиг. 10A - принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса левее CU с разбиением 2N×N.
[0027] Фиг. 10B - принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса левее CU с разбиением N×2N.
[0028] Фиг. 10C - принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса выше CU с разбиением 2N×N.
[0029] Фиг. 10D - принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса выше CU с разбиением N×2N.
[0030] Фиг. 10E - принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса левее CU с разбиением N×N.
Фиг. 10F - принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса выше CU с разбиением N×N.
[0031] Фиг. 11 - блок-схема операций, которая иллюстрирует пример операции для генерации временного кандидата для PU.
[0032] Фиг. 12 - блок-схема операций, которая иллюстрирует первый пример операции для генерации списка кандидатов для PU.
[0033] Фиг. 13 - блок-схема операций, которая иллюстрирует второй пример операции для генерации списка кандидатов для PU.
[0034] Фиг. 14A - принципиальная схема, которая демонстрирует примерные исходные положения пространственных кандидатов, связанные с левой PU примера CU с разбиением N×2N.
[0035] Фиг. 14B - принципиальная схема, которая демонстрирует примерные исходные положения пространственных кандидатов, связанные с нижней PU CU с разбиением 2N×N.
[0036] Фиг. 15A-15D - принципиальные схемы, которые демонстрируют примерные исходные положения пространственных кандидатов, связанные с PU CU с разбиением N×N.
Подробное описание
[0037] Видеокодер может осуществлять внешнее прогнозирование для снижения временной избыточности между изображениями. Как описано ниже, единица (CU) кодирования может иметь множество единиц (PUs) прогнозирования. Другими словами, множество PU может принадлежать CU. Когда видеокодер осуществляет внешнее прогнозирование, видеокодер может сигнализировать информацию движения для PU. Информация движения PU может включать в себя индекс опорного изображения, вектор движения и индикатор направления прогнозирования. Вектор движения может указывать смещение между видеоблоком PU и опорным блоком PU. Опорный блок PU может быть частью опорного изображения, которая аналогична видеоблоку PU. Опорный блок может находиться в опорном изображении, указанном индексом опорного изображения и индикатором направления прогнозирования.
[0038] Для снижения количества битов, необходимого для представления информации движения PU, видеокодер может генерировать списки кандидатов для каждой из PU согласно режиму слияния или процессу усовершенствованного прогнозирования вектора движения (AMVP). Каждый кандидат в списке кандидатов для PU может указывать информацию движения. Информация движения, указанная некоторыми из кандидатов в списке кандидатов, может базироваться на информации движения других PU. Например, списки кандидатов могут включать в себя “первоначальные” кандидаты, которые указывают информацию движения PU, которые покрывают указанные положения пространственных или временных кандидатов. Кроме того, в некоторых примерах, списки кандидатов могут включать в себя кандидаты, генерируемые путем объединения частичных векторов движения из разных первоначальных кандидатов. Кроме того, списки кандидатов могут включать в себя “искусственные” кандидаты, которые не генерируются на основании информации движения других PU, например кандидаты, которые указывают векторы движения, имеющие нулевую величину.
[0039] В соответствии с методами этого изобретения, видеокодер может генерировать список кандидатов для каждой PU CU таким образом, что каждый кандидат в списках кандидатов который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой другой PU, принадлежащей CU. Поскольку ни один из кандидатов в списках кандидатов не генерируется с использованием информации движения любой другой PU одной и той же CU, видеокодер может быть способен параллельно генерировать списки кандидатов. Параллельная генерация списков кандидатов может облегчать реализацию видеокодера. В ряде случаев, параллельная генерация списков кандидатов может осуществляться быстрее, чем последовательная генерация списков кандидатов.
[0040] После генерации списка кандидатов для PU CU, видеокодер может выбирать кандидат из списка кандидатов и выводить индекс кандидата в битовый поток. Индекс кандидата может указывать позицию выбранного кандидата в списке кандидатов. Видеокодер также может генерировать прогностический видеоблок для PU на основании опорного блока, указанного информацией движения PU. Информация движения PU может быть определимой на основании информации движения, указанной выбранным кандидатом. Например, в режиме слияния, информация движения PU может быть идентична информации движения, указанной выбранным кандидатом. В режиме AMVP, информация движения PU может определяться на основании разности векторов движения PU и информации движения, указанной выбранным кандидатом. Видеокодер может генерировать один или более остаточных видеоблоков для CU на основании прогностических видеоблоков PU CU и первоначальный видеоблок для CU. Затем видеокодер может кодировать и выводить один или более остаточных видеоблоков в битовый поток.
[0041] Видеодекодер может генерировать списки кандидатов для каждой из PU CU. В соответствии с методами этого изобретения, видеодекодер может, для каждой из PU, генерировать список кандидатов для PU, так что каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой другой PU, принадлежащей CU. Списки кандидатов, генерируемые для PU видеодекодером, могут быть идентичны спискам кандидатов, генерируемым для PU видеокодером. Поскольку видеодекодер может генерировать каждый из кандидатов в списках кандидатов без использования информации движения любой другой PU CU, видеодекодер может быть способен параллельно генерировать списки кандидатов.
[0042] Битовый поток может включать в себя данные, которые идентифицируют выбранные кандидаты в списках кандидатов PU. Видеодекодер может определять информацию движения PU на основании информации движения, указанной выбранными кандидатами в списках кандидатов PU. Видеодекодер может идентифицировать один или более опорных блоков для PU на основании информации движения PU. После идентификации одного или более опорных блоков PU, видеодекодер может генерировать прогностический видеоблок для PU на основании одного или более опорных блоков PU. Видеодекодер может реконструировать видеоблок для CU на основании прогностических видеоблоков для PU CU и одного или более остаточных видеоблоков для CU.
[0043] Соответственно, методы этого изобретения могут позволять видеокодировщику (т.е. видеокодеру или видеодекодеру) генерировать, для каждой PU во множестве PU, принадлежащих текущей CU, список кандидатов для PU, так что каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой другой PU, принадлежащей текущей CU. Видеокодировщик может генерировать, для каждой PU, принадлежащей текущей CU, прогностический видеоблок для PU на основании опорного блока, указанного информацией движения PU, причем информация движения PU является определимой на основании информации движения, указанной выбранным кандидатом в списке кандидатов для PU.
[0044] Для простоты объяснения, это изобретение может описывать положения или видеоблоки как имеющие различные пространственные соотношения с CU или PU. Такое описание можно интерпретировать в том смысле, что положения или видеоблоки находятся в различных пространственных соотношениях с видеоблоками, связанными с CU или PU. Кроме того, это изобретение может относиться к PU, которую видеокодировщик в данный момент кодирует как текущую PU. Это изобретение может относиться к CU, которую видеокодировщик в данный момент кодирует как текущую CU. Это изобретение может относиться к изображению, которое видеокодировщик в данный момент кодирует как текущее изображение.
[0045] Прилагаемые чертежи иллюстрируют примеры. Элементы, указанные ссылочными позициями в прилагаемых чертежах, соответствуют элементам, указанным аналогичными ссылочными позициями в нижеследующем описании. В этом изобретении, элементы, названия которых начинаются с порядковых числительных (например, “первый”, “второй”, “третий” и т.д.) не обязательно подразумевают, что элементы имеют конкретный порядок. Напротив, такие порядковые числительные используются лишь для обозначения разных элементов одного и того же или аналогичного типа.
[0046] На фиг. 1 показана блок-схема, иллюстрирующая пример видеокодировочной системы 10, которая может использовать методы этого изобретения. Используемый здесь термин “видеокодировщик” относится, в целом, к видеокодерам и видеодекодерам. В этом изобретении, термины “видеокодировка” или “кодировка” может относиться, в целом, к кодированию видеосигнала и декодированию видеосигнала.
[0047] Как показано на фиг. 1, видеокодировочная система 10 включает в себя устройство-источник 12 и устройство 14 назначения. Устройство-источник 12 генерирует кодированные видеоданные. Соответственно, устройство-источник 12 может именоваться устройством кодирования видеосигнала. Устройство 14 назначения может декодировать кодированные видеоданные, генерируемые устройством-источником 12. Соответственно, устройство 14 назначения может именоваться устройством декодирования видеосигнала. Устройство-источник 12 и устройство 14 назначения могут служить примерами видеокодировочных устройств.
[0048] Устройство-источник 12 и устройство 14 назначения может содержать разнообразные устройства, включая настольные компьютеры, мобильные вычислительные устройства, компьютеры типа ноутбук (например, портативные), планшетные компьютеры, телевизионные приставки, телефонные трубки, например так называемые “смартфоны”, телевизоры, камеры, устройства отображения, цифровые медиапроигрыватели, видеоигровые консоли, бортовые автомобильные компьютеры и т.п. В некоторых примерах, устройство-источник 12 и устройство 14 назначения могут быть оборудованы для беспроводной связи.
[0049] Устройство 14 назначения может принимать кодированные видеоданные от устройства-источника 12 через канал 16. Канал 16 может содержать тип носителя или устройство, способное переносить кодированные видеоданные от устройства-источника 12 на устройство 14 назначения. В одном примере, канал 16 может содержать среду связи, которая позволяет устройству-источнику 12 передавать кодированные видеоданные непосредственно на устройство 14 назначения в реальном времени. В этом примере, устройство-источник 12 может модулировать кодированные видеоданные согласно стандарту связи, например протоколу беспроводной связи, и может передавать модулированные видеоданные на устройство 14 назначения. Среда связи может содержать среду беспроводной или проводной связи, например радиочастотный (РЧ) спектр или одну или более физических линий передачи. Среда связи может составлять часть сети с коммутацией пакетов, например локальной сети, широкомасштабной сети или глобальной сети, например интернета. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или другое оборудование, которое облегчает передачу от устройства-источника 12 на устройство 14 назначения.
[0050] В другом примере, канал 16 может соответствовать носителю данных, где хранятся кодированные видеоданные, генерируемые устройством-источником 12. В этом примере, устройство 14 назначения может обращаться к носителю данных посредством доступа к диску или доступа к карте. Носитель данных может включать в себя различные локально доступные носители данных, например диски Blu-ray, DVD, CD-ROM, флэш-память или другие пригодные цифровые носители данных для хранения кодированных видеоданных. В дополнительном примере, канал 16 может включать в себя файловый сервер или другое промежуточное запоминающее устройство, где хранятся кодированный видеосигнал, генерируемый устройством-источником 12. В этом примере, устройство 14 назначения может обращаться к кодированным видеоданным, хранящимся на файловом сервере или другом промежуточном запоминающем устройстве, посредством потоковой передачи или загрузки. Файловый сервер может быть типом сервера, способным хранить кодированные видеоданные и передавать кодированные видеоданные на устройство 14 назначения. Примеры файловых серверов включают в себя веб-серверы (например, для веб-сайта), серверы протокола передачи файлов (FTP), устройства сетевого хранения (NAS), и локальные дисководы. Устройство 14 назначения может обращаться к кодированным видеоданным через стандартное соединение передачи данных, в том числе, интернет-соединение. Примерные типы соединений передачи данных могут включать в себя беспроводные каналы (например, соединения Wi-Fi), проводные соединения (например, DSL, кабельный модем и т.д.), или их комбинации, которые пригодны для осуществления доступа к кодированным видеоданным, хранящимся на файловом сервере. Передача кодированных видеоданных с файлового сервера может быть потоковой передачей, передачей загрузки, или их комбинацией.
[0051] Методы этого изобретения не ограничиваются беспроводными приложениями или установками. Методы можно применять к кодированию видеосигнала для поддержки любого из различных мультимедийных применений, например эфирного телевизионного вещания, кабельных телевизионных передач, спутниковых телевизионных передач, передач потокового видео, например, через интернет, кодирования цифрового видеосигнала для сохранения на носителе данных, декодирования цифрового видеосигнала, хранящегося на носителе данных, или других применений. В некоторых примерах, видеокодировочная система 10 может быть выполнена с возможностью поддержки односторонней или двусторонней передачи видео для поддержки таких применений, как потоковая передача видеосигнала, воспроизведение видео, вещание видео и/или видеотелефонии.
[0052] В примере, показанном на фиг. 1, устройство-источник 12 включает в себя источник 18 видеосигнала, видеокодер 20 и выходной интерфейс 22. В ряде случаев, выходной интерфейс 22 может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве-источнике 12, источник 18 видеосигнала может включать в себя такой источник, как устройство захвата видео, например видеокамеру, архив видеозаписей, содержащий ранее захваченные видеоданные, интерфейс видеоподачи для приема видеоданных от поставщика видеоконтента, и/или систему компьютерной графики для генерации видеоданных, или комбинацию таких источников.
[0053] Видеокодер 20 может кодировать захваченные, предварительно захваченные или создаваемые на компьютере видеоданные. Кодированные видеоданные могут передаваться непосредственно на устройство 14 назначения через выходной интерфейс 22 устройства-источника 12. Кодированные видеоданные также могут сохраняться на носителе данных или файловом сервере для дальнейшего доступа со стороны устройства 14 назначения для декодирования и/или воспроизведения.
[0054] В примере, показанном на фиг. 1, устройство 14 назначения включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В ряде случаев, входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства 14 назначения принимает кодированные видеоданные по каналу 16. Кодированные видеоданные могут включать в себя различные элементы синтаксиса, генерируемые видеокодером 20, которые представляют видеоданные. Такие элементы синтаксиса могут быть включены с кодированными видеоданными, передаваемыми по среде связи, хранящимися на носителе данных или хранящимися на файловом сервере.
[0055] Устройство 32 отображения может быть объединено с устройством 14 назначения или быть отдельным от него. В некоторых примерах, устройство 14 назначения может включать в себя встроенное устройство отображения и также может быть выполнено с возможностью сопряжения с внешним устройством отображения. В других примерах, устройство 14 назначения может быть устройством отображения. В целом, устройство 32 отображения отображает декодированные видеоданные пользователю. Устройство 32 отображения может содержать любое из различных устройств отображения, например жидкокристаллический дисплей (ЖКД), плазменный дисплей, органо-светодиодный (ОСИД) дисплей или другой тип устройства отображения.
Видеокодер 20 и видеодекодер 30 могут действовать согласно стандарту сжатия видеосигнала, например стандарту High Efficiency Video Coding (HEVC), в настоящее время находящемуся в разработке, и могут отвечать HEVC Test Model (HM). Недавний проект перспективного стандарта HEVC, именуемый “HEVC Working Draft 7” или “WD7”, описан в документе JCTVC-I1003_d54, Bross et al., “High efficiency video coding (HEVC) text specification draft 7,” Joint Collaborative Team on Video Coding (JCT-VC) ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 9th Meeting: Geneva, Switzerland, May, 2012, который, как и изданный 19 июля 1, 2012, можно загрузить с адреса: http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zip, содержание которого в полном объеме включено в данное описание посредством ссылки. Альтернативно, видеокодер 20 и видеодекодер 30 могут действовать согласно другим собственным или промышленным стандартам, например стандарту ITU-T H.264, альтернативно именуемому MPEG 4, Part 10, Advanced Video Coding (AVC), или расширениям таких стандартов. Однако методы этого изобретения не ограничиваются никаким конкретным стандартом или методом кодирования. Другие примеры стандартов и методов сжатия видеосигнала включают в себя MPEG-2, ITU-T H.263 и форматы сжатия, защищенные правом собственности или с открытым исходным кодом, например VP8 и родственные форматы.
[0056] Хотя это не показано в примере, представленном на фиг. 1, каждый из видеокодера 20 и видеодекодера 30 может быть объединен с аудиокодером и декодером и может включать в себя надлежащие блоки мультиплексирования/демультиплексирования, или другое оборудование и программное обеспечение, для обработки кодирования аудио и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах, блоки мультиплексирования/демультиплексирования могут отвечать протоколу мультиплексора ITU H.223 или другим протоколам, например протоколу пользовательских дейтаграмм (UDP).
[0057] Опять же, фиг. 1 является лишь примером, и методы этого изобретения можно применять к настройкам видеокодировки (например, кодированию видеосигнала или декодированию видеосигнала), которые не обязательно включают в себя какую-либо передачу данных между устройствами кодирования и декодирования. В других примерах, данные можно извлекать из локальной памяти, передавать по сети в потоковом режиме и т.п. Устройство кодирования может кодировать и сохранять данные в памяти, и/или устройство декодирования может извлекать данные из памяти и декодировать их. Во многих примерах, кодирование и декодирование осуществляется устройствами, которые не осуществляют связь друг с другом, но просто кодируют данные в память и/или извлекают данные из памяти и декодируют их.
[0058] Каждый из видеокодера 20 и видеодекодера 30 может быть реализован в виде любой из различных пригодных схем, например одного или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), дискретной логики, аппаратного обеспечения или любых их комбинаций. Когда методы реализуются частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения на пригодном, неизменяемом машиночитаемом носителе данных и может выполнять инструкции аппаратными средствами с использованием одного или более процессоров для осуществления методов этого изобретения. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, любой из которых может входить в состав комбинированного кодера/декодера (кодека) в соответствующем устройстве.
[0059] Согласно кратко упомянутому выше, видеокодер 20 кодирует видеоданные. Видеоданные могут содержать одно или более изображений. Каждое из изображений является неподвижным изображением, составляющим часть видео. В ряде случаев, изображение может именоваться “кадром” видео. Когда видеокодер 20 кодирует видеоданные, видеокодер 20 может генерировать битовый поток. Битовый поток может включать в себя последовательность битов, которые образуют кодированное представление видеоданных. Битовый поток может включать в себя кодированные изображения и ассоциированные данные. Кодированное изображение является кодированным представлением изображения.
[0060] Для генерации битового потока, видеокодер 20 может осуществлять операции кодирования на каждом изображении в видеоданных. Когда видеокодер 20 осуществляет операции кодирования на изображениях, видеокодер 20 может генерировать последовательность кодированных изображений и ассоциированных данных. Ассоциированные данные могут включать в себя наборы параметров последовательности, наборы параметров изображения, наборы параметров адаптации и другие синтаксические структуры. Набор параметров последовательности (SPS) может содержать параметры, применимые к нулю или более последовательностей изображений. Набор параметров изображения (PPS) может содержать параметры, применимые к нулю или более изображений. Набор параметров адаптации (APS) может содержать параметры, применимые к нулю или более изображений. Параметры в APS могут представлять собой параметры, которые изменяются с большей вероятностью, чем параметры в PPS.
[0061] Для генерации кодированного изображения, видеокодер 20 может разбивать изображение на видеоблоки равного размера. Видеоблок может представлять собой двухмерный массив выборок. Каждый из видеоблоков связан с блоком дерева. В ряде случаев, блок дерева может именоваться наибольшей единицей кодирования (LCU). Блоки дерева HEVC могут быть в широком смысле аналогичны макроблокам предыдущих стандартов, например H.264/AVC. Однако, блок дерева не обязан ограничиваться конкретным размером и может включать в себя одну или более единиц (CU) кодирования. Видеокодер 20 может использовать разбиение по принципу квадродерева для разбиения видеоблоков блоков дерева на видеоблоки, связанные с CU, отсюда название “блоки дерева”.
[0062] В некоторых примерах, видеокодер 20 может разбивать изображение на множество срезов. Каждый из срезов может включать в себя целое число CU. В ряде случаев, срез содержит целое число блоков дерева. В других случаях, граница среза может проходить в блоке дерева.
[0063] В ходе осуществления операции кодирования на изображении, видеокодер 20 может осуществлять операции кодирования на каждом срезе изображения. Когда видеокодер 20 осуществляет операцию кодирования на срезе, видеокодер 20 может генерировать кодированные данные, связанные со срезом. Кодированные данные, связанные со срезом, могут именоваться “кодированным срезом”.
[0064] Для генерации кодированного среза, видеокодер 20 может осуществлять операции кодирования на каждом блоке дерева в срезе. Когда видеокодер 20 осуществляет операцию кодирования на блоке дерева, видеокодер 20 может генерировать кодированный блок дерева. Кодированный блок дерева может содержать данные, представляющие кодированную версию блока дерева.
[0065] Когда видеокодер 20 генерирует кодированный срез, видеокодер 20 может осуществлять операции кодирования на блоках дерева (т.е. кодировать их) (которые в этом случае представляют наибольшие единицы кодирования) в срезе согласно растровому порядку сканирования. Другими словами, видеокодер 20 может кодировать блоки дерева среза по порядку слева направо по самой верхней строке блоков дерева в срезе, и затем слева направо по следующей вниз строке блоков дерева, и т.д., пока видеокодер 20 не закодирует каждый из блоков дерева в срезе.
[0066] В результате кодирования блоков дерева согласно растровому порядку сканирования, блоки дерева выше и левее данного блока дерева могут быть закодированы, но блоки дерева ниже и правее данного блока дерева еще не закодированы. Следовательно, видеокодер 20 может быть способен осуществлять доступ к информации, генерируемой при кодировании блоков дерева выше и левее данного блока дерева при кодировании данного блока дерева. Однако видеокодер 20 может быть неспособен осуществлять доступ к информации, генерируемой при кодировании блоков дерева ниже и правее данного блока дерева при кодировании данного блока дерева.
[0067] Для генерации кодированного блока дерева, видеокодер 20 можлет рекурсивно осуществлять разбиение по принципу квадродерева на видеоблоке блока дерева для разделения видеоблока на все меньшие видеоблоки. Каждый из меньших видеоблоков может быть связан с разными CU. Например, видеокодер 20 может разбивать видеоблок блока дерева на четыре подблока равного размера, разбивать один или более подблоков на четыре подподблока равного размера и т.д. CU с разбиением может представлять собой CU, видеоблок которой разбит на видеоблоки, связанные с другими CU. CU без разбиения может представлять собой CU, видеоблок которой не разбит на видеоблоки, связанные с другими CU.
[0068] Один или более элементов синтаксиса в битовом потоке может указывать, сколько раз максимум видеокодер 20 может разбивать видеоблок блока дерева. Видеоблок CU может иметь квадратную форму. Размер видеоблока CU (т.е. размер CU) может составлять от 8×8 пикселей до размера видеоблока блока дерева (т.е. размера блока дерева) максимум 64×64 пикселя или более.
[0069] Видеокодер 20 может осуществлять операции кодирования на каждой CU блока дерева (т.е. кодировать ее) согласно порядку зигзагообразного сканирования. Другими словами, видеокодер 20 может кодировать верхнюю левую CU, верхнюю правую CU, нижнюю левую CU и затем нижнюю правую CU, в указанном порядке. Когда видеокодер 20 осуществляет операцию кодирования на CU с разбиением, видеокодер 20 может кодировать CU, связанные с подблоками видеоблока CU с разбиением согласно порядку зигзагообразного сканирования. Другими словами, видеокодер 20 может кодировать CU, связанную с верхним левым подблоком, CU, связанную с верхним правым подблоком, CU, связанную с нижним левым подблоком, и затем CU, связанную с нижним правым подблоком, в указанном порядке.
[0070] В результате кодирования CU блока дерева согласно порядку зигзагообразного сканирования, CU, расположенные выше, выше и левее, выше и правее, левее и ниже и левее данной CU, может быть закодирована. CU, расположенные ниже или правее данной CU, еще не закодированы. Следовательно, видеокодер 20 может быть способен осуществлять доступ к информации, генерируемой путем кодирования некоторых CU, которые соседствуют с данной CU, при кодировании данной CU. Однако видеокодер 20 может быть неспособен осуществлять доступ к информации, генерируемой путем кодирования других CU, которые соседствуют с данной CU, при кодировании данной CU.
[0071] Когда видеокодер 20 кодирует CU без разбиения, видеокодер 20 может генерировать одну или более единиц (PU) прогнозирования для CU. Каждая из PU CU может быть связана с отдельным видеоблоком в видеоблоке CU. Видеокодер 20 может генерировать прогностический видеоблок для каждой PU CU. Прогностический видеоблок PU может представлять собой блок выборок. Видеокодер 20 может использовать внутреннее прогнозирование или внешнее прогнозирование для генерации прогностического видеоблока для PU.
[0072] Когда видеокодер 20 использует внутреннее прогнозирование для генерации прогностического видеоблока PU, видеокодер 20 может генерировать прогностический видеоблок PU на основании декодированных выборок изображения, связанных с PU. Если видеокодер 20 использует внутреннее прогнозирование для генерации прогностических видеоблоков PU CU, CU является внутренне прогнозируемой CU. Когда видеокодер 20 использует внешнее прогнозирование для генерации прогностического видеоблока PU, видеокодер 20 может генерировать прогностический видеоблок PU на основании декодированных выборок одного или более изображений, отличных от изображения, связанного с PU. Если видеокодер 20 использует внешнее прогнозирование для генерации прогностических видеоблоков PU CU, CU является внешне прогнозируемой CU.
[0073] Кроме того, когда видеокодер 20 использует внешнее прогнозирование для генерации прогностического видеоблока для PU, видеокодер 20 может генерировать информацию движения для PU. Информация движения для PU может указывать один или более опорных блоков PU. Каждый опорный блок PU может быть видеоблоком в опорном изображении. Опорное изображение может представлять собой изображение, отличное от изображения, связанного с PU. В ряде случаев, опорный блок PU также может именоваться “опорной выборкой” PU. Видеокодер 20 может генерировать прогностический видеоблок для PU на основании опорных блоков PU.
[0074] После того как видеокодер 20 генерирует прогностические видеоблоки для одной или более PU CU, видеокодер 20 может генерировать остаточные данные для CU на основании прогностических видеоблоков для PU CU. Остаточные данные для CU могут указывать разности между выборками в прогностических видеоблоках для PU CU и первоначальном видеоблоке CU.
[0075] Кроме того, в ходе осуществления операции кодирования на CU без разбиения, видеокодер 20 может осуществлять рекурсивное разбиение по принципу квадродерева на остаточных данных CU для разбиения остаточных данных CU на один или более блоков остаточных данных (т.е. остаточные видеоблоки), связанных с единицами (TU) преобразования CU. Каждая TU CU может быть связана с отдельным остаточным видеоблоком.
[0076] Видеокодировщик 20 может применять одно или более преобразований к остаточным видеоблокам, связанным с TU, для генерации блоков коэффициентов преобразования (т.е. блоки коэффициентов преобразования), связанных с TU. В принципе, блок коэффициентов преобразования может быть двухмерной (2D) матрицей коэффициентов преобразования.
[0077] После генерации блока коэффициентов преобразования, видеокодер 20 может осуществлять процесс квантования на блоке коэффициентов преобразования. Квантование, в общем случае, это процесс, в котором коэффициенты преобразования квантуются для возможного уменьшения объема данных, используемого для представления коэффициентов преобразования, обеспечивающего дополнительное сжатие. Процесс квантования может снижать битовую глубину, связанную с некоторыми или всеми коэффициентами преобразования. Например, n-битовый коэффициент преобразования можно округлить в сторону уменьшения до m-битового коэффициента преобразования в ходе квантования, где n больше m.
[0078] Видеокодер 20 может связывать каждую CU со значением параметра (QP) квантования. Значение QP, связанное с CU, может определять, как видеокодер 20 квантует блоки коэффициентов преобразования, связанные с CU. Видеокодер 20 может регулировать степень квантования, применяемую к блокам коэффициентов преобразования, связанным с CU, путем регулировки значения QP, связанного с CU.
[0079] После того как видеокодер 20 квантует блок коэффициентов преобразования, видеокодер 20 может генерировать наборы элементов синтаксиса, которые представляют коэффициенты преобразования в квантованном блоке коэффициентов преобразования. Видеокодер 20 может применять операции статистического кодирования, например операции контекстно-адаптивного двоичного арифметического кодирования (CABAC), к некоторым из этих элементов синтаксиса.
[0080] Битовый поток, генерируемый видеокодером 20, может включать в себя последовательность единиц уровня сетевых абстракций (NAL). Каждая из единиц NAL может быть синтаксической структурой, содержащей индикацию типа данных в единице NAL и байты, содержащие данные. Например, единица NAL может содержать данные, представляющие набор параметров последовательности, набор параметров изображения, кодированный срез, вспомогательную информацию улучшения (SEI), разделитель единиц доступа, данные заполнения, или другой тип данных. Данные в единице NAL могут включать в себя различные синтаксические структуры.
[0081] Видеодекодер 30 может принимать битовый поток, генерируемый видеокодером 20. Битовый поток может включать в себя кодированное представление видеоданных, закодированных видеокодером 20. Когда видеодекодер 30 принимает битовый поток, видеодекодер 30 может осуществлять операцию анализа на битовом потоке. Когда видеодекодер 30 осуществляет операцию анализа, видеодекодер 30 может извлекать элементы синтаксиса из битового потока. Видеодекодер 30 может реконструировать изображения видеоданных на основании элементов синтаксиса, извлеченных из битового потока. Процесс реконструкции видеоданных на основании элементов синтаксиса может быть, в общем случае, обратным процессу, осуществляемому видеокодером 20 для генерации элементов синтаксиса.
[0082] После того как видеодекодер 30 извлекает элементы синтаксиса, связанные с CU, видеодекодер 30 может генерировать прогностические видеоблоки для PU CU на основании элементов синтаксиса. Кроме того, видеодекодер 30 может обратно квантовать блоки коэффициентов преобразования, связанные с TU CU. Видеодекодер 30 может осуществлять обратные преобразования на блоках коэффициентов преобразования для реконструкции остаточных видеоблоков, связанных с TU CU. После генерации прогностических видеоблоков и реконструкции остаточных видеоблоков, видеодекодер 30 может реконструировать видеоблок CU на основании прогностических видеоблоков и остаточных видеоблоков. Таким образом, видеодекодер 30 может реконструировать видеоблоки CU на основании элементов синтаксиса в битовом потоке.
[0083] Согласно кратко описанному выше, видеокодер 20 может использовать внешнее прогнозирование для генерации прогностических видеоблоков и информации движения для PU CU. Во многих случаях, информация движения данной PU, с высокой степенью вероятности идентична или аналогична информации движения одной или более близлежащих PU (т.е. PU видеоблоки которых близки в пространстве или во времени к видеоблоку данной PU). Поскольку близлежащие PU часто имеют аналогичную информацию движения, видеокодер 20 может кодировать информацию движения данной PU со ссылкой на информацию движения близлежащей PU. Кодирование информации движения данной PU со ссылкой на информацию движения близлежащей PU может снижать количество битов, необходимое в битовом потоке для указания информации движения данной PU.
[0084] Видеокодер 20 может кодировать информацию движения данной PU со ссылкой на информацию движения близлежащей PU по-разному. Например, видеокодер 20 может указывать, что информация движения данной PU идентична информации движения близлежащей PU. В этом изобретении может использоваться выражение “режим слияния” для указания, что информация движения данной PU идентична информации движения близлежащей PU или может быть получена из информации движения близлежащих PU. В другом примере, видеокодер 20 может вычислять разность векторов движения (MVD) для данной PU. MVD указывает разность между вектором движения данной PU и вектором движения близлежащей PU. В этом примере, видеокодер 20 может включать MVD в информацию движения данной PU вместо вектора движения данной PU. Меньше битов может требоваться в битовом потоке для представления MVD, чем вектора движения данной PU. В этом изобретении может использоваться выражение режим “усовершенствованное прогнозирование вектора движения” (AMVP) для сигнализации информации движения данной PU таким образом.
[0085] Для сигнализации информации движения данной PU с использованием режима слияния или режим AMVP, видеокодер 20 может генерировать список кандидатов для данной PU. Список кандидатов может включать в себя один или более кандидатов. Каждый из кандидатов в списке кандидатов для данной PU может указывать информацию движения. Информация движения, указанная кандидатом, может включать в себя вектор движения, индекс опорного изображения и индикатор направления прогнозирования. Кандидаты в списке кандидатов могут включать в себя кандидаты, которые основаны на (например, указывают, получены из и т.д.) информации движения PU, отличной от данной PU, при условии, что другие PU не принадлежат CU, связанной с данной PU.
[0086] После генерации списка кандидатов для PU, видеокодер 20 может выбирать один из кандидатов из списка кандидатов для PU. Видеокодер 20 может выводить индекс кандидата для PU. Индекс кандидата может идентифицировать позицию в списке кандидатов для выбранного кандидата.
[0087] Кроме того, видеокодер 20 может генерировать прогностический видеоблок для PU на основании опорных блоков, указанных информацией движения PU. Информация движения PU может быть определимой на основании информации движения, указанной выбранным кандидатом в списке кандидатов для PU. Например, в режиме слияния, информация движения PU может быть идентична информации движения, указанной выбранным кандидатом. В режиме AMVP, информация движения PU может быть определимой на основании разности векторов движения для PU и информации движения, указанной выбранным кандидатом. Видеокодер 20 может обрабатывать прогностический видеоблок для PU, как описано выше.
[0088] Когда видеодекодер 30 принимает битовый поток, видеодекодер 30 может генерировать списки кандидатов для каждой из PU CU. Списки кандидатов, генерируемые для PU видеодекодером 30, могут быть идентичны спискам кандидатов, генерируемым для PU видеокодером 20. Синтаксис, анализируемый из битового потока, может указывать позиции выбранных кандидатов в списках кандидатов PU. После генерации списка кандидатов для PU, видеодекодер 30 может генерировать прогностический видеоблок для PU на основании одного или более опорных блоков, указанных информацией движения PU. Видеодекодер 30 может определять информацию движения PU на основании информации движения, указанной выбранным кандидатом в списке кандидатов для PU. Видеодекодер 30 может реконструировать видеоблок для CU на основании прогностических видеоблоков для PU и остаточных видеоблоков для CU.
[0089] Хотя кодирование информации движения первой PU со ссылкой на информацию движения второй PU может снижать количество битов, необходимое в битовом потоке для указания информации движения первой PU, это может препятствовать видеокодеру 20 в кодировании информации движения первой PU, пока видеокодер 20 не закодирует информацию движения второй PU. Следовательно, видеокодер 20 может быть неспособен параллельно кодировать информацию движения первой и второй PU. Способность параллельно кодировать информацию движения нескольких PU может увеличивать пропускную способность видеокодера 20.
[0090] Аналогично, кодирование информации движения первой PU со ссылкой на информацию движения второй PU может препятствовать видеодекодеру 30 в определении информации движения первой PU, пока видеодекодер 30 не определит информацию движения второй PU. Следовательно, видеодекодер 30 может быть неспособен параллельно генерировать прогностические блоки для первой и второй PU. Способность параллельно декодировать информацию движения нескольких PU может увеличивать пропускную способность видеодекодера 30.
[0091] В соответствии с методами этого изобретения, видеокодер 20 и видеодекодер 30 могут генерировать списки кандидатов для каждой PU CU таким образом, что каждый кандидат в списке кандидатов для PU который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой другой PU одной и той же CU. Поскольку ни один кандидат не генерируется с использованием информации движения любой другой PU одной и той же CU, видеокодер 20 может кодировать информацию движения нескольких PU CU параллельно. Поскольку ни один кандидат не генерируется с использованием информации движения любой другой PU одной и той же CU, видеодекодер 30 может декодировать информацию движения нескольких PU CU параллельно. Это может увеличивать скорость, с которой видеокодер 20 может кодировать видеоданные и видеодекодер 30 может декодировать видеоданные.
[0092] Таким образом, видеокодировщик (например, видеокодер 20 или видеодекодер 30) может генерировать, для каждой PU во множестве PU, принадлежащих текущей CU, список кандидатов для PU, так что каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой другой PU, принадлежащей текущей CU. Видеокодировщик может генерировать, для каждой PU, принадлежащей текущей CU, прогностический видеоблок для PU на основании опорного блока, указанного информацией движения PU, причем информация движения PU является определимой на основании информации движения, указанной выбранным кандидатом в списке кандидатов для PU.
[0093] На фиг. 2 показана блок-схема, иллюстрирующая пример видеокодера 20, который выполнен с возможностью реализации методов этого изобретения. Фиг. 2 обеспечена в целях объяснения и не должна рассматриваться в плане ограничения методов, в широком смысле представленных и описанных в этом изобретении. В целях объяснения, в этом изобретении видеокодер 20 описан в контексте кодирования HEVC. Однако методы этого изобретения можно применять к другим стандартам или способам кодирования.
[0094] В примере, показанном на фиг. 2, видеокодер 20 включает в себя множество функциональных компонентов. Функциональные компоненты видеокодера 20 включают в себя модуль 100 прогнозирования, модуль 102 генерации остатка, модуль 104 преобразования, модуль 106 квантования, модуль 108 обратного квантования, модуль 110 обратного преобразования, модуль 112 реконструкции, модуль 113 фильтрации, буфер 114 декодированных изображений и модуль 116 статистического кодирования. Модуль 100 прогнозирования включает в себя модуль 121 внешнего прогнозирования, модуль 122 оценивания движения, модуль 124 компенсации движения и модуль 126 внутреннего прогнозирования. В других примерах, видеокодер 20 может включать в себя больше, меньше или другие функциональные компоненты. Кроме того, модуль 122 оценивания движения и модуль 124 компенсации движения могут быть в значительной степени объединены, но представлены в примере, показанном на фиг. 2, отдельно в целях объяснения.
[0095] Видеокодер 20 может принимать видеоданные. Видеокодер 20 может принимать видеоданные из различных источников. Например, видеокодер 20 может принимать видеоданные из источника 18 видеосигнала (фиг. 1) или другого источника. Видеоданные могут представлять последовательность изображений. Для кодирования видеоданных, видеокодер 20 может осуществлять операцию кодирования на каждом из изображений. В ходе осуществления операции кодирования на изображении, видеокодер 20 может осуществлять операции кодирования на каждом срезе изображения. В ходе осуществления операции кодирования на срезе, видеокодер 20 может осуществлять операции кодирования на блоках дерева в срезе.
[0096] В ходе осуществления операции кодирования на блоке дерева, модуль 100 прогнозирования может осуществлять разбиение по принципу квадродерева на видеоблоке блока дерева для разделения видеоблока на все меньшие видеоблоки. Каждый из меньших видеоблоков может быть связан с разными CU. Например, модуль 100 прогнозирования может разбивать видеоблок блока дерева на четыре подблока равного размера, разбивать один или более подблоков на четыре подподблока равного размера и т.д.
[0097] Размеры видеоблоков, связанных с CU, могут составлять от 8×8 выборок до размера блока дерева максимум 64×64 выборок или более. В этом изобретении, “N×N” и “N на N” можно использовать взаимозаменяемо для обозначения размеров выборки видеоблока в отношении вертикального и горизонтального размеров, например, 16×16 выборок или 16 на 16 выборок. В целом, видеоблок 16×16 имеет шестнадцать выборок в вертикальном направлении (y=16) и шестнадцать выборок в горизонтальном направлении (x=16). Аналогично, блок N×N в общем случае имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, где N представляет неотрицательное целочисленное значение.
[0098] Кроме того, в ходе осуществления операции кодирования на блоке дерева, модуль 100 прогнозирования может генерировать иерархическую структуру данных квадродерева для блока дерева. Например, блок дерева может соответствовать корневому узлу структуры данных квадродерева. Если модуль 100 прогнозирования разбивает видеоблок блока дерева на четыре подблока, корневой узел имеет четыре дочерних узла в структуре данных квадродерева. Каждый из дочерних узлов соответствует CU, связанной с одним из подблоков. Если модуль 100 прогнозирования разбивает один из подблоков на четыре подподблока, узел, соответствующий CU, связанной с подблоком, может иметь четыре дочерних узла, каждый из которых соответствует CU, связанной с одним из подподблоков.
[0099] Каждый узел структуры данных квадродерева может содержать данные синтаксиса (например, элементы синтаксиса) для соответствующего блока дерева или CU. Например, узел в квадродереве может включать в себя флаг разбиения, который указывает, разбит ли видеоблок CU, соответствующей узлу (т.е. разделен) на четыре подблока. Элементы синтаксиса для CU можно задавать рекурсивно, и в зависимости от того, делится ли видеоблок CU на подблоки. CU, видеоблок которой не разбит, может соответствовать краевому узлу в структуре данных квадродерева. Кодированный блок дерева может включать в себя данные на основании структуры данных квадродерева для соответствующего блока дерева.
[0100] Видеокодер 20 может осуществлять операции кодирования на каждой CU без разбиения блока дерева. Когда видеокодер 20 осуществляет операцию кодирования на CU без разбиения, видеокодер 20 генерирует данные, представляющие кодированное представление CU без разбиения.
[0101] В ходе осуществления операции кодирования на 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 под прямыми углами.
[0102] Модуль 121 внешнего прогнозирования может осуществлять внешнее прогнозирование на каждой PU CU. Внешнее прогнозирование может обеспечивать временное сжатие. Для осуществления внешнего прогнозирования на PU, модуль 122 оценивания движения может генерировать информацию движения для PU. Модуль 124 компенсации движения может генерировать прогностический видеоблок для PU на основании информации движения и декодированных выборок изображений, отличных от изображения, связанного с CU (т.е. опорных изображений).
[0103] Срезы могут быть I-срезами, P-срезами или B-срезами. Модуль 122 оценивания движения и модуль 124 компенсации движения могут осуществлять разные операции для PU CU в зависимости от того, находится ли PU в I-срезе, P-срезе или B-срезе. В I-срезе, все PU внутренне прогнозируются. Поэтому, если PU находится в I-срезе, модуль 122 оценивания движения и модуль 124 компенсации движения не осуществляют внешнее прогнозирование на PU.
[0104] Если PU находится в P-срезе, изображение, содержащее PU, связано со списком опорных изображений, именуемым “список 0”. Каждое из опорных изображений в списке 0 содержит выборки, которые можно использовать для внешнего прогнозирования других изображений. Когда модуль 122 оценивания движения осуществляет операцию оценивания движения в отношении PU в P-срезе, модуль 122 оценивания движения может искать опорные изображения в списке 0 на предмет опорного блока для PU. Опорный блок PU может быть набором выборок, например блоком выборок, который наиболее точно соответствует выборкам в видеоблоке PU. Модуль 122 оценивания движения может использовать различные метрики для определения, насколько точно набор выборок в опорном изображении соответствует выборкам в видеоблоке PU. Например, модуль 122 оценивания движения может определять, насколько точно набор выборок в опорном изображении соответствует выборкам в видеоблоке PU, по сумме абсолютных значений разности (SAD), сумме квадратов разностей (SSD) или другим разностным метрикам.
[0105] После идентификации опорный блок PU в P-срезе, модуль 122 оценивания движения может генерировать опорный индекс, который указывает опорное изображение в списке 0, содержащем опорный блок, и вектор движения, который указывает пространственное смещение между PU и опорным блоком. В различных примерах, модуль 122 оценивания движения может генерировать векторы движения с изменяющейся степенью точности. Например, модуль 122 оценивания движения может генерировать векторы движения с точностью в четверть выборки, точностью в одну восьмую выборки или точностью другой дробной части выборки. В случае точности дробной части выборки, значения опорного блока можно интерполировать от значений выборки в целочисленной позиции в опорном изображении. Модуль 122 оценивания движения может выводить опорный индекс и вектор движения в качестве информации движения PU. Модуль 124 компенсации движения может генерировать прогностический видеоблок PU на основании опорного блока, идентифицированного информацией движения PU.
[0106] Если PU находится в B-срезе, изображение, содержащее PU, может быть связано с двумя списками опорных изображений, именуемыми “список 0” и “список 1”. В некоторых примерах, изображение, содержащее B-срез, может быть связано с комбинацией списков, которая является комбинацией списка 0 и списка 1.
[0107] Кроме того, если PU находится в B-срезе, модуль 122 оценивания движения может осуществлять однонаправленное прогнозирование или двунаправленное прогнозирование для PU. Когда модуль 122 оценивания движения осуществляет однонаправленное прогнозирование для PU, модуль 122 оценивания движения может искать опорные изображения списка 0 или списка 1 на предмет опорного блока для PU. Затем модуль 122 оценивания движения может генерировать опорный индекс, который указывает опорное изображение в списке 0 или списке 1, которое содержит опорный блок, и вектор движения, который указывает пространственное смещение между PU и опорным блоком. Модуль 122 оценивания движения может выводить опорный индекс, индикатор направления прогнозирования и вектор движения в качестве информации движения PU. Индикатор направления прогнозирования может указывать, указывает ли опорный индекс опорное изображение в списке 0 или списке 1. Модуль 124 компенсации движения может генерировать прогностический видеоблок PU на основании опорного блока, указанного информацией движения PU.
[0108] Когда модуль 122 оценивания движения осуществляет двунаправленное прогнозирование для PU, модуль 122 оценивания движения может искать опорные изображения в списке 0 на предмет опорного блока для PU и также может искать опорные изображения в списке 1 на предмет другого опорного блока для PU. Затем модуль 122 оценивания движения может генерировать опорные индексы, которые указывают опорные изображения в списке 0 и списке 1, содержащие опорные блоки, и векторы движения которые указывают пространственные смещения между опорными блоками и PU. Модуль 122 оценивания движения может выводить опорные индексы и векторы движения PU в качестве информации движения PU. Модуль 124 компенсации движения может генерировать прогностический видеоблок PU на основании опорных блоков указанный информацией движения PU.
[0109] В ряде случаев, модуль 122 оценивания движения не выводит полный набор информации движения для PU на модуль 116 статистического кодирования. Вместо этого, модуль 122 оценивания движения может сигнализировать информацию движения PU со ссылкой на информацию движения другой PU. Например, модуль 122 оценивания движения может определять, что информация движения PU в достаточной степени аналогична информации движения соседней PU. В этом примере, модуль 122 оценивания движения может указывать, в синтаксической структуре, связанной с PU, значение, которое указывает видеодекодеру 30, что PU имеет такую же информацию движения, как соседние PU, или имеет информацию движения, которая может быть получена из соседних PU. В другом примере, модуль 122 оценивания движения может идентифицировать, в синтаксической структуре, связанной с PU, кандидат движения, связанный с соседними PU, и разность векторов движения (MVD). Разность векторов движения указывает разность между вектором движения PU и вектором движения указанного кандидата движения. Видеодекодер 30 может использовать вектор движения указанного кандидата движения и разность векторов движения для определения вектора движения PU. Обращаясь к информации движения кандидата движения, связанного с первой PU, при сигнализации информации движения второй PU, видеокодер 20 может быть способен сигнализировать информацию движения второй PU с использованием меньшего количества битов.
[0110] Как описано ниже со ссылкой на фиг. 4-6 и 8-15, модуль 121 внешнего прогнозирования может генерировать список кандидатов для каждой PU CU. Модуль 121 внешнего прогнозирования может генерировать каждый список кандидатов таким образом, что каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой из PU, принадлежащих CU. Следовательно, модуль 121 внешнего прогнозирования может быть способен генерировать списки кандидатов параллельно для двух или более PU CU. Поскольку модуль 121 внешнего прогнозирования может быть способен генерировать списки кандидатов параллельно для двух или более PU CU, модуль 121 внешнего прогнозирования может быть способен генерировать прогностические видеоблоки параллельно для двух или более PU CU. Кроме того, генерируя таким образом списки кандидатов для каждой PU CU, видеокодер 20 может предоставлять возможность видеодекодеру (например, видеодекодеру 30) генерировать списки кандидатов параллельно для двух или более PU CU и генерировать прогностические видеоблоки параллельно для двух или более PU CU.
[0111] В ходе осуществления операции кодирования на CU, модуль 126 внутреннего прогнозирования может осуществлять внутреннее прогнозирование на PU CU. Внутреннее прогнозирование может обеспечивать пространственное сжатие. Когда модуль 126 внутреннего прогнозирования осуществляет внутреннее прогнозирование на PU, модуль 126 внутреннего прогнозирования может генерировать данные прогнозирования для PU на основании декодированных выборок других PU в одном и том же изображении. Данные прогнозирования для PU могут включать в себя прогностический видеоблок и различные элементы синтаксиса. Модуль 126 внутреннего прогнозирования может осуществлять внутреннее прогнозирование на PU в I-срезах, P-срезах и B-срезах.
[0112] Для осуществления внутреннего прогнозирования на PU, модуль 126 внутреннего прогнозирования может использовать несколько режимов внутреннего прогнозирования для генерации нескольких наборов данных прогнозирования для PU. Когда модуль 126 внутреннего прогнозирования использует режим внутреннего прогнозирования для генерации набора данных прогнозирования для PU, модуль 126 внутреннего прогнозирования может продлевать выборки из видеоблоков соседних PU по видеоблоку PU в направлении и/или градиент, связанный с режимом внутреннего прогнозирования. Соседние PU могут располагаться выше, выше и правее, выше и левее или левее PU, предполагая порядок кодирования слева направо, сверху вниз для PU, CU и блоков дерева. Модуль 126 внутреннего прогнозирования может использовать различные количества режимов внутреннего прогнозирования, например 33 направленных режима внутреннего прогнозирования. В некоторых примерах, количество режимов внутреннего прогнозирования может зависеть от размера PU.
[0113] Модуль 100 прогнозирования может выбирать данные прогнозирования для PU из данных прогнозирования, генерируемых модулем 124 компенсации движения для PU, или данных прогнозирования, генерируемых модулем 126 внутреннего прогнозирования для PU. В некоторых примерах, модуль 100 прогнозирования выбирает данные прогнозирования для PU на основании метрик скорости/искажения наборов данных прогнозирования.
[0114] Если модуль 100 прогнозирования выбирает данные прогнозирования, генерируемые модулем 126 внутреннего прогнозирования, модуль 100 прогнозирования может сигнализировать режим внутреннего прогнозирования, который использовался для генерации данных прогнозирования для PU, т.е. выбранный режим внутреннего прогнозирования. Модуль 100 прогнозирования может по-разному сигнализировать выбранный внутреннего прогнозирования. Например, вероятно, выбранный режим внутреннего прогнозирования идентичен режиму внутреннего прогнозирования соседней PU. Другими словами, режим внутреннего прогнозирования соседней PU может быть наиболее вероятным режимом для текущей PU. Таким образом, модуль 100 прогнозирования может генерировать элемент синтаксиса для указания того, что выбранный режим внутреннего прогнозирования идентичен режиму внутреннего прогнозирования соседней PU.
[0115] После того как модуль 100 прогнозирования выбирает данные прогнозирования для PU CU, модуль 102 генерации остатка может генерировать остаточные данные для CU путем вычитания прогностических видеоблоков PU CU из видеоблока CU. Остаточные данные CU могут включать в себя 2D остаточные видеоблоки, которые соответствуют разным компонентам выборки выборок в видеоблоке CU. Например, остаточные данные могут включать в себя остаточный видеоблок, который соответствует разностям между яркостными составляющими выборок в прогностических видеоблоках PU и CU и яркостными составляющими выборок в первоначальном видеоблоке CU. Кроме того, остаточные данные CU могут включать в себя остаточные видеоблоки которые соответствуют разностям между цветностными составляющими выборок в прогностических видеоблоках PU и CU и цветностными составляющими выборок в первоначальном видеоблоке CU.
[0116] Модуль 100 прогнозирования может осуществлять разбиение по принципу квадродерева для разбиения остаточных видеоблоков CU на подблоки. Каждый отдельный остаточный видеоблок может быть связан с отдельной TU CU. Размеры и позиции остаточных видеоблоков, связанных с TU CU, могут основываться или не основываться на размерах и позициях видеоблоков, связанных с PU CU. Структура квадродерева, известная как “остаточное квадродерево” (RQT) может включать в себя узлы, связанные с каждым из остаточных видеоблоков. TU CU могут соответствовать краевым узлам RQT.
[0117] Модуль 104 преобразования может генерировать один или более блоков коэффициентов преобразования для каждой TU CU, применяя одно или более преобразований к остаточному видеоблоку, связанному с TU. Каждый из блоков коэффициентов преобразования может быть 2D матрицей коэффициентов преобразования. Модуль 104 преобразования может применять различные преобразования к остаточному видеоблоку, связанному с TU. Например, модуль 104 преобразования может применять к остаточному видеоблоку, связанному с TU дискретное косинусное преобразование (DCT), направленное преобразование или принципиально аналогичное преобразование.
[0118] После того как модуль 104 преобразования генерирует блок коэффициентов преобразования, связанный с TU, модуль 106 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования. Модуль 106 квантования может квантовать блок коэффициентов преобразования, связанный с TU CU, на основании значения QP, связанного с CU.
[0119] Видеокодер 20 может по-разному связывать значение QP с CU. Например, видеокодер 20 может осуществлять анализ скорости-искажения на блоке дерева, связанном с CU. При анализе скорости-искажения, видеокодер 20 может генерировать несколько кодированных представлений блока дерева, несколько раз осуществляя операцию кодирования на блоке дерева. Видеокодер 20 может связывать разные значения QP с CU, когда видеокодер 20 генерирует разные кодированные представления блока дерева. Видеокодер 20 может сигнализировать, что данное значение QP связано с CU, когда данное значение QP связано с CU в кодированном представлении блока дерева, которое имеет наименьшую битовую скорость и метрику искажения.
[0120] Модуль 108 обратного квантования и модуль 110 обратного преобразования могут применять обратное квантование и обратные преобразования к блоку коэффициентов преобразования, соответственно, для реконструкции остаточного видеоблока из блока коэффициентов преобразования. Модуль 112 реконструкции может добавлять реконструированный остаточный видеоблок к соответствующим выборкам из одного или более прогностических видеоблоков, генерируемых модулем 100 прогнозирования, для создания реконструированного видеоблока, связанного с TU. Реконструируя видеоблоки для каждой TU CU таким образом, видеокодер 20 может реконструировать видеоблок CU.
[0121] После того как модуль 112 реконструкции реконструирует видеоблок CU, модуль 113 фильтрации может осуществлять операцию удаления блочности для снижения артефактов блочности в видеоблоке, связанном с CU. После осуществления одной или более операций удаления блочности, модуль 113 фильтрации может сохранять реконструированный видеоблок CU в буфере 114 декодированных изображений. Модуль 122 оценивания движения и модуль 124 компенсации движения могут использовать опорное изображение, которое содержит реконструированный видеоблок, для осуществления внешнего прогнозирования на PU последующих изображений. Кроме того, модуль 126 внутреннего прогнозирования может использовать реконструированные видеоблоки в буфере 114 декодированных изображений для осуществления внутреннего прогнозирования на других PU в том же изображении, что и CU.
[0122] Модуль 116 статистического кодирования может принимать данные от других функциональных компонентов видеокодера 20. Например, модуль 116 статистического кодирования может принимать блоки коэффициентов преобразования от модуля 106 квантования и может принимать элементы синтаксиса от модуля 100 прогнозирования. Когда модуль 116 статистического кодирования принимает данные, модуль 116 статистического кодирования может осуществлять одну или более операций статистического кодирования для генерации статистически кодированных данных. Например, видеокодер 20 может осуществлять операцию контекстно-адаптивного кодирования с переменной длиной слова (CAVLC), операцию CABAC, операцию кодирования с переходом между переменными длинами слова (V2V), операцию контекстно-адаптивного двоичного арифметического кодирования на основе синтаксиса (SBAC), операцию статистического кодирования с разбиением интервала вероятности (PIPE), или другой тип операции статистического кодирования на данных. Модуль 116 статистического кодирования может выводить битовый поток, который включает в себя статистически кодированные данные.
[0123] В ходе осуществления операции статистического кодирования на данных, модуль 116 статистического кодирования может выбирать контекстную модель. Если модуль 116 статистического кодирования осуществляет операцию CABAC, контекстная модель может указывать оценки вероятностей конкретных бинов, имеющих конкретные значения. В контексте CABAC, термин “бин” используется для обозначения бита бинаризованной версии элемента синтаксиса.
[0124] На фиг. 3 показана блок-схема, иллюстрирующая пример видеодекодера 30, который выполнен с возможностью реализации методов этого изобретения. Фиг. 3 обеспечен в целях объяснения, но не ограничения методов, в широком смысле представленных и описанных в этом изобретении. В целях объяснения, в этом изобретении описаны видеодекодер 30 в контексте кодирования HEVC. Однако методы этого изобретения можно применять к другим стандартам или способам кодирования.
[0125] В примере, показанном на фиг. 3, видеодекодер 30 включает в себя множество функциональных компонентов. Функциональные компоненты видеодекодера 30 включают в себя модуль 150 статистического декодирования, модуль 152 прогнозирования, модуль 154 обратного квантования, модуль 156 обратного преобразования, модуль 158 реконструкции, модуль 159 фильтрации и буфер 160 декодированных изображений. Модуль 152 прогнозирования включает в себя модуль 162 компенсации движения и модуль 164 внутреннего прогнозирования. В некоторых примерах, видеодекодер 30 может осуществлять проход декодирования, в общем случае, обратный проходу кодирования, описанному в отношении видеокодера 20, показанного на фиг. 2. В других примерах, видеодекодер 30 может включать в себя больше, меньше или другие функциональные компоненты.
[0126] Видеодекодер 30 может принимать битовый поток, который содержит кодированные видеоданные. Битовый поток может включать в себя множество элементов синтаксиса. Когда видеодекодер 30 принимает битовый поток, модуль 150 статистического декодирования может осуществлять операцию анализа на битовом потоке. В результате осуществления операции анализа на битовом потоке, модуль 150 статистического декодирования может извлекать элементы синтаксиса из битового потока. В ходе осуществления операции анализа, модуль 150 статистического декодирования может статистически декодировать статистически кодированные элементы синтаксиса в битовом потоке. Модуль 152 прогнозирования, модуль 154 обратного квантования, модуль 156 обратного преобразования, модуль 158 реконструкции, и модуль 159 фильтрации могут осуществлять операцию реконструкции, которая генерирует декодированные видеоданные на основании элементов синтаксиса, извлеченных из битового потока.
[0127] Как рассмотрено выше, битовый поток может содержать последовательность единиц NAL. Единицы NAL битового потока могут включать в себя единицы NAL набора параметров последовательности, единицы NAL набора параметров изображения, единицы NAL SEI, и т.д. В ходе осуществления операции анализа на битовом потоке, модуль 150 статистического декодирования может осуществлять операции анализа, которые извлекают и статистически декодируют наборы параметров последовательности из единиц NAL набора параметров последовательности, наборы параметров изображения из единиц NAL набора параметров изображения, данные SEI из единиц NAL SEI и т.д.
[0128] Кроме того, единицы NAL битового потока могут включать в себя единицы NAL кодированного среза. В ходе осуществления операции анализа на битовом потоке, модуль 150 статистического декодирования может осуществлять операции анализа, которые извлекают и статистически декодируют кодированные срезы из единиц NAL кодированного среза. Каждый из кодированных срезов может включать в себя заголовок среза и данные среза. Заголовок среза может содержать элементы синтаксиса, относящиеся к срезу. Элементы синтаксиса в заголовке среза могут включать в себя элемент синтаксиса, который идентифицирует набор параметров изображения, связанный с изображением, которое содержит срез. Модуль 150 статистического декодирования может осуществлять операции статистического декодирования, например операции декодирования CABAC, на элементах синтаксиса в заголовке кодированного среза для восстановления заголовка среза.
[0129] При извлечении данных среза из единиц NAL кодированного среза, модуль 150 статистического декодирования может осуществлять операции анализа, которые извлекают элементы синтаксиса из кодированных CU в данных среза. Извлеченные элементы синтаксиса могут включать в себя элементы синтаксиса, связанные с блоками коэффициентов преобразования. Затем модуль 150 статистического декодирования может осуществлять операции декодирования CABAC на некоторых из элементов синтаксиса.
[0130] После того как модуль 150 статистического декодирования осуществляет операцию анализа на CU без разбиения, видеодекодер 30 может осуществлять операцию реконструкции на CU без разбиения. Для осуществления операции реконструкции на CU без разбиения, видеодекодер 30 может осуществлять операцию реконструкции на каждой TU CU. Осуществляя операцию реконструкции для каждой TU CU, видеодекодер 30 может реконструировать остаточный видеоблок, связанный с CU.
[0131] В ходе осуществления операции реконструкции на TU, модуль 154 обратного квантования может обратно квантовать, т.е. деквантовать, блок коэффициентов преобразования, связанный с TU. Модуль 154 обратного квантования может обратно квантовать блок коэффициентов преобразования аналогично процессам обратного квантования, предложенным для HEVC или заданным стандартом декодирования H.264. Модуль 154 обратного квантования может использовать параметр квантования QP, вычисленный видеокодером 20 для CU блока коэффициентов преобразования, для определения степени квантования и, аналогично, степени обратного квантования, применяемого модулем 154 обратного квантования.
[0132] После того как модуль 154 обратного квантования осуществляет обратное квантование блока коэффициентов преобразования, модуль 156 обратного преобразования может генерировать остаточный видеоблок для TU, связанный с блоком коэффициентов преобразования. Модуль 156 обратного преобразования может применять обратное преобразование к блоку коэффициентов преобразования для генерации остаточного видеоблока для TU. Например, модуль 156 обратного преобразования может применять к блоку коэффициентов преобразования обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лева (KLT), обратное поворотное преобразование, обратное направленное преобразование или другое обратное преобразование.
[0133] В некоторых примерах, модуль 156 обратного преобразования может определять обратное преобразование для применения к блоку коэффициентов преобразования на основании сигнализации от видеокодера 20. В таких примерах, модуль 156 обратного преобразования может определять обратное преобразование на основании сигнализируемого преобразования на корневом узле квадродерева для блока дерева, связанного с блоком коэффициентов преобразования. В других примерах, модуль 156 обратного преобразования может выводить обратное преобразование из одной или более характеристик кодирования, например размера блока, режима кодирования и т.п. В некоторых примерах, модуль 156 обратного преобразования может применять каскадное обратное преобразование.
[0134] Если PU CU была закодирована с использованием внешнего прогнозирования, модуль 162 компенсации движения может генерировать список кандидатов для PU. В соответствии с методами этого изобретения, модуль 162 компенсации движения может генерировать список кандидатов для PU, так что каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения других PU, которые принадлежат одной и той же CU. Битовый поток может включать в себя данные, которые идентифицируют позицию выбранного кандидата в списке кандидатов PU. После генерации списка кандидатов для PU, модуль 162 компенсации движения может генерировать прогностический видеоблок для PU на основании одного или более опорных блоков, указанных информацией движения PU. Опорные блоки PU могут находиться в других временных изображениях, чем PU. Модуль 162 компенсации движения может определять информацию движения PU на основании информации движения, указанной выбранным кандидатом в списке кандидатов PU.
[0135] В некоторых примерах, модуль 162 компенсации движения может уточнять прогностический видеоблок PU путем осуществления интерполяции на основании интерполяционных фильтров. Идентификаторы для интерполяционных фильтров, подлежащих использованию для компенсации движения с точностью до подвыборки, могут быть включены в элементы синтаксиса. Модуль 162 компенсации движения может использовать те же интерполяционные фильтры, которые используются видеокодером 20 в ходе генерации прогностического видеоблока PU, для вычисления интерполированных значений для субцелых выборок опорного блока. Модуль 162 компенсации движения может определять интерполяционные фильтры, используемые видеокодером 20, согласно принятой синтаксической информации и использовать интерполяционные фильтры для создания прогностического видеоблока.
[0136] Если PU кодируется с использованием внутреннего прогнозирования, модуль 164 внутреннего прогнозирования может осуществлять внутреннее прогнозирование для генерации прогностического видеоблока для PU. Например, модуль 164 внутреннего прогнозирования может определять режим внутреннего прогнозирования для PU на основании элементов синтаксиса в битовом потоке. Битовый поток может включать в себя элементы синтаксиса, которые модуль 164 внутреннего прогнозирования может использовать для определения режима внутреннего прогнозирования PU.
[0137] В ряде случаев, элементы синтаксиса могут указывать, что модуль 164 внутреннего прогнозирования должен использовать режим внутреннего прогнозирования другой PU для определения режима внутреннего прогнозирования текущей PU. Например, если существует вероятность того, что режим внутреннего прогнозирования текущей PU идентичен режиму внутреннего прогнозирования соседней PU. Другими словами, режим внутреннего прогнозирования соседней PU может быть наиболее вероятным режимом для текущей PU. Поэтому, в этом примере, битовый поток может включать в себя малый элемент синтаксиса, который указывает, что режим внутреннего прогнозирования PU идентичен режиму внутреннего прогнозирования соседней PU. Затем модуль 164 внутреннего прогнозирования может использовать режим внутреннего прогнозирования для генерации данных прогнозирования (например, прогностических выборок) для PU на основании видеоблоков пространственно соседствующих PU.
[0138] Модуль 158 реконструкции может использовать остаточные видеоблоки, связанные с TU CU, и прогностические видеоблоки PU CU, т.е. либо данные внутреннего прогнозирования, либо данные внешнего прогнозирования, в зависимости от того, что применимо, для реконструкции видеоблока CU. Таким образом, видеодекодер 30 может генерировать прогностический видеоблок и остаточный видеоблок на основании элементов синтаксиса в битовом потоке и может генерировать видеоблок на основании прогностического видеоблока и остаточного видеоблока.
[0139] После того как модуль 158 реконструкции реконструирует видеоблок CU, модуль 159 фильтрации может осуществлять операцию удаления блочности для снижения артефактов блочности, связанных с CU. После того как модуль 159 фильтрации осуществляет операцию удаления блочности для снижения артефактов блочности, связанных с CU, видеодекодер 30 может сохранять видеоблок CU в буфере 160 декодированных изображений. Буфер 160 декодированных изображений может обеспечивать опорные изображения для последующих компенсации движения, внутреннего прогнозирования и представления на устройстве отображения, например устройстве 32 отображения, показанном на фиг. 1. Например, видеодекодер 30 может осуществлять, на основании видеоблоков в буфере 160 декодированных изображений, операции внутреннего прогнозирования или внешнего прогнозирования на PU других CU.
[0140] На фиг. 4 показана принципиальная схема, которая демонстрирует примерную конфигурацию модуля 121 внешнего прогнозирования. Модуль 121 внешнего прогнозирования может разбивать текущую CU на PU согласно нескольким режимам разбиения. Например, модуль 121 внешнего прогнозирования может разбивать текущую CU на PU согласно режимам разбиения 2N×2N, 2N×N, N×2N и N×N.
[0141] Модуль 121 внешнего прогнозирования может осуществлять целочисленную оценку движения (IME) и затем осуществлять дробную оценку движения (FME) на каждой из PU. Когда модуль 121 внешнего прогнозирования осуществляет IME на PU, модуль 121 внешнего прогнозирования может искать одно или более опорных изображений на предмет опорного блока для PU. Найдя опорный блок для PU, модуль 121 внешнего прогнозирования может генерировать вектор движения, который указывает, с целочисленной точностью, пространственное смещение между PU и опорным блоком для PU. Когда модуль 121 внешнего прогнозирования осуществляет FME на PU, модуль 121 внешнего прогнозирования может уточнять вектор движения, генерируемый путем осуществления IME на PU. Вектор движения, генерируемый путем осуществления FME на PU, может иметь субцелую точность (например, точность в ½ пикселя, точность в ¼ пикселя и т.д.). После генерации вектора движения для PU, модуль 121 внешнего прогнозирования может использовать вектор движения для PU для генерации прогностического видеоблока для PU.
[0142] В некоторых примерах, где модуль 121 внешнего прогнозирования сигнализирует информацию движения PU с использованием режима AMVP, модуль 121 внешнего прогнозирования может генерировать список кандидатов для PU. Список кандидатов может включать в себя один или более кандидатов, которые генерируются на основании информации движения других PU. Например, список кандидатов может включать в себя первоначальные кандидаты, которые указывают информацию движения других PU и/или кандидаты, которые указывают информацию движения, полученную из информации движения одной или более других PU. После генерации списка кандидатов для PU, модуль 121 внешнего прогнозирования может выбирать кандидат из списка кандидатов и генерировать разность векторов движения (MVD) для PU. MVD для PU может указывать разность между вектором движения, указанным выбранным кандидатом, и вектором движения, генерируемым для PU с использованием IME и FME. В таких примерах, модуль 121 внешнего прогнозирования может выводить индекс кандидата, который идентифицирует положение в списке кандидатов выбранного кандидата. Модуль 121 внешнего прогнозирования также может выводить MVD PU. Фиг. 6, подробно описанный ниже, иллюстрирует пример операции AMVP.
[0143] Помимо генерации информации движения для PU путем осуществления IME и FME на PU, модуль 121 внешнего прогнозирования может осуществлять операции слияния на каждой из PU. Когда модуль 121 внешнего прогнозирования осуществляет операцию слияния на PU, модуль 121 внешнего прогнозирования может генерировать список кандидатов для PU. Список кандидатов для PU может включать в себя один или более первоначальных кандидатов. Первоначальные кандидаты в списке кандидатов могут включать в себя один или более пространственных кандидатов и временной кандидат. Пространственные кандидаты могут указывать информацию движения других PU в текущем изображении. Временной кандидат может базироваться на информации движения совместно размещенной PU изображения, отличного от текущего изображения. Временной кандидат также может именоваться временным предсказателем вектора движения (TMVP).
[0144] После генерации списка кандидатов, модуль 121 внешнего прогнозирования может выбирать один из кандидатов из списка кандидатов. Модуль 121 внешнего прогнозирования затем может генерировать прогностический видеоблок для PU на основании опорных блоков, указанных информацией движения PU. В режиме слияния, информация движения PU может быть идентична информации движения, указанной выбранным кандидатом. Фиг. 5, описанная ниже, представляет собой блок-схему операций, которая иллюстрирует пример операции слияния.
[0145] После генерации прогностического видеоблока для PU на основании IME и FME и после генерации прогностического видеоблока для PU на основании операции слияния, модуль 121 внешнего прогнозирования может выбирать прогностический видеоблок, генерируемый посредством операции FME или прогностический видеоблок, генерируемый посредством операции слияния. В некоторых примерах, модуль 121 внешнего прогнозирования может выбирать прогностический видеоблок для PU на основании анализа скорости-искажения прогностического видеоблока, генерируемого посредством операции FME, и прогностического видеоблока, генерируемого посредством операции слияния.
[0146] После того как модуль 121 внешнего прогнозирования выбирает прогностические видеоблоки для PU, генерируемые разбиением текущей CU согласно каждому из режимов разбиения, модуль 121 внешнего прогнозирования может выбирать режим разбиения для текущей CU. В некоторых примерах, модуль 121 внешнего прогнозирования может выбирать режим разбиения для текущей CU на основании анализа скорости-искажения выбранных прогностических видеоблоков для PU, генерируемые разбиением текущей CU согласно каждому из режимов разбиения. Модуль 121 внешнего прогнозирования может выводить прогностические видеоблоки, связанные с PU, принадлежащими выбранному режиму разбиения, на модуль 102 генерации остатка. Модуль 121 внешнего прогнозирования может выводить элементы синтаксиса, указывающие информацию движения PU, принадлежащих выбранному режиму разбиения, на модуль 116 статистического кодирования.
[0147] В примере, показанном на фиг. 4, модуль 121 внешнего прогнозирования включает в себя модули 180A-180N IME (совместно, “модули 180 IME”), модули 182A-182N FME (совместно, “модули 182 FME”), модули 184A-184N слияния (совместно, модули 184 слияния”), модули 186A-186N определения режима PU (совместно, “модули 186 определения режима PU”), и модуль 188 определения режима CU.
[0148] Модули 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.
[0149] Как показано в примере, представленном на фиг. 4, модуль 180A IME, модуль 182A FME и модуль 184A слияния может осуществлять операцию IME, операцию FME и операцию слияния на PU, генерируемой разбиением CU согласно режиму разбиения 2N×2N. Модуль 186A определения режима PU может выбирать один из прогностических видеоблоков, генерируемых модулем 180A IME, модулем 182A FME и модулем 184A слияния.
[0150] Модуль 180B IME, модуль 182B FME и модуль 184B слияния могут осуществлять операцию IME, операцию FME и операцию слияния на левой PU, генерируемой разбиением CU согласно режиму разбиения N×2N. Модуль 186B определения режима PU может выбирать один из прогностических видеоблоков, генерируемых модулем 180B IME, модулем 182B FME и модулем 184B слияния.
[0151] Модуль 180C IME, модуль 182C FME и модуль 184C слияния могут осуществлять операцию IME, операцию FME и операцию слияния на правой PU, генерируемой разбиением CU согласно режиму разбиения N×2N. Модуль 186C определения режима PU может выбирать один из прогностических видеоблоков, генерируемых модулем 180C IME, модулем 182C FME и модулем 184C слияния.
[0152] Модуль 180N IME, модуль 182N FME и модуль 184 слияния могут осуществлять операцию IME, операцию FME и операцию слияния на нижней правой PU, генерируемой разбиением CU согласно режиму разбиения N×N. Модуль 186N определения режима PU может выбирать один из прогностических видеоблоков, генерируемых модулем 180N IME, модулем 182N FME и модулем 184N слияния.
[0153] После того как модули 186 определения режима PU выбирают прогностические видеоблоки для PU текущей CU, модуль 188 определения режима CU выбирает режим разбиения для текущей CU и выводит прогностические видеоблоки и информацию движения PU, принадлежащих выбранному режиму разбиения.
[0154] На фиг. 5 показана блок-схема операций, которая иллюстрирует пример операции 200 слияния. Видеокодер, например видеокодер 20, может осуществлять операцию 200 слияния. В других примерах, видеокодер может осуществлять операции слияния, отличные от операции 200 слияния. Например, в других примерах, видеокодер может осуществлять операцию слияния, в которой видеокодер осуществляет больше, меньше или другие этапы, чем операция 200 слияния. В других примерах, видеокодер может осуществлять этапы операции 200 слияния в других порядках или параллельно. Кодер также может осуществлять операцию 200 слияния на PU, кодированной в режиме пропуска.
[0155] После того как видеокодер начинает операцию 200 слияния, видеокодер может генерировать список кандидатов для текущей PU (202). Видеокодер может по-разному генерировать список кандидатов для текущей PU. Например, видеокодер может генерировать список кандидатов для текущей PU согласно одному из иллюстративных методов, описанных ниже со ссылкой на фиг. 8-15.
[0156] Согласно кратко рассмотренному выше, список кандидатов для текущей PU может включать в себя временной кандидат. Временной кандидат может указывать информацию движения совместно размещенной PU. Совместно размещенная PU может размещаться в пространстве совместно с текущей PU, но находится в опорном изображении, а не в текущем изображении. Это изобретение может относиться к опорному изображению, которое включает в себя совместно размещенную PU в качестве релевантного опорного изображения. Это изобретение может относиться к индексу опорного изображения релевантного опорного изображения в качестве релевантного индекса опорного изображения. Как описано выше, текущее изображение может быть связано с одним или более списков опорных изображений, например списком 0, списком 1 и т.д. Индекс опорного изображения может указывать опорное изображение путем указания позиции опорного изображения в одном из списков опорных изображений. В некоторых примерах, текущее изображение может быть связано с объединенным списком опорных изображений.
[0157] В некоторых традиционных видеокодерах, релевантным индексом опорного изображения является индекс опорного изображения PU, которая покрывает исходное положение опорного индекса, связанное с текущей PU. В таких традиционных видеокодерах, исходное положение опорного индекса, связанное с текущей PU, находится непосредственно слева от текущей PU или непосредственно над текущей PU. В этом изобретении, PU может “покрывать” конкретное положение, если видеоблок, связанный с PU, включает в себя конкретное положение. В таких традиционных видеокодерах, видеокодер может использовать индекс опорного изображения, равный нулю, если исходное положение опорного индекса недоступно.
[0158] Однако возможны случаи, когда исходное положение опорного индекса, связанное с текущей PU, находится в текущей CU. В таких случаях, PU, покрывающую исходное положение опорного индекса, связанное с текущей PU, можно считать доступной, если эта PU располагается выше или левее текущей CU. Однако видеокодеру может потребоваться доступ к информации движения другой PU текущей CU для определения опорного изображения, содержащего совместно размещенную PU. Поэтому такие традиционные видеокодеры могут использовать информацию движения (т.е. индекс опорного изображения) PU, которая принадлежит текущей CU, для генерации временного кандидата для текущей PU. Другими словами, такие традиционные видеокодеры могут генерировать временной кандидат с использованием информации движения PU, которая принадлежит текущей CU. Следовательно, видеокодер может быть неспособен генерировать списки кандидатов параллельно для текущей PU и PU, которая покрывает исходное положение опорного индекса, связанное с текущей PU.
[0159] В соответствии с методами этого изобретения, видеокодер может устанавливать релевантный индекс опорного изображения в явном виде, без ссылки на индекс опорного изображения любой другой PU. Это может давать возможность видеокодеру генерировать списки кандидатов параллельно для текущей PU и других PU текущей CU. Поскольку видеокодер в явном виде устанавливает релевантный индекс опорного изображения, релевантный индекс опорного изображения не основан на информации движения любой другой PU текущей CU. В некоторых примерах, где видеокодер в явном виде устанавливает релевантный индекс опорного изображения, видеокодер всегда может установить релевантный индекс опорного изображения равным фиксированному заранее заданному принятому по умолчанию индексу опорного изображения, например 0. Таким образом, видеокодер может генерировать временной кандидат на основании информации движения совместно размещенной PU в опорном кадре, указанном принятым по умолчанию индексом опорного изображения и может включать временной кандидат в список кандидатов текущей CU.
[0160] В примерах, где видеокодер в явном виде устанавливает релевантный индекс опорного изображения, видеокодер может в явном виде сигнализировать релевантный индекс опорного изображения в синтаксической структуре, например заголовке изображения, заголовке среза, APS или другой синтаксической структуре. В этом примере, видеокодер может сигнализировать релевантный индекс опорного изображения для каждой LCU, CU, PU, TU или другого типа подблока. Например, видеокодер может сигнализировать, что релевантные индексы опорного изображения для каждой PU CU равны “1”.
[0161] В некоторых примерах, например, описанных ниже со ссылкой на фиг. 9A-9F и 10A-F, релевантный индекс опорного изображения можно устанавливать в неявном виде, а не в явном виде. В таких примерах, видеокодер может генерировать каждый временной кандидат в списках кандидатов для PU текущей CU с использованием информации движения PU в опорных изображениях, указанных индексами опорного изображения PU, которые покрывают положения вне текущей CU, даже если такие положения не строго соседствуют с текущими PU (т.е. PU текущей CU).
[0162] После генерации списка кандидатов для текущей PU, видеокодер может генерировать прогностический видеоблок, связанный с кандидатами в списке (204) кандидатов. Видеокодер может генерировать прогностический видеоблок, связанный с кандидатом, определяя информацию движения текущей PU на основании информации движения указанного кандидата и затем генерируя прогностический видеоблок на основании одного или более опорных блоков, указанных информацией движения текущей PU. Затем видеокодер может выбирать один из кандидатов из списка (206) кандидатов. Видеокодер может по-разному выбирать кандидат. Например, видеокодер может выбирать один из кандидатов на основании анализа скорости-искажения на каждом из прогностических видеоблоков, связанных с кандидатами.
[0163] Выбрав кандидат, видеокодер может выводить индекс (208) кандидата. Индекс кандидата может указывать позицию выбранного кандидата в списке кандидатов. В некоторых примерах, индекс кандидата может обозначаться “merge_idx”.
[0164] На фиг. 6 показана блок-схема операций, которая иллюстрирует пример операции 210 AMVP. Видеокодер, например видеокодер 20, может осуществлять операцию 210 AMVP. Фиг. 6 является всего лишь одним примером операции AMVP.
[0165] После того как видеокодер начинает операцию 210 AMVP, видеокодер может генерировать один или более векторов движения для текущей PU (211). Видеокодер может осуществлять целочисленную оценку движения и дробную оценку движения для генерации векторов движения для текущей PU. Как описано выше, текущее изображение может быть связано с двумя списками опорных изображений, списком 0 и списком 1. В случае однонаправленного прогнозирования текущей PU, видеокодер может генерировать вектор движения списка 0 или вектор движения списка 1 для текущей PU. Вектор движения списка 0 может указывать пространственное смещение между видеоблоком текущей PU и опорным блоком в опорном изображении в списке 0. Вектор движения списка 1 может указывать пространственное смещение между видеоблоком текущей PU и опорным блоком в опорном изображении в списке 1. В случае двунаправленного прогнозирования текущей PU, видеокодер может генерировать вектор движения списка 0 и вектор движения списка 1 для текущей PU.
[0166] После генерации вектора движения или векторов движения для текущей PU, видеокодер может генерировать прогностический видеоблок для текущей PU (212). Видеокодер может генерировать прогностический видеоблок для текущей PU на основании одного или более опорных блоков, указанных одним или более векторов движения для текущей PU.
[0167] Кроме того, видеокодер может генерировать список кандидатов для текущей PU (213). Каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой другой PU, принадлежащей текущей CU. Видеокодировщик может по-разному генерировать список кандидатов для текущей PU. Например, видеокодер может генерировать список кандидатов для текущей PU согласно одному или более из иллюстративных методов, описанных ниже со ссылкой на фиг. 8-15. В некоторых примерах, когда видеокодер генерирует список кандидатов в операции 210 AMVP, список кандидатов может ограничиваться двумя кандидатами. Напротив, когда видеокодер генерирует список кандидатов в операции слияния, список кандидатов может включать в себя больше кандидатов (например, пять кандидатов).
[0168] После генерации списка кандидатов для текущей PU, видеокодер может генерировать одну или более разностей векторов движения (MVD) для каждого кандидата в списке кандидатов (214). Видеокодер может генерировать разность векторов движения для кандидата путем определения разности между вектором движения, указанным кандидатом, и соответствующим вектором движения текущей PU.
[0169] В случае однонаправленного прогнозирования текущей PU, видеокодер может генерировать единичную MVD для каждого кандидата. В случае двунаправленного прогнозирования текущей PU, видеокодер может генерировать две MVD для каждого кандидата. Первая MVD может указывать разность между вектором движения кандидата и вектором движения списка 0 текущей PU. Вторая MVD может указывать разность между вектором движения кандидата и вектором движения списка 1 текущей PU.
[0170] Видеокодер может выбирать один или более из кандидатов из списка (215) кандидатов. Видеокодер может по-разному выбирать один или более кандидатов. Например, видеокодер может выбирать один из кандидатов на основании количества битов, необходимого для представления разностей векторов движения для кандидатов.
[0171] Выбрав один или более кандидатов, видеокодер может выводить один или более индексов опорного изображения для текущей PU, один или более индексов кандидатов и одну или более разностей векторов движения для одного или более выбранных кандидатов (216).
[0172] В случаях, когда текущее изображение связано с двумя списками опорных изображений, списком 0 и списком 1, и текущая PU прогнозируется однонаправленно, видеокодер может выводить индекс опорного изображения для списка 0 (“ref_idx_l0”) или списка 1 (“ref_idx_l1”). Видеокодер также может выводить индекс кандидата (“mvp_l0_flag”), который указывает позицию в списке кандидатов выбранного кандидата для вектора движения списка 0 текущей PU. Альтернативно, видеокодер может выводить индекс кандидата (“mvp_l1_flag”), который указывает позицию в списке кандидатов выбранного кандидата для вектора движения списка 1 текущей PU. Видеокодер также может выводить MVD для вектора движения списка 0 или вектора движения списка 1 текущей PU.
[0173] В случаях, когда текущее изображение связано с двумя списками опорных изображений, списком 0 и списком 1, и текущая PU прогнозируется двунаправленно, видеокодер может выводить индекс опорного изображения для списка 0 (“ref_idx_l0”) и индекс опорного изображения для списка 1 (“ref_idx_l1”). Видеокодер также может выводить индекс кандидата (“mvp_l0_flag”), который указывает позицию в списке кандидатов выбранного кандидата для вектора движения списка 0 текущей PU. Кроме того, видеокодер может выводить индекс кандидата (“mvp_l1_flag”), который указывает позицию в списке кандидатов выбранного кандидата для вектора движения списка 1 текущей PU. Видеокодер также может выводить MVD для вектора движения списка 0 текущей PU и MVD для вектора движения списка 1 текущей PU.
[0174] На фиг. 7 показана блок-схема операций, которая иллюстрирует пример операции 220 компенсации движения, осуществляемый видеодекодером, например видеодекодером 30. Фиг. 7 является всего лишь одним примером операции компенсации движения.
[0175] Когда видеодекодер осуществляет операцию 220 компенсации движения, видеодекодер может принимать индикацию выбранного кандидата для текущей PU (222). Например, видеодекодер может принимать индекс кандидата, который указывает позицию выбранного кандидата в списке кандидатов текущей PU.
[0176] Если информация движения текущей PU кодируется с использованием режима AMVP, и текущая PU прогнозируется двунаправленно, видеодекодер может принимать первый индекс кандидата и второй индекс кандидата. Первый индекс кандидата указывает позицию в списке кандидатов выбранного кандидата для вектора движения списка 0 текущей PU. Второй индекс кандидата указывает позицию в списке кандидатов выбранного кандидата для вектора движения списка 1 текущей PU.
[0177] Кроме того, видеодекодер может генерировать список кандидатов для текущей PU (224). В соответствии с методами этого изобретения, видеодекодер может генерировать список кандидатов таким образом, что каждый кандидат в списке кандидатов, который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любой другой PU, принадлежащей текущей CU. Видеодекодер может по-разному генерировать такой список кандидатов для текущей PU. Например, видеодекодер может использовать методы, описанные ниже, со ссылкой на фиг. 8-15 для генерации списка кандидатов для текущей PU. Когда видеодекодер генерирует временной кандидат для списка кандидатов, видеодекодер может явно или неявно устанавливать индекс опорного изображения, который идентифицирует опорное изображение, которое включает в себя совместно размещенную PU, как описано выше со ссылкой на фиг. 5.
[0178] В некоторых примерах, видеокодировщик, например видеокодер или видеодекодер, может адаптировать размер списка кандидатов для CU на основании размера PU, формы PU, индекса PU, информации о соседних видеоблоках и/или другой информации. Информация о соседних видеоблоках может включать в себя режимы прогнозирования соседних видеоблоков, векторы движения соседних видеоблоков, разности векторов движения соседних видеоблоков, индексы опорного изображения соседних видеоблоков, направления прогнозирования соседних видеоблоков, коэффициенты преобразования соседних видеоблоков, и/или другую информацию о соседних видеоблоках. Например, для CU с режимом 2N×N, первоначальный кандидат для второй PU, которая располагается внутри первой PU, можно удалять из списка кандидатов. В результате, в этом случае, размер списка кандидатов для второй PU может быть меньше размера списка кандидатов для первой PU.
[0179] В некоторых примерах, видеокодировщик может адаптировать порядок списков кандидатов для PU на основании размера PU, формы PU, индекса PU, информации о соседних видеоблоках и/или другой информации. Информация о соседних видеоблоках может включать в себя режимы прогнозирования соседних видеоблоков, векторы движения соседних видеоблоков, разности векторов движения соседних видеоблоков, индексы опорного изображения соседних видеоблоков, направления прогнозирования соседних видеоблоков, коэффициенты преобразования соседних видеоблоков, и/или другую информацию о соседних видеоблоках. Например, когда список слияния кандидатов генерируется на основании информации движения PU вне текущей CU, порядок кандидатов в списке кандидатов можно регулировать для каждой PU. Для тех кандидатов, которые располагаются дальше от PU, их порядок в списке можно понижать относительно тех, которые ближе к PU. В результате, хотя один и тот же набор кандидатов используется для формирования списка кандидатов для каждой PU, порядок кандидатов в списке может различаться для каждой PU в CU вследствие разных положений PU относительно тех кандидатов.
[0180] После генерации списка кандидатов для текущей PU, видеодекодер может определять информацию движения текущей PU на основании информации движения, указанной одним или более выбранных кандидатов в списке кандидатов для текущей PU (225). Например, если информация движения текущей PU кодируется с использованием режима слияния, информация движения текущей PU может быть идентична информации движения, указанной выбранным кандидатом. Если информация движения текущей PU кодируется с использованием режима AMVP, видеодекодер может использовать один или более векторов движения, указанный выбранным кандидатом или кандидатами, и один или более MVD, указанных в битовом потоке, для реконструкции вектора движения или векторов движения текущей PU. Индекс(ы) опорного изображения и индикатор(ы) направления прогнозирования текущей PU могут быть идентичны индексу(ам) опорного изображения и индикатору(ам) направления прогнозирования одного или более выбранных кандидатов.
[0181] После определения информации движения текущей PU, видеодекодер может генерировать прогностический видеоблок для текущей PU на основании одного или более опорных блоков, указанных информацией движения текущей PU (226).
[0182] На фиг. 8A и 8B, все PU CU совместно используют единичный список слияния кандидатов, который может быть идентичен списку слияния кандидатов 2N×2N PU. Таким образом, на фиг. 8A и 8B, видеокодировщик может генерировать список слияния кандидатов, совместно используемый всеми PU текущей CU. Таким образом, текущую CU можно разбить на множество PU согласно выбранному режиму разбиения (например, 2N×N, N×2N, N×N и т.д.), отличному от режима разбиения 2N×2N, и информация движения каждой из PU является определимой на основании информации движения, указанной выбранным кандидатом в списке слияния кандидатов. Видеокодировщик может генерировать совместно используемый список слияния для множества PU таким же образом, как в случае разбиения CU в режиме 2N×2N. Другими словами, список слияния кандидатов идентичен списку кандидатов, который генерировался бы, если бы текущая CU была разбита согласно режиму разбиения 2N×2N. Одно преимущество такой схемы может состоять в том, что для каждой CU, независимо от того, сколько PU имеет CU, может генерироваться только один список слияния. Дополнительно, на основании такой схемы, оценивание движения для разных PU в одной и той же CU можно проводить параллельно. В этом примере, список слияния, который совместно используется всеми PU CU, может генерироваться таким же образом, как в случае разбиения CU согласно режиму разбиения 2N×2N. На Фиг. 8A и 8B приведены примеры, в которых список слияния кандидатов генерируется без использования информации движения PU текущей CU, и один и тот же список слияния кандидатов совместно используется всеми PU текущей CU.
[0183] На фиг. 8A показана принципиальная схема, которая демонстрирует CU 250 и примерные исходные положения 252A-E, связанные с CU 250. Это изобретение может относиться к исходным положениям 252A-252E, совместно обозначенным как исходные положения 252. Исходное положение 252A располагается слева от CU 250. Исходное положение 252B располагается над CU 250. Исходное положение 252C располагается выше и правее CU 250. Исходное положение 252D располагается ниже и левее CU 250. Исходное положение 252E располагается выше и левее CU 250. Каждое из исходных положений 252 располагается вне CU 250.
[0184] CU 250 может включать в себя одну или более PU. Видеокодировщик может генерировать кандидаты движения для каждой из PU CU 250 на основании информации движения PU, которые покрывают исходные положения 252. Таким образом, видеокодировщик может генерировать списки кандидатов для PU CU 250 таким образом, что каждый кандидат который генерируется на основании информации движения, по меньшей мере, одной другой PU, генерируется без использования информации движения любых других PU, которые принадлежат CU 250. Генерация списков кандидатов для PU CU 250 таким образом может давать возможность видеокодировщику генерировать списки кандидатов нескольких PU CU 250 параллельно.
[0185] На фиг. 8B показана принципиальная схема, которая демонстрирует CU 260 и примерные исходные положения 262A-G, связанные с CU 260. Это изобретение может относиться к исходным положениям 262A-G, совместно обозначенным как исходные положения 262. Пример, представленный на фиг. 8B, аналогичен примеру, представленному на фиг. 8A, за исключением того, что CU 260 связана с семью исходными положениями, а не с пятью исходными положениями, как показано на фиг. 8A. В примере, показанном на фиг. 8B, видеокодировщик может генерировать списки кандидатов для каждой PU CU 260 на основании информации движения одной или более PU, которые покрывают исходные положения 262.
[0186] На фиг. 9A показана принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса левее CU 300 с разбиением 2N×N. PU 302 и PU 304 принадлежат CU 300. В примере, показанном на фиг. 9A, исходное положение 306 опорного индекса связано с PU 302. Исходное положение 308 опорного индекса связано с PU 304.
[0187] На фиг. 9B показана принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса слева от CU 340с разбиением N×2N. PU 342 и PU 344 принадлежат CU 340. В примере, показанном на фиг. 9B, исходное положение 348 опорного индекса связано с обеими PU 342 и PU 344.
[0188] На фиг. 9C показана принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса выше CU 320 с разбиением 2N×N. PU 322 и PU 324 принадлежат CU 320. В примере, показанном на фиг. 9C, исходное положение 328 опорного индекса связано с PU 322 и PU 324.
[0189] На фиг. 9D показана принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса выше CU 360 с разбиением N×2N. PU 362 и PU 364 принадлежат CU 360. В примере, показанном на фиг. 9D, исходное положение 366 опорного индекса связано с PU 362. Исходное положение 368 опорного индекса связано с PU 364.
[0190] На фиг. 9E показана принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса слева от примера CU 400 с разбиением N×N. CU 400 разбивается на PU 402, 404, 406 и 408. Исходное положение 410 опорного индекса связано с PU 402 и 404. Исходное положение 412 опорного индекса связано с PU 406 и 408.
[0191] На фиг. 9F показана принципиальная схема, которая демонстрирует примерные исходные положения опорного индекса выше CU 420 с разбиением N×N. CU 420 разбивается на PU 422, 424, 426 и 428. Исходное положение 430 опорного индекса связано с PU 422 и 426. Исходное положение 432 опорного индекса связано с PU 426 и 428.
[0192] Как показано в примерах, приведенных на фиг. 9A-9F, если первоначальное исходное положение опорного индекса, связанное с текущей PU, находится в текущей CU, видеокодировщик может, в соответствии с методами этого изобретения, вместо того чтобы использовать первоначальное исходное положение опорного индекса, идентифицировать положение вне текущей CU, которое соответствует первоначальному исходному положению опорного индекса, связанному с текущей PU. Положение вне текущей CU может соответствовать первоначальному исходному положению опорного индекса внутри текущей CU на основании критериев, что положения располагаются в пространстве относительно текущей PU одинаковым образом (например, оба находятся ниже и левее, левее, выше и левее, выше или выше и правее текущей PU). Видеокодировщик может сделать вывод, что релевантный индекс опорного изображения равен индексу опорного изображения PU, которая покрывает соответствующее положение вне текущей CU. Таким образом, видеокодировщик может определять релевантный индекс опорного изображения без использования информации движения любых других PU внутри текущей CU.
[0193] Как показано в примере, представленном на фиг. 9C, положение 326 непосредственно над PU 324 находится в CU 320. Вместо того чтобы использовать индекс опорного изображения PU, которая покрывает положение 326, видеокодировщик может использовать индекс опорного изображения PU, которая покрывает соответствующее положение вне CU 320 (т.е. исходное положение 328 опорного индекса). Аналогично, в примере, показанном на фиг. 9B, положение 346 непосредственно слева от PU 344 находится в CU 340. Вместо того чтобы использовать индекс опорного изображения PU, которая покрывает положение 346, видеокодировщик может использовать индекс опорного изображения PU, которая покрывает соответствующее положение вне CU 340 (т.е. исходное положение 348 опорного индекса). В некоторых примерах, соответствующие положения вне текущей CU располагаются в пространстве относительно текущей PU таким же образом, как первоначальные положения, которые находятся внутри текущей CU.
[0194] Таким образом, в ответ на определение, что исходное положение опорного индекса, связанное с текущей PU, находится в текущей CU, видеокодировщик может идентифицировать соответствующее положение вне текущей CU. Затем видеокодировщик может генерировать временной кандидат на основании информации движения совместно размещенной PU в опорном изображении, указанном PU, которая покрывает соответствующее положение вне текущей CU. Затем видеокодировщик может включать временной кандидат в список кандидатов для текущей CU.
[0195] На фиг. 10A показана принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса левее CU 500 с разбиением 2N×N. PU 502 и PU 504 принадлежат CU 500. На Фиг. 10B показана принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса левее CU 520 с разбиением N×2N. PU 522 и PU 524 принадлежат CU 520. На Фиг. 10C показана принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса выше CU 540 с разбиением 2N×N. PU 542 и PU 544 принадлежат CU 540. На Фиг. 10D показана принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса выше CU 560 с разбиением N×2N. PU 562 и PU 564 принадлежат CU 560. На Фиг. 10E показана принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса левее CU 580 с разбиением N×N. CU 580 разбивается на PU 582, 584, 586 и 588. На Фиг. 10F показана принципиальная схема, которая демонстрирует примерное исходное положение опорного индекса левее CU 600 с разбиением N×N. CU 600 разбивается на PU 602, 604, 606 и 608.
[0196] Фиг. 10A-10F аналогичны фиг. 9A-9F в том, что видеокодировщик может быть выполнен с возможностью определения релевантного индекса опорного изображения для текущей PU из PU, которая покрывает исходное положение опорного индекса, связанное с текущей PU. Однако, в отличие от примеров, приведенных на фиг. 9A-9F, каждая PU CU связана с одним и тем же исходным положением опорного индекса. Другими словами, индекс опорного изображения для всех PU в CU можно получать из единичного соседнего блока вне CU.
[0197] Например, в примере, показанном на фиг. 10A, обе PU 502 и 504 связаны с исходным положением 506 опорного индекса, которое находится слева от CU 500. Напротив, в примере, показанном на фиг. 9A, PU 302 и 304 связаны с исходными положениями 306 и 308 опорного индекса. Аналогично, в примере, показанном на фиг. 10D, обе PU 562 и PU 564 связаны с единичным исходным положением 566 опорного индекса, которое находится над CU 560. В примере, показанном на фиг. 10E, PU 582, 584, 586 и 588 связаны с единичным исходным положением 590 опорного индекса, которое располагается слева от CU 580. В примере, показанном на фиг. 10F, PU 602, 604, 606 и 608 связаны с единичным исходным положением 610 опорного индекса, которое располагается над CU 600.
[0198] В других примерах, видеокодировщик может определять индексы опорного изображения временных кандидатов каждой PU CU из любой другой PU, которая располагается в пространстве вне CU. Например, видеокодировщик может определять индексы опорного изображения временных кандидатов каждой PU CU из PU, которая располагается слева, располагается выше, располагается выше и слева, располагается выше и справа, или располагается ниже и слева CU. Использование единичного или нескольких исходных положений вне текущей CU для кодирования информации внутри текущей CU может применяться текущей CU или блокам других типов или на разных уровнях.
[0199] На фиг. 11 показана блок-схема операций, которая иллюстрирует пример операции 700 для генерации временного кандидата для PU. Видеокодировщик, например видеокодер 20 или видеодекодер 30, может осуществлять операцию 700. Фиг. 11 является всего лишь одним примером операции для генерации временного кандидата для PU.
[0200] После того как видеокодировщик начинает операцию 700, видеокодировщик может определять, доступна ли PU, которая покрывает исходное положение опорного индекса, связанное с текущей PU (702). Это изобретение может относиться к PU, которая покрывает исходное положение опорного индекса, в качестве исходной PU опорного индекса. Исходная PU опорного индекса может быть недоступна по различным причинам. Например, исходная PU опорного индекса может быть недоступна, если исходная PU опорного индекса не находится в текущем изображении. В другом примере, исходная PU опорного индекса может быть недоступна, если исходная PU опорного индекса является внешне прогнозируемой. В другом примере, исходная PU опорного индекса может быть недоступна, если исходная PU опорного индекса находится в другом срезе, чем текущая PU.
[0201] В ответ на определение, что исходная PU опорного индекса для текущей PU доступна (“Да” на этапе 702), видеокодировщик может генерировать временной кандидат, который указывает информацию движения совместно размещенной PU в опорном изображении, указанном индексом опорного изображения исходной PU опорного индекса (704). Например, в примере, показанном на фиг. 9C, PU, покрывающая положение 328, может быть исходная PU опорного индекса для PU 324. В этом случае, видеокодировщик может генерировать временной кандидат для PU 324, который указывает информацию движения совместно размещенной PU в опорном изображении, указанном индексом опорного изображения PU, покрывающей положение 328.
[0202] В ответ на определение, что исходная PU опорного индекса для текущей PU недоступна (“Нет” на этапе 702), видеокодировщик может искать для доступной PU среди PU, которые соседствуют в пространстве с текущей CU (706). Если видеокодировщик не находит доступную PU (“Нет” на этапе 708), видеокодировщик может генерировать временной кандидат, который указывает информацию движения совместно размещенной PU в опорном изображении, указанном принятым по умолчанию индексом опорного изображения (710). Например, если видеокодировщик не находит доступную PU, видеокодировщик может генерировать временной кандидат для текущей PU из совместно размещенной PU в опорном изображении, указанном индексом опорного изображения, равным 0, 1 или другому числу, которое выбрано по умолчанию.
[0203] С другой стороны, если видеокодировщик находит доступную PU (“Да” на этапе 708), видеокодировщик может генерировать временной кандидат, который указывает информацию движения совместно размещенной PU в опорном изображении, указанном индексом опорного изображения доступной PU (712). Например, если индекс опорного изображения доступной PU равен 1, видеокодировщик может генерировать временной кандидат, который указывает информацию движения совместно размещенной PU в опорном изображении, указанном индексом опорного изображения 1.
[0204] В другом примере, если исходная PU опорного индекса недоступна, видеокодировщик может генерировать временной кандидат, который указывает информацию движения совместно размещенной PU в опорном изображении, указанном принятым по умолчанию индексом опорного изображения. В этом примере, принятый по умолчанию индекс опорного изображения может иметь значение, принятое по умолчанию (например, нулевое) или может сигнализироваться в наборе параметров изображения, заголовке среза, APS или другой синтаксической структуре.
[0205] Таким образом, в примере, показанном на фиг. 11, видеокодировщик может, в ответ на определение, что исходная PU опорного индекса недоступна, искать доступную PU, которая соседствует в пространстве с текущей CU. Затем видеокодировщик может генерировать временной кандидат на основании информации движения совместно размещенной PU в опорном изображении, указанном индексом опорного изображения доступной PU. Видеокодировщик может включать временной кандидат в список кандидатов для текущей PU.
[0206] На фиг. 12 показана блок-схема операций, которая иллюстрирует пример операции 800 для генерации списка кандидатов для PU. Видеокодировщик, например видеокодер 20 или видеодекодер 30, может осуществлять операцию 800. Фиг. 12 является всего лишь одним примером операции для генерации списка кандидатов для PU.
[0207] После того как видеокодировщик начинает операцию 800, видеокодировщик может генерировать пространственные кандидаты на основании информации движения PU, которые соседствуют в пространстве с текущей PU и находятся вне текущей CU (802). Таким образом, кандидаты, которые находятся в текущей CU, исключаются из списка кандидатов. Например, для верхней правой PU CU с разбиением N×N, левый кандидат (L) и нижний левый кандидат (BL) исключаются из этого списка кандидатов. Для нижней левой PU CU с разбиением N×N, верхний кандидат (A) и правый верхний кандидат (RA) исключаются из списка кандидатов. Для нижней правой PU CU с разбиением N×N, три кандидата, включающие в себя левый кандидат (L), верхний кандидат (A) и левый верхний кандидат (LA), исключаются из списка кандидатов.
[0208] Затем видеокодировщик может добавлять пространственные кандидаты в список кандидатов для текущей PU (804). Кроме того, видеокодировщик может генерировать временной кандидат, который указывает информацию движения совместно размещенной PU в опорном изображении (806). Затем видеокодировщик может добавлять временной кандидат в список кандидатов для текущей PU (808).
[0209] Видеокодировщик может осуществлять операцию 800, когда информация движения текущей PU сигнализируется в режиме слияния. Видеокодировщик также может осуществлять операцию 800 или аналогичную операцию, когда информация движения текущей PU сигнализируется в режиме AMVP. В примерах, где текущая CU сигнализируется в режиме AMVP, кандидаты в списке кандидатов могут быть кандидатами AMVP.
[0210] Таким образом, видеокодировщик может генерировать пространственные кандидаты на основании информации движения PU, которые соседствуют в пространстве с текущей PU и находятся вне текущей CU. Затем видеокодировщик может включать пространственные кандидаты в список кандидатов для текущей PU.
[0211] На фиг. 13 показана блок-схема операций, которая иллюстрирует пример операции 850 для генерации списка кандидатов для PU. Видеокодировщик, например видеокодер 20 или видеодекодер 30, может осуществлять операцию 850. Фиг. 13 является всего лишь одним примером операции для генерации списка кандидатов для PU.
[0212] После того как видеокодировщик начинает операцию 850, видеокодировщик может генерировать пространственные кандидаты для текущей PU на основании информации движения PU, которые соседствуют в пространстве с текущей CU (852). Затем видеокодировщик может добавлять пространственные кандидаты в список кандидатов для текущей PU (854). В примере, показанном на фиг. 13, видеокодировщик может заменять исходные положения пространственных кандидатов, которые соседствуют с текущей PU, но находятся в текущей CU, соответствующими исходными положениями пространственных кандидатов, которые находятся вне текущей CU. Таким образом, положения, используемые видеокодировщиком на фиг. 13 для генерации пространственных кандидатов, перемещаются в соответствующие положения вне текущей CU (т.е. заменяются ими). Соответствующие положения вне текущей CU могут располагаться в позиции любого соседнего блока: слева, выше, выше и слева, выше и справа, ниже и слева текущей CU. Таким образом, вместо удаления зависимых кандидатов из списка кандидатов, как описано выше со ссылкой на фиг. 12), кандидаты можно брать из соседних CU расположенных вне текущей CU. Как описано ниже, фиг. 14A, 14B, 15A, 15B, 15C и 15D иллюстрируют исходные положения пространственных кандидатов, используемые видеокодировщиком в соответствии с операцией 850 для генерации пространственных кандидатов.
[0213] В некоторых примерах, если исходное положение пространственного кандидата, которое соседствует с текущей PU, не находится в текущей CU, и соответствующая PU (т.е. PU, которая покрывает исходное положение пространственного кандидата) недоступна, видеокодировщик может осуществлять процесс поиска среди соседних PU для нахождения доступной PU. Если видеокодировщик способен найти доступную PU, видеокодировщик может генерировать пространственный кандидат на основании информации движения доступной PU. Альтернативно, если исходное положение пространственного кандидата, которое соседствует с текущей PU, не находится в текущей CU, и соответствующая PU (т.е. PU, которая покрывает исходное положение пространственного кандидата) недоступна, видеокодировщик может генерировать пространственный кандидат, который имеет значение, принятое по умолчанию, например нуль. Значение, принятое по умолчанию, может сигнализироваться в PPS, заголовке среза, APS или другом типе заголовка.
[0214] Кроме того, видеокодировщик может генерировать временной кандидат для текущей PU (856). Затем видеокодировщик может добавлять временной кандидат в список кандидатов для текущей PU (858).
[0215] Видеокодировщик может осуществлять операцию 850, когда информация движения текущей PU сигнализируется в режиме слияния. Видеокодировщик также может осуществлять операцию 850 или аналогичную операцию, когда информация движения текущей PU сигнализируется в режиме AMVP. В примерах, где текущая CU сигнализируется в режиме AMVP, кандидаты в списке кандидатов могут быть кандидатами AMVP.
[0216] в примере, показанном на фиг. 13, набор исходных положений пространственных кандидатов для текущей CU первоначально может включать в себя первое исходное положение пространственного кандидата ниже и левее текущей PU, второе исходное положение пространственного кандидата левее текущей PU, третье исходное положение пространственного кандидата выше и левее текущей PU, четвертое исходное положение пространственного кандидата выше текущей PU, и пятое исходное положение пространственного кандидата выше и правее текущей PU. видеокодировщик может заменять любое из исходных положений пространственных кандидатов, которые находятся в текущей CU, соответствующими исходными положениями пространственных кандидатов вне текущей CU. Затем видеокодировщик может генерировать пространственные кандидаты на основании информации движения PU, которые покрывают исходные положения пространственных кандидатов и включать пространственные кандидаты в список кандидатов для текущей PU.
[0217] На фиг. 14A показана принципиальная схема, которая демонстрирует примерные исходные положения пространственных кандидатов, связанные с правой PU примера CU 900 с разбиением N×2N. PU 902 и PU 904 принадлежат CU 900. Видеокодировщик может генерировать пространственные кандидаты для PU 904 на основании информации движения PU, которые покрывают исходные положения 906, 908, 910, 914 и 918 пространственных кандидатов. Исходное положение 906 пространственного кандидата располагается левее и выше PU 904. Исходное положение 908 пространственного кандидата располагается над PU 904. Исходное положение 910 пространственного кандидата располагается правее и выше PU 904. Исходное положение 914 пространственного кандидата располагается левее и ниже PU 904. Положение 916 располагается в пространстве слева от PU 904. Однако, вместо того чтобы использовать информацию движения PU, которая покрывает положение 916 (т.е. PU 902) для генерации пространственного кандидата для PU 904, видеокодировщик может использовать информацию движения PU, которая покрывает исходное положение 918 пространственного кандидата для генерации пространственного кандидата для PU 904. Исходное положение 918 пространственного кандидата располагается в пространстве слева от CU 900.
[0218] На фиг. 14B показана принципиальная схема, которая демонстрирует примерные исходные положения пространственных кандидатов, связанные с нижней PU CU 920 с разбиением 2N×N. PU 922 и PU 924 принадлежат CU 920. Видеокодировщик может генерировать пространственные кандидаты для PU 922 на основании исходных положений пространственных кандидатов, которые располагаются в пространстве левее и выше, выше, правее и выше, левее и левее и ниже PU 922. Вследствие позиции PU 922 в CU 920, ни одно из этих исходных положений пространственных кандидатов не находится в CU 920. Поэтому видеокодировщику не требуется “перемещать” какое-либо из исходных положений пространственных кандидатов, связанных с PU 922, для генерации пространственных кандидатов для PU 922, которые основаны на информации движения PU вне CU 920.
[0219] Видеокодировщик может генерировать пространственные кандидаты для PU 924 на основании исходных положений 926, 928, 932, 934 и 936 пространственных кандидатов. Исходное положение 928 пространственного кандидата располагается выше и правее PU 924. Исходное положение 932 пространственного кандидата располагается в пространстве ниже и левее PU 924. Исходное положение 934 пространственного кандидата располагается в пространстве слева от PU 924. Исходное положение пространственного кандидата 936 располагается в пространстве левее и выше PU 924.
[0220] Положение 938 располагается в пространстве над PU 924. Однако положение 938 располагается в CU 920. Соответственно, вместо того чтобы использовать информацию движения PU, которая покрывает положение 938 (т.е. PU 922) для генерации пространственного кандидата движения для PU 924, видеокодировщик может генерировать пространственный кандидат движения для PU 924 на основании информации движения PU, которая покрывает исходное положение пространственного кандидата 926.
[0221] На фиг. 15A-15D показаны принципиальные схемы, которые демонстрируют исходные положения пространственных кандидатов, связанные с PU CU 950 с разбиением N×N. PU 952, 954, 956 и 958 принадлежат CU 950. На Фиг. 15A показана принципиальная схема, которая демонстрирует примерные исходные положения пространственных кандидатов, связанные с PU 952. Как показано в примере, представленном на фиг. 15A, видеокодировщик может генерировать пространственные кандидаты движения для PU 952 на основании информации движения PU, которые покрывают исходные положения 960, 962, 964, 966 и 968 пространственных кандидатов. Ни одно из исходных положений 960, 962, 964, 966 или 968 пространственных кандидатов не располагаются в CU 950. Соответственно, видеокодировщику не требуется “перемещать” какое-либо из исходных положений пространственных кандидатов, связанных с PU 952 для генерации кандидата движения для PU 952.
[0222] На фиг. 15B показана принципиальная схема, которая демонстрирует примерные исходные положения пространственных кандидатов, связанные с PU 954. Как показано в примере, представленном на фиг. 15B, видеокодировщик может генерировать пространственные кандидаты движения для PU 954 на основании информации движения PU, которые покрывают исходные положения 980, 982, 984, 986 и 988 пространственных кандидатов. Исходные положения 980, 982 и 984 пространственных кандидатов располагаются вне CU 950. Положение 990 располагается в пространстве слева от PU 954. Положение 992 располагается в пространстве ниже и левее PU 954. Однако положения 990 и 992 находятся в CU 950. Поэтому, вместо того, чтобы генерировать пространственные кандидаты движения на основании информации движения PU, которые покрывают положения 990 и 992 (т.е. PU 952 и 956), видеокодировщик может генерировать пространственные кандидаты движения для PU 954 на основании информации движения PU, которые покрывают соответствующие положения вне CU 950 (т.е. исходные положения 986 и 988 пространственных кандидатов). Исходные положения 986 и 988 пространственных кандидатов находятся вне PU 950.
[0223] На фиг. 15C показана принципиальная схема, которая демонстрирует примерные исходные положения пространственных кандидатов, связанные с PU 956. Как показано в примере, представленном на фиг. 15C, видеокодировщик может генерировать пространственные кандидаты движения для PU 956 на основании информации движения PU, которые покрывают исходные положения 1000, 1002, 1004, 1006 и 1008 пространственных кандидатов. Исходные положения 1000, 1002, 1004, 1006 и 1008 пространственных кандидатов являются положениями вне CU 950. Положение 1010 располагается в пространстве над PU 956. Положение 1012 располагается в пространстве выше и правее PU 956. Однако положения 1010 и 1012 находятся в CU 950. Поэтому, вместо того, чтобы генерировать пространственные кандидаты движения на основании информации движения PU, которые покрывают положения 990 и 992 (т.е. PU 952 и 954), видеокодировщик может генерировать пространственные кандидаты движения для PU 954 на основании информации движения PU, которые покрывают соответствующие положения вне CU 950 (т.е. исходные положения 1000 и 1002 пространственных кандидатов).
[0224] На фиг. 15D показана принципиальная схема, которая демонстрирует примерные исходные положения пространственных кандидатов, связанные с PU 958. Как показано в примере, представленном на фиг. 15D, видеокодировщик может генерировать пространственные кандидаты движения на основании информации движения PU, которые покрывают исходные положения 1020, 1022, 1024, 1026 и 1028 пространственных кандидатов. Исходные положения 1020, 1022, 1024, 1026 и 1028 пространственных кандидатов являются положениями вне CU 950. Положение 1030 располагается в пространстве над PU 956. Положение 1032 располагается в пространстве выше и левее PU 956. Положение 1034 располагается в пространстве слева от PU 958. Однако положения 1030, 1032 и 1034 находятся в CU 950. Поэтому, вместо того, чтобы генерировать пространственные кандидаты движения на основании информации движения PU, которые покрывают положения 1030, 1032 и 1034 (т.е. PU 954, 952 и 956), видеокодировщик может генерировать пространственные кандидаты движения для PU 954 на основании информации движения PU, которые покрывают соответствующие положения вне CU 950 (т.е. исходные положения 1020, 1028 и 1026 пространственных кандидатов).
[0225] На фиг. 14A, 14B и 15A-15D показаны CU, разбитые согласно режимам разбиения N×2N, 2N×N и N×N. Однако аналогичные концепции можно применять в отношении других режимов разбиения.
[0226] В одном или более примерах, описанные функции могут быть реализованы в оборудовании, программном обеспечении, программно-аппаратном обеспечении, или любой их комбинации. Будучи реализованы в программном обеспечении, функции могут храниться или передаваться, в виде одной или более инструкций или кода, на машиночитаемом носителе и выполняться аппаратным блоком обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители данных, которые соответствуют вещественному носителю, например носителям данных или средам связи, включающим в себя любую среду, которая облегчает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем случае, могут соответствовать (1) вещественным машиночитаемым носителям данных, которые являются неизменяемыми, или (2) среде связи, например сигналу или несущей волне. Носителями данных могут быть любые доступные носители, к которым может обращаться один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в этом изобретении. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[0227] В порядке примера, но не ограничения, такие машиночитаемые носители данных могут содержать ОЗУ, ПЗУ, ЭСППЗУ, CD-ROM или другое хранилище на основе оптического диска, хранилище на основе магнитного диска, или другие магнитные запоминающие устройства, флэш-память, или любой другой носитель, который можно использовать для хранения нужного программного кода в форме инструкций или структур данных, и к которым может обращаться компьютер. Также, любое соединение уместно именовать машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL), или беспроводных технологий, например инфракрасных, радиочастотных и микроволновых, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL, или беспроводные технологии, например инфракрасные, радиочастотные и микроволновые, включаются в определение носителя. Однако следует понимать, что машиночитаемые носители данных и среды не включают в себя соединения, несущие волны, сигналы или другие изменяемые среды, но вместо этого означают неизменяемые, вещественные носители данных. Используемый здесь термин диск, включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи-диск и диск Blu-ray, где диски обычно воспроизводят данные магнитными средствами, тогда как диски воспроизводят данные оптическими средствами с помощью лазеров. Комбинации вышеописанных устройств также подлежат включению в объем определения машиночитаемых носителей.
[0228] Инструкции могут выполняться одним или более процессорами, например одним или более цифровыми сигнальными процессорами (DSP), микропроцессорами общего назначения, специализированными интегральными схемами (ASIC), вентильными матрицами, программируемыми пользователем (FPGA), или другими эквивалентными интегральными или дискретными логическими схемами. Соответственно, термин “процессор”, используемый здесь термин может означать любую из вышеупомянутой структуры или любой другой структуры, подходящей для реализации описанных здесь методов. Кроме того, в некоторых аспектах, описанные здесь функциональные возможности могут быть обеспечены в специализированных аппаратных и/или программных модулях, выполненных с возможностью кодирования и декодирования, или внедрены в комбинированный кодек. Также, методы можно полностью реализовать в одной или более схемах или логических элементах.
[0229] Методы этого изобретения можно реализовать в разнообразных приспособлениях или устройствах, включающих в себя беспроводную телефонную трубку, интегральную схему (ИС) или набор ИС (например, чипсет). Различные компоненты, модули или блоки описаны в этом изобретении для подчеркивания функциональных аспектов устройств, выполненных с возможностью осуществления раскрытых методов, но не обязательно требуют реализации разными аппаратными блоками. Напротив, как описано выше, различные блоки могут объединяться в аппаратном блоке кодека или обеспечиваться совокупностью взаимодействующих аппаратных блоков, включающих в себя один или более процессоров, как описано выше, совместно с подходящим программным обеспечением и/или программно-аппаратным обеспечением.
[0230] Были описаны различные примеры. Эти и другие примеры соответствуют объему, определенному нижеследующей формулой изобретения.