ПРЕДСКАЗАНИЕ ВЕКТОРА ДВИЖЕНИЯ ДЛЯ АФФИННЫХ МОДЕЛЕЙ ДВИЖЕНИЯ В КОДИРОВАНИИ ВИДЕО
MOTION VECTOR PREDICTION FOR AFFINE MOTION MODELS IN VIDEO CODING

[0001] По настоящей заявке испрашивается приоритет согласно предварительной заявке на патент США 62/404,719, поданной 5 октября 2016 г., полное содержание которой включено в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Это раскрытие относится к устройствам, системам и способам для кодирования видео.
УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть встроены в широкий диапазон устройств, включающий в себя цифровое телевидение, цифровые системы прямого широкого вещания, беспроводные системы широкого вещания, "электронные помощники" (PDA), ноутбуки или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые проигрыватели мультимедиа, устройства компьютерных игр, компьютерные игровые приставки, сотовые или спутниковые радиотелефоны, так называемые "интеллектуальные телефоны", устройства для видеотелеконференц-связи, устройства для видеопотока и т. п. Устройства цифрового видео осуществляют методики сжатия видео, такие как описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, улучшенного кодирования видео (AVC), ITU-T H.265, стандарте высокоэффективного видеокодирования (HEVC), и расширения таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять информацию цифрового видео более эффективно путем осуществления таких методик сжатия видео.
[0004] Методики сжатия видео выполняют пространственное (внутри изображения) предсказание и/или временное (между изображениями) предсказание, чтобы уменьшить или удалить избыточность, наследуемую в видеопоследовательностях. Для кодирования видео на основе блоков срез видео (т.е. видеокадр или часть видеокадра) может быть разделен на видеоблоки, которые могут также называться блоками дерева, единицами кодирования (CU) и/или узлами кодирования. Видеоблоки во внутренне кодированном (I) срезе изображения кодируются с использованием пространственного предсказания в отношении опорных образцов в соседних блоках в одном и том же изображении. Видеоблоки в промежуточно закодированном (P или B) срезе изображения могут использовать пространственное предсказание в отношении опорных образцов в соседних блоках в одном и том же изображении или временное предсказание в отношении опорных образцов в других опорных изображениях. Пространственное или временное предсказание дает в результате предсказательный блок для блока, который должен быть закодирован. Остаточные данные представляют пиксельные разницы между исходным блоком, который должен быть закодирован, и предсказательным блоком. Промежуточно закодированный блок кодируется согласно вектору движения, который указывает на блок опорных образцов, формирующих предсказательный блок, и остаточным данным, указывающим разницу между закодированным блоком и предсказательным блоком. Внутренне закодированный блок кодируется согласно режиму внутреннего кодирования и остаточным данным. Для дополнительного сжатия остаточные данные могут быть преобразованы из области пикселов в область преобразования, что приводит в результате к остаточным коэффициентам преобразования, которые затем могут быть квантованы.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] В общем смысле, это раскрытие описывает методики, относящиеся к предсказанию вектора движения и реконструкции вектора движения для аффинного режима предсказания движения. Методики могут применяться к любому из существующих кодеков видео, таких как HEVC (кодирование видео высокой эффективности), или могут быть эффективным инструментом кодирования в любых будущих стандартах кодирования видео.
[0006] В одном примере это раскрытие описывает способ декодирования видеоданных, причем способ содержит этапы, на которых: выбирают исходный аффинный блок (исходный блок аффинного кодирования), причем исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком; экстраполируют векторы движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока; вставляют, в список наборов-кандидатов (наборов, являющихся кандидатами) аффинных предикторов вектора движения (MVP), набор аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока; определяют на основе индекса, просигнализированного в битовом потоке, выбранный набор аффинных MVP в списке наборов-кандидатов аффинных MVP; получают, из битового потока, разницы векторов движения (MVD), которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP; и определяют, на основе предикторов вектора движения, включенных в выбранный набор аффинных MVP, и упомянутых MVD, векторы движения контрольных точек текущего блока; генерируют, на основе векторов движения контрольных точек текущего блока, предсказательный блок; и реконструируют текущий блок на основе остаточных данных и предсказательного блока.
[0007] В другом примере это раскрытие описывает способ кодирования видеоданных, причем способ содержит этапы, на которых: выбирают исходный аффинный блок, причем исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком; экстраполируют векторы движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока; вставляют, в список наборов-кандидатов аффинных предикторов вектора движения (MVP), набор аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока; выбирают набор аффинных MVP в списке наборов-кандидатов аффинных MVP; сигнализируют, в битовом потоке, разницы векторов движения (MVD), которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP; и сигнализируют, в битовом потоке, индекс, указывающий позицию в списке наборов-кандидатов аффинных MVP выбранного набора аффинных MVP.
[0008] В другом примере это раскрытие описывает устройство для декодирования видеоданных, причем устройство содержит: память, сконфигурированную с возможностью сохранять видеоданные; и одну или более схем обработки, сконфигурированных с возможностью: выбирать исходный аффинный блок, причем исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком; экстраполировать векторы движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока; вставлять, в список наборов-кандидатов аффинных предикторов вектора движения (MVP), набор аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока; определять, на основе индекса, просигнализированного в битовом потоке, выбранный набор аффинных MVP в списке наборов-кандидатов аффинных MVP; получать, из битового потока, разницы векторов движения (MVD), которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP; и определять, на основе предикторов вектора движения, включенных в выбранный набор аффинных MVP, и упомянутых MVD, векторы движения контрольных точек текущего блока; генерировать, на основе векторов движения контрольных точек текущего блока, предсказательный блок; и реконструировать текущий блок на основе остаточных данных и предсказательного блока.
[0009] В другом примере это раскрытие описывает устройство для кодирования видеоданных, причем устройство содержит: память, сконфигурированную с возможностью сохранять видеоданные; и одну или более схем обработки, сконфигурированных с возможностью: выбирать исходный аффинный блок, причем исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком; экстраполировать векторы движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока; вставлять, в список наборов-кандидатов аффинных предикторов вектора движения (MVP), набор аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока; выбирать набор аффинных MVP в списке наборов-кандидатов аффинных MVP; сигнализировать, в битовом потоке, разницы векторов движения (MVD), которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP; и сигнализировать, в битовом потоке, индекс, указывающий позицию в списке наборов-кандидатов аффинных MVP выбранного набора аффинных MVP.
[0010] В другом примере это раскрытие описывает устройство для декодирования видеоданных, причем устройство содержит: средство для выбора исходного аффинного блока, причем исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком; средство для экстраполирования векторов движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока; средство для вставки, в список наборов-кандидатов аффинных предикторов вектора движения (MVP), набора аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока; средство для определения, на основе индекса, просигнализированного в битовом потоке, выбранного набора аффинных MVP в списке наборов-кандидатов аффинных MVP; средство для получения, из битового потока, разниц векторов движения (MVD), которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP; средство для определения, на основе предикторов вектора движения, включенных в выбранный набор аффинных MVP, и упомянутых MVD, векторов движения контрольных точек текущего блока; средство для генерирования, на основе векторов движения контрольных точек текущего блока, предсказательного блока; и средство для реконструкции текущего блока на основе остаточных данных и предсказательного блока.
[0011] В другом примере это раскрытие описывает устройство для кодирования видеоданных, причем устройство содержит: средство для выбора исходного аффинного блока, причем исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком; средство для экстраполирования векторов движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока; средство для вставки, в список наборов-кандидатов аффинного предиктора вектора движения (MVP), набора аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока; средство для выбора набора аффинных MVP в списке наборов-кандидатов аффинных MVP; средство для сигнализирования, в битовом потоке, разниц векторов движения (MVD), которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP; и средство для сигнализирования, в битовом потоке, индекса, указывающего позицию в списке наборов-кандидатов аффинных MVP выбранного набора аффинных MVP.
[0012] В другом примере это раскрытие описывает компьютерно-читаемый запоминающий носитель, хранящий инструкции, которые при исполнении побуждают одну или более схем обработки устройства для декодирования видео: выбрать исходный аффинный блок, причем исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком; экстраполировать векторы движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока; вставить, в список наборов-кандидатов аффинных предикторов вектора движения (MVP), набор аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока; определить, на основе индекса, просигнализированного в битовом потоке, выбранный набор аффинных MVP в списке наборов-кандидатов аффинных MVP; получить, из битового потока, разницы векторов движения (MVD), которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP; определить, на основе предикторов вектора движения, включенных в выбранный набор аффинных MVP, и упомянутых MVD, векторы движения контрольных точек текущего блока; генерировать, на основе векторов движения контрольных точек текущего блока, предсказательный блок; и реконструировать текущий блок на основе остаточных данных и предсказательного блока.
[0013] В другом примере это раскрытие описывает компьютерно-читаемый запоминающий носитель, хранящий инструкции, которые при исполнении побуждают одну или более схем обработки устройства для кодирования видеоданных, чтобы: выбрать исходный аффинный блок, причем исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком; экстраполировать векторы движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока; вставить, в список наборов-кандидатов аффинных предикторов вектора движения (MVP), набор аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока; выбрать набор аффинных MVP в списке наборов-кандидатов аффинных MVP; сигнализировать, в битовом потоке, разницы векторов движения (MVD), которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP; и сигнализировать, в битовом потоке, индекс, указывающий позицию в списке наборов-кандидатов аффинных MVP выбранного набора аффинных MVP.
[0014] Подробности одного или более аспектов раскрытия излагаются на сопроводительных чертежах и в описании ниже. Другие признаки, цели и преимущества методик, описанных в этом раскрытии, будут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0015] Фиг.1 изображает структурную схему, иллюстрирующую примерную систему кодирования и декодирования видео, которая может задействовать одну или более методик, описанных в этом раскрытии.
[0016] Фиг.2A изображает кандидаты пространственного соседнего вектора движения (MV) для режима объединения.
[0017] Фиг.2B изображает кандидаты пространственного соседнего вектора MV для режима улучшенного предсказания вектора движения (AMVP).
[0018] Фиг.3A изображает концептуальную схему, иллюстрирующую примерную методику для нахождения кандидата временного предиктора вектора движения (TMVP).
[0019] Фиг.3B изображает масштабирование вектора движения.
[0020] Фиг.4 изображает упрощенную аффинную модель движения для текущего блока.
[0021] Фиг.5 изображает аффинное векторное поле движения (MVF) для каждого подблока.
[0022] Фиг.6A изображает структурную схему, иллюстрирующую текущий блок и соседние блоки, используемые в AF_ПРОМЕЖУТОЧНОМ режиме.
[0023] Фиг.6B изображает примерный список наборов-кандидатов аффинных MVP, используемый в аффинной модели движения с 4 параметрами.
[0024] Фиг.7A изображает соседние блоки, используемые при кодировании текущего блока в режиме AF_ОБЪЕДИНЕНИЯ.
[0025] Фиг.7B изображает кандидаты для AF_ОБЪЕДИНЕНИЯ.
[0026] Фиг.8A изображает примерные блоки, используемые в аффинной модели движения с 6 параметрами.
[0027] Фиг.8B изображает примерный список наборов-кандидатов аффинных MVP, используемый в аффинной модели движения с 6 параметрами.
[0028] Фиг.9 изображает примерный список наборов-кандидатов аффинных MVP, который включает в себя экстраполированный набор MVP, в соответствии с методикой этого раскрытия.
[0029] Фиг.10 изображает предсказание движения подблока или предсказание параметра в соответствии с методикой этого раскрытия, где аффинное движение каждого подблока текущего блока может быть предсказано или непосредственно унаследовано от экстраполированного движения его собственных соседних блоков.
[0030] Фиг.11A изображает примерный список наборов-кандидатов аффинных MVP для аффинной модели движения с 4 параметрами в соответствии с методикой этого раскрытия.
[0031] Фиг.11B изображает примерный список наборов-кандидатов аффинных MVP для аффинной модели движения с 6 параметрами в соответствии с методикой этого раскрытия.
[0032] Фиг.12 изображает структурную схему, иллюстрирующую примерный кодер видео, который может осуществлять одну или более методик, описанных в этом раскрытии.
[0033] Фиг.13 изображает структурную схему, иллюстрирующую примерный декодер видео, который может осуществлять одну или более методик, описанных в этом раскрытии.
[0034] Фиг.14A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия.
[0035] Фиг.14B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия.
[0036] Фиг.15A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия.
[0037] Фиг.15B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия.
[0038] Фиг.16A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия.
[0039] Фиг.16B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия.
[0040] Фиг.17 изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия.
[0041] Фиг.18 изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия.
[0042] Фиг.19A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия.
[0043] Фиг.19B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия.
[0044] Фиг.20A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия.
[0045] Фиг.20B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия.
[0046] Фиг.21A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия.
[0047] Фиг.21B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ
[0048] Использование аффинных моделей движения было предложено для обеспечения дополнительного сжатия видеоданных. Аффинная модель движения для блока выражает вращение блока в последовательности изображений. Аффинная модель движения блока может быть определена на основе векторов движения контрольных точек блока. В некоторых осуществлениях контрольные точки блока являются верхним левым и верхним правым углами блока. В некоторых осуществлениях контрольные точки блока дополнительно включают в себя нижний левый угол блока. Видеокодер (т.е. кодер видео или декодер видео) может вычислять векторы движения подблоков блока на основе векторов движения контрольных точек блока.
[0049] Две первичные методики были предложены для сигнализирования векторов движения контрольных точек блока. Первой методикой является аффинный промежуточный режим. Второй методикой является аффинный режим объединения. В аффинном промежуточном режиме кодер видео генерирует список наборов-кандидатов аффинных предикторов вектора движения (MVP) для текущего блока. Список наборов-кандидатов аффинных MVP является списком наборов аффинных MVP. Каждый набор аффинных MVP является набором MVP, соответствующих различным контрольным точкам текущего блока. Кодер видео сигнализирует индекс, который идентифицирует для декодера видео выбранный набор аффинных MVP в списке наборов-кандидатов аффинных MVP. Дополнительно, кодер видео сигнализирует разницу векторов движения (MVD) для каждой из контрольных точек текущего блока. Вектор движения контрольной точки может быть равен MVD для контрольной точки плюс предиктор вектора движения для контрольной точки в выбранном наборе аффинных MVP. Кодер видео также сигнализирует опорный индекс, который идентифицирует опорное изображение, которое декодер видео использует с текущим блоком. Декодер видео генерирует тот же самый список наборов-кандидатов аффинных MVP и использует просигнализированный индекс, чтобы определить выбранный набор аффинных MVP. Декодер видео может добавлять MVD к векторам движения выбранного набора аффинных MVP, чтобы определить вектор движения контрольных точек текущего блока.
[0050] В аффинном режиме объединения кодер видео и декодер видео идентифицируют один и тот же исходный аффинный блок для текущего блока. Исходный аффинный блок может быть аффинно-кодированным блоком, который пространственно соседствует с текущим блоком. Кодер видео и декодер видео экстраполируют векторы движения контрольных точек текущего блока из векторов движения контрольных точек исходного аффинного блока. Например, кодер видео и декодер видео могут выстраивать аффинную модель движения, которая описывает векторы движения местоположений внутри текущего блока. Аффинная модель движения определена набором аффинных параметров. Кодер видео и декодер видео могут определять аффинные параметры на основе векторов движения контрольных точек текущего блока. Кодер видео и декодер видео могут определять векторы движения контрольных точек текущего блока на основе векторов движения контрольных точек исходного аффинного блока.
[0051] В соответствии с одной примерной методикой этого раскрытия, при генерировании списка наборов-кандидатов аффинных MVP в аффинном промежуточном режиме кодер видео может включать, в список наборов-кандидатов аффинных MVP для текущего блока, набор аффинных MVP, который определяет экстраполированные векторы движения контрольных точек исходного аффинного блока. В этом примере кодер видео может сигнализировать индекс для списка наборов-кандидатов аффинных MVP, MVD для каждой контрольной точки текущего блока и опорный индекс. Декодер видео может генерировать тот же самый список наборов-кандидатов аффинных MVP для текущего блока. Дополнительно, декодер видео использует индекс для списка наборов-кандидатов аффинных MVP, чтобы идентифицировать выбранный набор-кандидат аффинных MVP. Декодер видео может затем использовать MVD и предикторы вектора движения выбранного набора-кандидата аффинных MVP, чтобы определять векторы движения контрольных точек текущего блока. Кроме того, декодер видео может использовать векторы движения и опорное изображение, указанное опорным индексом, чтобы генерировать предсказательный блок для текущего блока. Декодер видео может использовать предсказательный блок для текущего блока, чтобы реконструировать текущий блок. Включение набора аффинных MVP, определяющего экстраполированные векторы движения контрольных точек исходного аффинного блока, в список наборов-кандидатов аффинных MVP текущего блока может увеличить эффективность кодирования.
[0052] Фиг.1 изображает структурную схему, иллюстрирующую примерную систему 10 кодирования и декодирования видео, которая может задействовать методики этого раскрытия. Как изображено на фиг.1, система 10 включает в себя устройство 12 источника, которое обеспечивает закодированные видеоданные, которые должны быть декодированы позже устройством 14 назначения. В частности, устройство 12 источника обеспечивает видеоданные устройству 14 назначения посредством компьютерно-читаемого носителя 16. Устройство 12 источника и устройство 14 назначения могут содержать любое устройство из широкого диапазона, включающего в себя настольные компьютеры, компьютеры-ноутбуки (т.е. лаптопы), планшетные компьютеры, ресиверы цифрового телевидения, телефонные трубки, такие как так называемые смартфоны, планшетные компьютеры, телевизоры, камеры, устройства отображения, цифровые проигрыватели мультимедиа, компьютерные игровые приставки, устройства для видеопотока или подобное. В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть оборудованы для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи. Устройство 12 источника является примерным устройством кодирования видео (т.е. устройством для кодирования видеоданных). Устройство 14 назначения является примерным устройством декодирования видео (т.е. устройством для декодирования видеоданных).
[0053] В примере с фиг.1 устройство 12 источника включает в себя источник 18 видео, носители 19 данных, сконфигурированные с возможностью сохранять видеоданные, кодер 20 видео и выходной интерфейс 22. Устройство 14 назначения включает в себя входной интерфейс 26, носители 28 данных, сконфигурированные с возможностью сохранять закодированное видеоданные, декодер 30 видео и устройство 32 отображения. В других примерах устройство 12 источника и устройство 14 назначения включают в себя другие компоненты или компоновки. Например, устройство 12 источника может принимать видеоданные от внешнего источника видео, такого как внешняя камера. Схожим образом, устройство 14 назначения может осуществлять интерфейс с внешним устройством отображения, вместо того чтобы включать в себя интегрированное устройство отображения.
[0054] Иллюстрируемая система 10 с фиг.1 является лишь одним примером. Методики для обработки видеоданных могут выполняться любым устройством кодирования и/или декодирования цифрового видео. Хотя в общем случае методики этого раскрытия выполняются устройством кодирования видео, методики могут также выполняться кодером/декодером видео, обычно называемым "кодеком". Устройство 12 источника и устройство 14 назначения являются лишь примерами таких устройств кодирования, в которых устройство 12 источника генерирует закодированные видеоданные для передачи к устройству 14 назначения. В некоторых примерах устройство 12 источника и устройство 14 назначения могут оперировать по существу симметричным образом так, что каждое из устройства 12 источника и устройства 14 назначения включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю или двустороннюю передачу видео между устройством 12 источника и устройством 14 назначения, например, для потока видео, проигрывания видео, широкого вещания видео или видеотелефонии.
[0055] Источник 18 видео устройства 12 источника может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или интерфейс источника видеосигнала, чтобы принимать видеоданные от поставщика видеосодержимого. В качестве дополнительной альтернативы, источник 18 видео может генерировать данные на основе компьютерной графики в качестве источника видео или комбинацию видео в реальном времени, видео из архива и компьютерно-генерируемого видео. Устройство 12 источника может содержать один или более запоминающих носителей (например, носителей 19), сконфигурированных с возможностью сохранять видеоданные. Методики, описанные в этом раскрытии, могут применяться к кодированию видео в общем и могут применяться к беспроводным и/или проводным приложениям. В каждом случае захватываемое, предварительно захваченное или компьютерно-генерируемое видео может кодироваться кодером 20 видео. Выходной интерфейс 22 может выводить закодированную видеоинформацию к компьютерно-читаемому носителю 16.
[0056] Выходной интерфейс 22 может содержать различные типы компонентов или устройств. Например, выходной интерфейс 22 может содержать беспроводной передатчик, модем, проводной сетевой компонент (например, Ethernet-карту) или другой физический компонент. В примерах, где выходной интерфейс 22 содержит беспроводной приемник, выходной интерфейс 22 может быть сконфигурирован с возможностью принимать данные, такие как битовый поток, модулированный согласно стандарту сотовый связи, такому как 4G, 4G-LTE, улучшенный LTE, 5G и т. п. В некоторых примерах, где выходной интерфейс 22 содержит беспроводной приемник, выходной интерфейс 22 может быть сконфигурирован с возможностью принимать данные, такие как битовый поток, модулированный согласно другим беспроводным стандартам, таким как спецификация IEEE 802.11, спецификация IEEE 802.15 (например, ZigBee™), стандарт Bluetooth™ и т. п. В некоторых примерах схемы выходного интерфейса 22 могут быть интегрированы в схемы кодера 20 видео и/или другие компоненты устройства 12 источника. Например, кодер 20 видео и выходной интерфейс 22 могут быть частями системы на кристалле (SoC). S°C может также включать в себя другие компоненты, такие как универсальный микропроцессор, графический процессор и так далее.
[0057] Устройство 14 назначения может принимать закодированные видеоданные, которые должны быть декодированы, посредством компьютерно-читаемого носителя 16. Компьютерно-читаемый носитель 16 может содержать любой тип носителя или устройства с возможностью перемещения закодированных видеоданных от устройства 12 источника к устройству 14 назначения. В некоторых примерах компьютерно-читаемый носитель 16 содержит носитель связи, чтобы обеспечить возможность устройству 12 источника передавать закодированные видеоданные непосредственно к устройству 14 назначения в реальном времени. Закодированные видеоданные могут модулироваться согласно стандарту связи, такому как протокол беспроводной связи, и передаваться к устройству 14 назначения. Носитель связи может содержать любой беспроводной или проводной носитель связи, такой как радиочастотный (RF) спектр или одну или более физических линий передачи. Носитель связи может формировать часть пакетной сети, такой как локальная сеть, широкомасштабная сеть или глобальная сеть, такая как Интернет. Носитель связи может включать в себя маршрутизаторы, переключатели, базовые станции или любое другое оборудование, которое может быть полезно, чтобы обеспечить возможность связи от устройства 12 источника к устройству 14 назначения. Устройство 14 назначения может содержать один или более запоминающих носителей, сконфигурированных с возможностью сохранять закодированные видеоданные и декодированные видеоданные.
[0058] В некоторых примерах закодированные данные могут выводиться из выходного интерфейса 22 к устройству хранения. Подобным образом, к закодированным данным может осуществляться доступ из устройства хранения посредством входного интерфейса. Устройство хранения может включать в себя любое из множества различных распределенных или локальных запоминающих носителей с возможностью доступа, таких как накопитель на жестких дисках, диски Blu-ray, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любые другие подходящие цифровые носители памяти для хранения закодированных видеоданных. В дополнительном примере устройство хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, которое может сохранять закодированное видео, генерируемое устройством 12 источника. Устройство 14 назначения может осуществлять доступ к сохраненным видеоданным из устройства хранения посредством потоков или загрузки. Файловый сервер может быть сервером любого типа с возможностью хранения закодированных видеоданных и передачи этих закодированных видеоданных к устройству 14 назначения. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), сервер FTP, устройства подключаемого к сети хранилища данных (NAS) или локальный дисковый накопитель. Устройство 14 назначения может осуществлять доступ к закодированным видеоданным посредством любого стандартного подключения к данным, включающего в себя Интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т. д.) или комбинацию того и другого, которая подходит для осуществления доступа к закодированным видеоданным, сохраненным на файловом сервере. Передача закодированных видеоданных от устройства хранения может быть потоковой передачей, передачей загрузки или их комбинацией.
[0059] Методики могут применяться к кодированию видео в поддержку любого из множества различных мультимедийных приложений, таких как эфирные телевизионные трансляции, кабельные телевизионные передачи, проводные передачи, спутниковые телевизионные передачи, видеопередачи через Интернет-поток, такой как динамический адаптивный поток через HTTP (DASH), цифровое видео, которое закодировано на запоминающий носитель, декодирование цифрового видео, сохраненного на запоминающем носителе, или другие приложения или комбинации вышеупомянутых примеров. В некоторых примерах система 10 может быть сконфигурирована с возможностью поддерживать одностороннюю или двустороннюю передачу видео, чтобы поддерживать приложения, такие как поток видео, проигрывание видео, широкое вещание видео и/или видеотелефония.
[0060] Компьютерно-читаемый носитель 16 может включать в себя переходные носители, такие как передача беспроводного широкого вещания или проводной сети, или носители памяти (то есть некратковременные носители памяти), такие как жесткий диск, флэш-накопитель, компакт-диск, цифровой видеодиск, диск Blu-ray или другие компьютерно-читаемые носители. В некоторых примерах сетевой сервер (не показан) может принимать закодированные видеоданные от устройства 12 источника и обеспечивать закодированные видеоданные устройству 14 назначения, например, посредством сетевой передачи. Подобным образом, вычислительное устройство среднего промышленного объекта, такого как объект печати дисков, может принимать закодированные видеоданные от устройства 12 источника и изготавливать диск, содержащий закодированные видеоданные. Таким образом, компьютерно-читаемый носитель 16 может пониматься как включающий в себя один или более компьютерно-читаемых носителей различных форм в различных примерах.
[0061] Входной интерфейс 26 устройства 14 назначения принимает информацию от компьютерно-читаемого носителя 16. Информация компьютерно-читаемого носителя 16 может включать в себя информацию синтаксиса, определенную кодером 20 видео кодера 20 видео, которая также используется декодером 30 видео, который включает в себя синтаксические элементы, которые описывают характеристики и/или обработку блоков и других закодированных единиц, например групп изображений (GOP). Входной интерфейс 26 может содержать различные типы компонентов или устройств. Например, входной интерфейс 26 может содержать беспроводной приемник, модем, проводной сетевой компонент (например, Ethernet-карту) или другой физический компонент. В примерах, где входной интерфейс 26 содержит беспроводной приемник, входной интерфейс 26 может быть сконфигурирован с возможностью принимать данные, такие как битовый поток, модулированный согласно стандарту сотовой связи, такой как 4G, 4G-LTE, улучшенный LTE, 5G и т. п. В некоторых примерах, где входной интерфейс 26 содержит беспроводной приемник, входной интерфейс 26 может быть сконфигурирован с возможностью принимать данные, такие как битовый поток, модулированный согласно другим беспроводным стандартам, таким как спецификация IEEE 802.11, спецификация IEEE 802.15 (например, ZigBee™), стандарт Bluetooth™ и т. п. В некоторых примерах схемы входного интерфейса 26 могут быть интегрированы в схемы декодера 30 видео и/или другие компоненты устройства 14 назначения. Например, декодер 30 видео и входной интерфейс 26 могут быть частями SoC. S°C может также включать в себя другие компоненты, такие как универсальный микропроцессор, графический процессор и так далее.
[0062] Носители 28 данных могут быть сконфигурированы с возможностью сохранять закодированные видеоданные, такие как закодированные видеоданные (например, битовый поток), принятые входным интерфейсом 26. Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое из множества различных устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на основе органических светоизлучающих диодов (OLED) или другой тип устройства отображения.
[0063] Каждый из кодера 20 видео и декодера 30 видео может осуществляться в качестве любой из множества различных подходящих схем кодера, таких как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программных средств, аппаратных средств, программно-аппаратных средств или любых их комбинаций. Когда методики осуществляются частично в программных средствах, устройство может сохранять инструкции для программных средств в подходящем некратковременном компьютерно-читаемом носителе и исполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы выполнять методики этого раскрытия. Каждый из кодера 20 видео и декодера 30 видео может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован в составе комбинированного кодера/декодера (кодека) в соответственном устройстве.
[0064] В некоторых примерах кодер 20 видео и декодер 30 видео могут оперировать согласно стандарту кодирования видео, такому как существующий или будущий стандарт. Примерные стандарты кодирования видео включают в себя, но не ограничиваются, ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включающий в себя его расширения масштабируемого кодирования видео (SVC) и многовидового кодирования видео (MVC). Дополнительно, новый стандарт кодирования видео, а именно высокоэффективное кодирование видео (HEVC) или ITU-T H.265, включающий в себя его расширения диапазона и кодирования содержимого экрана, кодирование 3D-видео (3D-HEVC) и многовидовые расширения (MV-HEVC) и масштабируемое расширение (SHVC), в последнее время был разработан Командой объединенного сотрудничества по кодированию видео (JCT-VC), а также Командой объединенного сотрудничества по разработке расширения кодирования 3D-видео (JCT-3V) Экспертной группы по вопросам кодирования видео (VCEG) ITU-T и Экспертной группы по вопросам движущегося изображения (MPEG) ISO/IEC. Проект спецификации HEVC, далее называемый как HEVC WD, доступен в работе Ван и др. "Отчет о неисправностях высокоэффективного кодирования видео (HEVC)", Команда объединенного сотрудничества по кодированию видео (JCT-VC) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11, 14-я конференция, Вена, AT, с 25 июля по 2 августа 2013 г., документ JCTVC-N1003_v1, доступный по ссылке http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip. HEVC также опубликован в виде рекомендации ITU-T H.265, серия H: аудиовизуальные и мультимедийные системы, инфраструктура аудиовизуальных сервисов - кодирование движущегося видео, высокоэффективное кодирование видео, декабрь 2016 г.
[0065] ITU-T VCEG (Q6/16) и ISO/IEC MPEG (JTC 1/SC 29/WG 11) сейчас изучают потенциальную необходимость в стандартизации будущей технологии кодирования видео с возможностью сжатия, которая существенно превосходит возможность сжатия текущего стандарта HEVC (включая его текущие расширения и расширения ближайшего будущего для кодирования содержимого экрана и кодирования большого динамического диапазона). Группы работают вместе над этим исследованием в инициативе объединенного сотрудничества, известной как Команда объединенного исследования видео (JVET), чтобы оценить проектирования технологии сжатия, предлагаемые их экспертами в этой области. JVET впервые осуществили встречу 19-21 октября 2015 г. Последняя версия соответствующего программного обеспечения, т.е. Модель объединенного исследования 3 (JEM 3), может быть скачана по ссылке: https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-3.0/. J. Chen, E. Alshina, G. J. Sullivan, J.-R. Ом, J. Boyce, "Описание алгоритма опытной модели объединенного исследования 3", JVET-C1001, май 2016 г. (далее "JVET-C1001"), включает в себя описание алгоритма опытной модели объединенного исследования 3 (JEM3.0).
[0066] В HEVC и других спецификациях кодирования видео видеоданные включают в себя последовательность изображений. Изображения могут также называться "кадрами". Изображение может включать в себя один или более массивов образцов. Каждый соответственный массив образцов изображения может содержать массив образцов для соответственного цветового компонента. В HEVC изображение может включать в себя три массива образцов, обозначенных SL, SCb и SCr. SL - двухмерный массив (т.е. блок) образцов яркости. SCb - двухмерный массив образцов цветности Cb. SCr - двухмерный массив образцов цветности Cr. В других случаях изображение может быть монохромным и может включать в себя только массив образцов яркости.
[0067] В составе кодирования видеоданных кодер 20 видео может кодировать изображения видеоданных. Иными словами, кодер 20 видео может генерировать закодированные представления изображений видеоданных. Закодированное представление изображения может называться здесь "кодированным изображением" или "закодированным изображением".
[0068] Чтобы генерировать закодированное представление изображения, кодер 20 видео может кодировать блоки изображения. Кодер 20 видео может включать в себя, в битовом потоке, закодированное представление видеоблока. Например, чтобы генерировать закодированное представление изображения, кодер 20 видео может разделять каждый массив образцов изображения на блоки дерева кодирования (CTB) и кодировать CTB. CTB может быть блоком NxN образцов в массиве образцов изображения. В основном профиле HEVC размер CTB может быть в диапазоне от 16×16 до 64×64, хотя формально могут поддерживаться размеры CTB 8×8.
[0069] Единица дерева кодирования (CTU) изображения может содержать один или более CTB и может содержать синтаксические структуры, используемые, чтобы кодировать образцы одного или более CTB. Например, каждая CTU может содержать CTB образцов яркости, два соответствующих CTB образцов цветности и синтаксические структуры, используемые, чтобы кодировать образцы CTB. В монохромных изображениях или изображениях, имеющих три отдельные цветовые плоскости, CTU может содержать единственный CTB и синтаксические структуры, используемые, чтобы кодировать образцы CTB. CTU может также называться "блоком дерева" или "наибольшей единицей кодирования" (LCU). В этом раскрытии "синтаксическая структура" может быть определена как ноль или более синтаксических элементов, присутствующих вместе в битовом потоке в определенном порядке. В некоторых кодеках закодированным изображением является закодированное представление, содержащее все CTU изображения.
[0070] Чтобы кодировать CTU изображения, кодер 20 видео может разделять CTB из CTU на один или более блоков кодирования. Блоком кодирования является блок NxN образцов. В некоторых кодеках, чтобы кодировать CTU изображения, кодер 20 видео может рекурсивно выполнять квадродревовидное разделение над блоками дерева кодирования CTU, чтобы разделить CTB на блоки кодирования, из чего и следует наименование "единицы дерева кодирования". Единица кодирования (CU) может содержать один или более блоков кодирования и синтаксические структуры, используемые, чтобы кодировать образцы одного или более блоков кодирования. Например, CU может содержать блок кодирования образцов яркости и два соответствующих блока кодирования образцов цветности изображения, которое имеет массив образцов яркости, массив образцов Cb и массив образцов Cr и синтаксические структуры, используемые, чтобы кодировать образцы блоков кодирования. В монохромных изображениях или изображениях, имеющих три отдельные цветовые плоскости, CU может содержать единственный блок кодирования и синтаксические структуры, используемые, чтобы кодировать образцы блока кодирования.
[0071] Кроме того, кодер 20 видео может кодировать CU изображения из видеоданных. В некоторых кодеках в составе кодирования CU кодер 20 видео может разделять блок кодирования CU на один или более блоков предсказания. Блок предсказания является прямоугольным (т.е. квадратным или неквадратным) блоком образцов, на котором применяется одно и то же предсказание. Единица предсказания (PU) из CU может содержать один или более блоков предсказания CU и синтаксические структуры, используемые, чтобы предсказывать один или более блоков предсказания. Например, PU может содержать блок предсказания образцов яркости, два соответствующих блока предсказания образцов цветности и синтаксические структуры, используемые, чтобы предсказывать блоки предсказания. В монохромных изображениях или изображениях, имеющих три отдельных цветовых плоскости, PU может содержать единственный блок предсказания и синтаксические структуры, используемые, чтобы предсказывать блок предсказания.
[0072] Кодер 20 видео может генерировать предсказательный блок (например, предсказательный блок яркости, Cb и Cr) для блока предсказания (например, блока предсказания яркости, Cb и Cr) CU. Кодер 20 видео может использовать внутреннее предсказание или промежуточное предсказание, чтобы генерировать предсказательный блок. Если кодер 20 видео использует внутреннее предсказание, чтобы генерировать предсказательный блок, кодер 20 видео может генерировать предсказательный блок на основе декодированных образцов изображения, которое включает в себя CU. Если кодер 20 видео использует промежуточное предсказание, чтобы генерировать предсказательный блок CU текущего изображения, кодер 20 видео может генерировать предсказательный блок CU на основе декодированных образцов опорного изображения (т.е. изображения помимо текущего изображения).
[0073] В HEVC и конкретных других кодеках кодер 20 видео кодирует CU с использованием только одного режима предсказания (т.е. внутреннего предсказания или промежуточного предсказания). Таким образом, в HEVC и конкретных других кодеках кодер 20 видео может генерировать предсказательные блоки CU с использованием внутреннего предсказания или кодер 20 видео может генерировать предсказательные блоки CU с использованием промежуточного предсказания. Когда кодер 20 видео использует промежуточное предсказание, чтобы кодировать CU, кодер 20 видео может разделять CU на 2 или 4 PU, или одна PU соответствует всей CU. Когда две PU присутствуют в одной CU, две PU могут быть прямоугольниками половинного размера или двумя размерами прямоугольника с ¼ или ¾ размера CU. В HEVC есть восемь режимов разделения для CU, закодированного промежуточным режимом предсказания, т.е. РАЗД_2Nx2N, РАЗД_2NxN, РАЗД_Nx2N, РАЗД_NxN, РАЗД_2NxnU, РАЗД_2NxnD, РАЗД_nLx2N и РАЗД_nRx2N. Когда CU является внутренне предсказанным, 2Nx2N и NxN являются единственными допустимыми формами PU, и внутри каждой PU единственный внутренний режим предсказания кодируется (в то время как режим предсказания цветности сигнализируется на уровне CU).
[0074] Кодер 20 видео может генерировать один или более остаточных блоков для CU. Например, кодер 20 видео может генерировать остаточный блок яркости для CU. Каждый образец в остаточном блоке яркости CU указывает разницу между образцом яркости в одном из предсказательных блоков яркости CU и соответствующим образцом в исходном блоке кодирования яркости CU. Дополнительно, кодер 20 видео может генерировать остаточный блок Cb для CU. Каждый образец в остаточном блоке Cb CU может указывать разницу между образцом Cb в одном из предсказательных блоков Cb CU и соответствующим образцом в исходном блоке кодирования Cb CU. Кодер 20 видео может также генерировать остаточный блок Cr для CU. Каждый образец в остаточном блоке Cr CU может указывать разницу между образцом Cr в одном из предсказательных блоков Cr CU и соответствующим образцом в исходном блоке кодирования Cr CU.
[0075] Кроме того, кодер 20 видео может разлагать остаточные блоки CU на один или более блоков преобразования. Например, кодер 20 видео может использовать квадродревовидное разделение, чтобы разлагать остаточные блоки CU на один или более блоков преобразования. Блок преобразования является прямоугольным (например, квадратным или неквадратным) блоком образцов, на котором применяется одно и то же преобразование. Единица преобразования (TU) CU может содержать один или более блоков преобразования. Например, TU может содержать блок преобразования образцов яркости, два соответствующих блока преобразования образцов цветности и синтаксические структуры, используемые, чтобы преобразовывать образцы блока преобразования. Таким образом, каждая TU в CU может иметь блок преобразования яркости, блок преобразования Cb и блок преобразования Cr. Блок преобразования яркости TU может быть подблоком остаточного блока яркости CU. Блок преобразования Cb может быть подблоком остаточного блока Cb CU. Блок преобразования Cr может быть подблоком остаточного блока CU Cr. В монохромных изображениях или изображениях, имеющих три отдельные цветовые плоскости, TU может содержать единственный блок преобразования и синтаксическую структуру, используемую, чтобы преобразовывать образцы блока преобразования.
[0076] Кодер 20 видео может применять одно или более преобразований к блоку преобразования TU, чтобы генерировать блок коэффициентов для TU. Блок коэффициентов может быть двухмерным массивом коэффициентов преобразования. Коэффициент преобразования может быть скалярной величиной. В некоторых примерах одно или более преобразований конвертирует блок преобразования из области пикселов в частотную область. Таким образом, в таких примерах коэффициент преобразования может быть скалярной величиной, считающейся находящейся в частотной области. Уровень коэффициента преобразования - это целая величина, представляющая значение, ассоциированное с конкретным двухмерным индексом частоты в процессе декодирования перед масштабированием для вычисления значения коэффициента преобразования.
[0077] В некоторых примерах кодер 20 видео пропускает применение преобразований к блоку преобразования. В таких примерах кодер 20 видео может обращаться со значениями остаточных образцов тем же самым образом, что и с коэффициентами преобразования. Таким образом, в примерах, где кодер 20 видео пропускает применение преобразований, следующее рассмотрение коэффициентов преобразования и блоков коэффициентов может быть применимо для преобразования блоков остаточных образцов.
[0078] После генерирования блока коэффициентов, кодер 20 видео может квантовать блок коэффициентов. Квантование в общем случае ссылается на процесс, в котором коэффициенты преобразования квантуются, чтобы возможным образом уменьшить количество данных, используемых, чтобы представить коэффициенты преобразования, обеспечивая дополнительное сжатие. В некоторых примерах кодер 20 видео пропускает квантование. После того как кодер 20 видео квантует блок коэффициентов, кодер 20 видео может генерировать синтаксические элементы, указывающие квантованные коэффициенты преобразования. Кодер 20 видео может энтропийно кодировать один или более из синтаксических элементов, указывающих квантованные коэффициенты преобразования. Например, кодер 20 видео может выполнять контекстно-адаптивное двоичное арифметическое кодирование (CABAC) над синтаксическими элементами, указывающими квантованные коэффициенты преобразования. Таким образом, закодированный блок (например, закодированная CU) может включать в себя энтропийно закодированные синтаксические элементы, указывающие квантованные коэффициенты преобразования.
[0079] Кодер 20 видео может выводить битовый поток, который включает в себя закодированные видеоданные. Иными словами, кодер 20 видео может выводить битовый поток, который включает в себя закодированное представление видеоданных. Например, битовый поток может содержать последовательность бит, которая формирует представление закодированных изображений видеоданных и ассоциированных данных. В некоторых примерах представление кодированных изображений может включать в себя закодированные представления блоков.
[0080] Битовый поток может содержать последовательность единиц сетевого уровня абстракции (NAL). Единица NAL является синтаксической структурой, содержащей указание типа данных в единице NAL, и байты, содержащие эти данные в форме полезной нагрузки необработанной последовательности байтов (RBSP), смешанные при необходимости с битами предотвращения эмуляции. Каждая из единиц NAL может включать в себя заголовок единицы NAL и заключает в себе RBSP. Заголовок единицы NAL может включать в себя синтаксический элемент, указывающий код типа единицы NAL. Код типа единицы NAL, определенный заголовком единицы NAL для единицы NAL, указывает тип единицы NAL. RBSP может быть синтаксической структурой, содержащей целое количество байт, которые заключены внутри единицы NAL. В некоторых случаях RBSP включает в себя нулевые биты.
[0081] Декодер 30 видео может принимать битовый поток, генерируемый кодером 20 видео. Как отмечено выше, битовый поток может содержать закодированное представление видеоданных. Декодер 30 видео может декодировать битовый поток, чтобы реконструировать изображения видеоданных. В составе декодирования битового потока декодер 30 видео может синтаксически анализировать битовый поток, чтобы получать синтаксические элементы из битового потока. Декодер 30 видео может реконструировать изображения видеоданных на основе по меньшей мере частично синтаксических элементов, полученных из битового потока. Процесс для реконструкции изображений видеоданных может быть в общем случае обратным процессу, выполняемому кодером 20 видео, чтобы кодировать изображения. Например, декодер 30 видео может использовать промежуточное предсказание или внутреннее предсказание, чтобы генерировать один или более предсказательных блоков для каждой PU текущей CU, может использовать векторы движения PU, чтобы определить предсказательные блоки для PU текущей CU. Дополнительно, декодер 30 видео может осуществлять обратное квантование блоков коэффициентов TU текущей CU. Декодер 30 видео может выполнять обратные преобразования блоков коэффициентов, чтобы реконструировать блоки преобразования TU текущей CU. В некоторых примерах декодер 30 видео может реконструировать блоки кодирования текущей CU путем добавления образцов предсказательных блоков для PU текущей CU к соответствующим декодированным образцам блоков преобразования TU текущей CU. Путем реконструкции блоков кодирования для каждой CU изображения декодер 30 видео может реконструировать изображение.
[0082] Срез изображения может включать в себя целое количество CTU изображения. CTU среза могут быть упорядочены последовательно в порядке сканирования, таком как порядок растрового сканирования. В HEVC срез определен как целое количество CTU, содержащихся в одном независимом сегменте среза и всех последующих зависимых сегментах среза (если таковые присутствуют), которые предшествуют следующему независимому сегменту среза (если таковой присутствует) внутри одной и той же единицы доступа. Кроме того, в HEVC сегмент среза определен как целое количество единиц дерева кодирования, упорядоченных последовательно при сканировании фрагментов и содержащихся в единственной единице NAL. Сканирование фрагментов является конкретным последовательным упорядочиванием CTB, разбивающим изображение, в котором CTB упорядочены последовательно в растровом сканировании CTB во фрагменте, в то время как фрагменты в изображении упорядочены последовательно при растровом сканировании фрагментов изображения. Фрагментом (tile) является прямоугольная область CTB внутри конкретного столбца фрагментов и конкретной строки фрагментов в изображении. Заголовок сегмента среза входит в состав закодированного сегмента среза, содержащего элементы данных, относящиеся к первому или всем единицам дерева кодирования, представленным в сегменте среза. Термин "заголовок среза" применяется к заголовку сегмента среза независимого сегмента среза, который является текущим сегментом среза или наиболее недавним независимым сегментом среза, который предшествует текущему зависимому сегменту среза в порядке декодирования.
[0083] Как кратко упомянуто выше, в HEVC наибольшая единица кодирования в срезе называется блоком дерева кодирования (CTB) или единицей дерева кодирования (CTU). CTB содержит квадродерево, узлы которого являются единицами кодирования. Размер CTB может быть в диапазоне от 16×16 до 64×64 в основном профиле HEVC (хотя формально могут поддерживаться размеры CTB 8×8). Единица кодирования (CU) может быть того же самого размера CTB и иметь малый размер вплоть до 8×8. Каждая единица кодирования кодируется с одним режимом. Когда CU кодируется промежуточным образом, CU может дополнительно быть разделена на 2 или 4 единицы предсказания (PU) или стать только одной PU, когда дополнительное разделение неприменимо. Когда две PU присутствуют в одной CU, PU могут быть прямоугольниками половинного размера или двумя размерами прямоугольника ¼ или ¾ размера CU. Когда CU кодируется промежуточным образом, один набор информации движения присутствует для каждой PU. Дополнительно, каждая PU кодируется с уникальным режимом промежуточного предсказания, чтобы найти набор информации движения. В некоторых стандартах кодирования видео, CU не разделяется на множество PU. Следовательно, в таких стандартах кодирования видео нет различия между PU и CU. Таким образом, когда методики этого раскрытия применяются в таких стандартах, рассмотрение PU может быть применимо к CU.
[0084] Видеокодер может выполнять однонаправленное промежуточное предсказание или двунаправленное промежуточное предсказание для текущего блока (например, CU или PU). При выполнении однонаправленного промежуточного предсказания для текущего блока видеокодер использует вектор движения, чтобы определить местоположение в опорном изображении. Видеокодер может затем генерировать предсказательный блок для текущего блока. Предсказательный блок может содержать блок образцов в опорном изображении в местоположении, указанном вектором движения, или блок образцов, интерполированный из образцов опорного изображения. При выполнении двунаправленного промежуточного предсказания видеокодер может выполнять этот процесс со вторым опорным изображением и вторым вектором движения, тем самым генерируя второй предсказательный блок для текущего блока. В двунаправленном промежуточном предсказании предсказательные блоки, генерируемые из одиночных опорных изображений, могут называться здесь предварительными предсказательными блоками. Кроме того, в двунаправленном промежуточном предсказании видеокодер может генерировать, на основе двух предварительных блоков, окончательный предсказательный блок для текущего блока. В некоторых примерах видеокодер может генерировать окончательный предсказательный блок так, что каждый образец в окончательном предсказательном блоке является средневзвешенным значением соответствующих образцов в предварительных предсказательных блоках.
[0085] Для поддержки промежуточного предсказания в изображении видеокодер генерирует два списка опорных изображений для данного изображения. Списки опорных изображений для данного изображения включают в себя опорные изображения, которые доступны для использования в выполнении промежуточного предсказания блоков в изображении. Два списка опорных изображений обычно называются Списком 0 и Списком 1. В одном примере каждое опорное изображение в Списке 0 изображения встречается до изображения в порядке вывода. В этом примере каждое опорное изображение в Списке 1 изображения встречается после изображения в порядке вывода. Следовательно, использование опорного изображения в Списке 0 может рассматриваться как первое направление промежуточного предсказания, а использование опорного изображения в Списке 1 может рассматриваться как второе направление промежуточного предсказания. Кодер 20 видео и декодер 30 видео генерируют Список 0 изображения с опорными изображениями в том же самом порядке. Схожим образом, кодер 20 видео и декодер 30 видео генерируют Список 1 изображения с опорными изображениями в том же самом порядке. Таким образом, кодер 20 видео может указывать декодеру 30 видео опорное изображение в списке опорных изображений путем сигнализирования опорного индекса, который указывает местоположение в списке опорных изображений данного опорного изображения.
[0086] Стандарт HEVC обеспечивает множество промежуточных режимов предсказания, включающих в себя режим объединения и режим улучшенного предсказания вектора движения (AMVP). В режиме объединения кодер 20 видео и декодер 30 видео генерируют совпадающие списки кандидатов объединения вектора движения (MV) для PU. Список кандидатов объединения MV для PU включает в себя один или более кандидатов объединения, которые могут также называться предикторами вектора движения (MVP). В HEVC список кандидатов объединения MV содержит вплоть до 5 кандидатов объединения. Каждый соответственный кандидат объединения в списке кандидатов объединения MV определяет один или более векторов движения и один или более опорных индексов. Например, кандидат объединения может определять вектор движения Списка 0 и/или вектор движения Списка 1 и может определять опорный индекс Списка 0 и/или опорный индекс Списка 1. Вектор движения Списка 0 является вектором движения, который указывает местоположение в опорном изображении в Списке 0. Вектор движения Списка 1 является вектором движения, который указывает местоположение в опорном изображении в Списке 1. Кодер 20 видео может сигнализировать индекс объединения, который указывает местоположение в списке кандидатов объединения MV выбранного кандидата объединения для PU. Декодер 30 видео может использовать индекс объединения, чтобы идентифицировать выбранный кандидат объединения. Декодер 30 видео может затем использовать векторы движения и опорные индексы выбранного кандидата объединения в качестве векторов движения и опорных индексов PU.
[0087] В режиме AMVP кодер 20 видео генерирует список кандидатов AMVP Списка 0 и/или список кандидатов AMVP Списка 1 для PU, любой из которых может называться списком кандидатов AMVP. Декодер 30 видео генерирует списки кандидатов AMVP, совпадающие со списками кандидатов AMVP, генерируемыми кодером 20 видео. В HEVC список кандидатов AMVP содержит два кандидата AMVP. Каждый соответственный кандидат AMVP в списке кандидатов AMVP Списка 0 определяет соответственный вектор движения Списка 0. Каждый соответственный кандидат AMVP в списке кандидатов AMVP Списка 1 определяет соответственный вектор движения Списка 1. В режиме AMVP, если PU однонаправленным образом промежуточно предсказывается из Списка 0 или двунаправленным образом промежуточно предсказывается, кодер 20 видео сигнализирует индекс MVP Списка 0, опорный индекс Списка 0 и разницу векторов движения (MVD) Списка 0. Индекс MVP Списка 0 определяет местоположение выбранного кандидата AMVP в списке кандидатов AMVP Списка 0. Опорный индекс Списка 0 определяет местоположение выбранного опорного изображения Списка 0. MVD Списка 0 определяет разницу между вектором движения Списка 0 PU и вектором движения Списка 0, определенным выбранным кандидатом AMVP в списке кандидатов AMVP Списка 0. Соответственно, декодер 30 видео может использовать индекс MVP Списка 0 и MVD Списка 0, чтобы определить вектор движения Списка 0 PU. Декодер видео 30 может затем определять предварительный или окончательный предсказательный блок для PU, содержащий образцы, соответствующие местоположению в выбранном опорном изображении Списка 0, идентифицированному вектором движения Списка 0 PU. Кодер 20 видео может сигнализировать подобные синтаксические элементы для Списка 1, и декодер 30 видео может использовать синтаксические элементы для Списка 1 подобным образом.
[0088] Как можно увидеть выше, кандидат объединения соответствует полному набору информации движения, в то время как кандидат AMVP содержит всего один вектор движения для конкретного направления предсказания. Кандидаты для обоих из режима объединения и режима AMVP могут быть найдены подобным образом из одних и тех же пространственных и временных соседних блоков.
0
[0089] Пространственные кандидаты MV находятся из соседних блоков, изображенных на фиг.2A и фиг.2B, для конкретной PU (PU), хотя способы, генерирующие кандидаты из блоков, различаются для режимов объединения и AMVP. Фиг.2A изображает пространственные соседние кандидаты MV для режима объединения. В режиме объединения вплоть до четырех пространственных кандидатов MV может быть найдено в порядке, изображенном на фиг.2A посредством номеров, и порядок следующий: левый (0), верхний (1), верхний правый (2), нижней левый (3) и верхний левый (4).
[0090] Фиг.2B изображает пространственные соседние кандидаты MV для режима AMVP. В режиме AMVP соседние блоки разделены на две группы: левую группу, состоящую из блока 0 и 1, и верхнюю группу, состоящую из блоков 2, 3 и 4, как показано на фиг.2B. Для каждой группы потенциальный кандидат в соседнем блоке со ссылкой на то же самое опорное изображение, что и указанное просигнализированным опорным индексом, имеет наивысший приоритет для выбора, чтобы сформировать окончательный кандидат группы. Например, в составе генерирования списка кандидатов AMVP Списка 0 видеокодер проверяет, предсказывается ли блок 0 из Списка 0, и, если да, является ли опорное изображение Списка 0 из блока 0 тем же самым, что и опорное изображение Списка 0 текущей PU. Если блок 0 предсказывается из Списка 0 и опорное изображение Списка 0 блока 0 то же самое, что и опорное изображение Списка 0 текущей PU, видеокодер включает вектор движения Списка 0 блока 0 в список кандидатов AMVP Списка 0. Если нет, видеокодер проверяет, предсказывается ли блок 0 из Списка 1, и, если да, является ли опорное изображение Списка 1 блока 0 тем же самым, что и опорное изображение Списка 0 текущей PU. Если блок 0 предсказывается из Списка 0 и опорное изображение Списка 1 блока 0 то же самое, что и опорное изображение Списка 0 текущей PU, видеокодер включает вектор движения Списка 1 блока 0 в список кандидатов AMVP Списка 0. Если опорное изображение Списка 1 блока 0 не то же самое, что и опорное изображение Списка 0 текущей PU, видеокодер повторяет этот процесс с блоком 1 вместо блока 0.
[0091] Однако, если блок 1 не предсказывается из Списка 1 или опорное изображение Списка 1 блока 1 не то же самое, что и опорное изображение Списка 0 текущей PU, видеокодер определяет, предсказывается ли блок 0 из Списка 0, и, если так, определяет, являются ли опорное изображение Списка 0 блока 0 и опорное изображение Списка 0 текущей PU двумя долговременными опорными изображениями или двумя кратковременными опорными изображениями. Если опорное изображение Списка 0 блока 0 и опорное изображение Списка 0 текущей PU являются двумя долговременными опорными изображениями или опорное изображение Списка 0 блока 0 и опорное изображение Списка 0 текущей PU являются двумя кратковременными опорными изображениями, видеокодер может масштабировать вектор движения Списка 0 блока 0 на основе временной разницы между опорным изображением Списка 0 блока 0 и опорным изображением Списка 0 текущей PU. Видеокодер включает масштабированный вектор движения Списка 0 в список кандидатов AMVP Списка 0. Если опорное изображение Списка 0 блока 0 является долговременным опорным изображением, а опорное изображение Списка 0 текущей PU является кратковременным опорным изображением или наоборот, видеокодер определяет, предсказывается ли блок 0 из Списка 1, и, если так, определяет, являются ли опорное изображение Списка 1 блока 0 и опорное изображение Списка 0 текущей PU двумя долговременными опорными изображениями или двумя кратковременными опорными изображениями. Если опорное изображение Списка 1 блока 0 и опорное изображение Списка 0 текущей PU являются двумя долговременными опорными изображениями или опорное изображение Списка 1 блока 0 и опорное изображение Списка 0 текущей PU являются двумя кратковременными опорными изображениями, видеокодер может масштабировать вектор движения Списка 1 блока 0 на основе временной разницы между опорным изображением Списка 1 блока 0 и опорным изображением Списка 0 текущей PU. Видеокодер включает масштабируемый вектор движения Списка 0 в список кандидатов AMVP Списка 0. Если опорное изображение Списка 1 блока 0 является долговременным опорным изображением, а опорное изображение Списка 0 текущей PU является кратковременным опорным изображением или наоборот, видеокодер повторяет этот процесс с блоком 1 вместо блока 0.
[0092] Видеокодер может выполнять подобный процесс для блоков 2, 3 и 4, чтобы включить второй кандидат в список кандидатов AMVP Списка 0 текущей PU. Дополнительно, видеокодер может повторять весь этот процесс, заменяя ссылки на Список 0 Списком 1 и ссылки на Список 1 Списком 0, чтобы генерировать список кандидатов AMVP Списка 1 текущей PU.
[0093] Таким образом, в режиме AVMP соседние блоки разделены на две группы: левую группу, состоящую из блока 0 и 1, и верхнюю группу, состоящую из блоков 2, 3 и 4, как показано на фиг.2B. Для каждой группы потенциальный кандидат в соседнем блоке, ссылающийся на то же самое опорное изображение, которое указано просигнализированным опорным индексом, имеет наивысший приоритет в выборе для формирования окончательного кандидата группы. Возможно, что все соседние блоки не содержат вектор движения, указывающий на то же самое опорное изображение. Таким образом, если такой кандидат не может быть найден, первый доступный кандидат может быть масштабирован, чтобы сформировать окончательный кандидат; таким образом, разницы временного расстояния могут быть компенсированы.
[0094] Видеокодер может включать кандидат временного предиктора вектора движения (TMVP), если он разрешен и доступен, в список кандидатов MV объединения после пространственных кандидатов вектора движения или в список кандидатов AMVP. Например, в случае AMVP видеокодер может включать кандидат TMVP в список кандидатов AMVP, если пространственные соседние блоки недоступны (например, поскольку пространственные соседние блоки находятся вне границы изображения, среза или фрагмента, поскольку пространственные соседние блоки предсказываются внутренним образом, и т. д.). В режиме объединения кандидат TMVP может определять векторы движения Списка 0 и/или Списка 1 временного соседнего блока. Опорные индексы для кандидата TMVP в режиме объединения всегда устанавливаются на 0. В режиме AMVP кандидат TMVP определяет либо вектор движения Списка 0 временного соседнего блока, либо вектор движения Списка 1 временного соседнего блока. Временный соседний блок является блоком в опорном изображении. Процесс нахождения вектора движения для кандидата TMVP может быть одним и тем же для обоих режимов объединения и AMVP.
[0095] Фиг.3A изображает концептуальную схему, иллюстрирующую примерную методику для нахождения кандидата TMVP. Как изображено на фиг.3A, первичное местоположение блока для нахождения кандидата TMVP является нижним правым блоком 300 вне совмещенной PU. Временный соседний блок, из которого видеокодер находит кандидат TMVP, совмещен с нижним правым блоком 300. В примере с фиг.3A нижний правый блок 300 помечен как блок "T", что означает "временный". Видеокодер использует нижний правый блок 300 вместо верхних или левых блоков для того, чтобы возместить предпочтение верхних и левых блоков, используемых, чтобы генерировать пространственные соседние кандидаты. Если нижний правый блок 300 расположен вне текущей строки CTB или информация движения недоступна (например, потому, что временный опорный блок, совмещенный с нижним правым блоком 300, предсказывается внутренним образом), нижний правый блок 300 заменяется центральным блоком 302 PU.
[0096] Вектор движения для кандидата TMVP находится из совмещенной PU так называемого "совмещенного изображения". изображение может быть указано на уровне среза (например, с использованием синтаксического элемента collocated_ref_idx). Вектор движения для совмещенной PU называется совмещенным MV. Подобно временному прямому режиму в H.264/AVC, чтобы найти вектор движения кандидата TMVP, совмещенный MV может быть масштабирован, чтобы компенсировать разницы временного расстояния, как показано на фиг.3B. В частности, на фиг.3B при кодировании текущего блока 320 текущего изображения 322 видеокодер определяет совмещенный блок 323 в совмещенном изображении 324. Вектор движения 326 совмещенного блока 323 (т.е. совмещенный вектор движения) указывает местоположение в совмещенном опорном изображении 328. Видеокодер генерирует TMVP 330 путем масштабирования вектора движения 326 на основе разницы между совмещенным временным расстоянием и текущим временным расстоянием. Совмещенное временное расстояние является временным расстоянием между совмещенным изображением 324 и совмещенным опорным изображением 328. Текущее временное расстояние является временным расстоянием между текущим изображением 322 и текущим опорным изображением 332.
[0097] Как отмечено выше, видеокодер может масштабировать вектор движения. При масштабировании вектора движения предполагается, что значение вектора движения пропорционально расстоянию изображений во временном представлении. Вектор движения ассоциирует два изображения: опорное изображение и изображение, содержащее вектор движения (то есть вмещающее изображение). Когда вектор движения используется, чтобы предсказать другой вектор движения, расстояние вмещающего изображения и опорного изображения вычисляется на основе значений порядка изображений (POC) опорного изображения и вмещающего изображения.
[0098] Для того чтобы предсказать вектор движения, оба из его ассоциированных вмещающего изображения и опорного изображения могут быть различными. Таким образом, новое расстояние (на основе POC) вычисляется. Вектор движения масштабируется на основе этих двух расстояний POC. Для пространственного соседнего кандидата вмещающие изображения для двух векторов движения одинаковы, в то время как опорные изображения различны. В HEVC масштабирование вектора движения применяется к обоим из TMVP и AMVP для пространственных и временных соседних кандидатов.
[0099] Кроме того, в некоторых осуществлениях, если список кандидатов MV (например, список кандидатов MV объединения или список кандидатов AMVP) неполон, видеокодер может генерировать и вставлять искусственные кандидаты вектора движения в конце списка кандидатов MV, пока список кандидатов MV не будет иметь требуемое количество кандидатов. В режиме объединения существует два типа искусственных кандидатов MV: комбинированные кандидаты, найденные только для B-срезов, и нулевые кандидаты. Комбинированный кандидат определяет комбинацию вектора движения Списка 0 из одного кандидата объединения и вектора движения Списка 1 для другого кандидата объединения. Нулевые кандидаты используются для предсказания вектора движения, только если первый тип (т.е. комбинированные кандидаты) не обеспечивает достаточно искусственных кандидатов. Нулевой кандидат является кандидатом, который определяет MV, каждый из горизонтального и вертикального компонентов которого равен 0.
[0100] Для каждой пары кандидатов, которые уже в списке кандидатов и имеют необходимую информацию движения, двунаправленные комбинированные кандидаты вектора движения находятся путем комбинации вектора движения первого кандидата со ссылкой на изображение в списке 0 и вектора движения второго кандидата со ссылкой на изображение в списке 1.
[0101] Дополнительно, видеокодер может применять процесс отсечения для вставки кандидатов. Кандидаты различных блоков могут оказаться одинаковыми, что может уменьшать эффективность списка кандидатов объединения/AMVP. Процесс отсечения применяется, чтобы решить эту проблему. Он сравнивает один кандидат с другими в текущем списке кандидатов, чтобы избежать вставки идентичного кандидата до некоторой степени. Чтобы уменьшить сложность, только ограниченное количество процесса отсечения применяется вместо сравнения каждого потенциального кандидата со всеми другими существующими.
x
y
[0102] В HEVC только модель поступательного движения применяется для предсказания компенсации движения (MCP). Однако в реальном мире существует множество видов движений, например увеличение/уменьшение масштаба, вращение, движения перспективы и другие хаотические движения. В JEM предсказание компенсации движения упрощенного аффинного преобразования применяется, чтобы улучшить эффективность кодирования. Если блок следует аффинной модели движения, MV позиции (, ) в блоке может быть определен следующей аффинной моделью движения:
(1)
v
v
x
y
В уравнении (1)  - горизонтальный компонент вектора движения для позиции (x, y) внутри блока, и  - вертикальный компонент вектора движения для позиции (x, y) внутри блока. В уравнении (1) a, b, c, d, e и f являются параметрами. Следует заметить, что в аффинной модели движения различные позиции внутри блока имеют различные векторы движения.
[0103] В JEM3.0 аффинная модель движения упрощена до 4-параметрической аффинной модели движения путем предположения, что a=e и b=-d. Таким образом, уравнение (1) может быть упрощено, как показано в уравнении (1') ниже:
(1')
0
1
0
1
0
1
4-параметрическая аффинная модель движения может быть представлена вектором движения верхней левой контрольной точки (V) и вектором движения верхней правой контрольной точки (V). Фиг.4 изображает упрощенную аффинную модель движения для текущего блока 400. Как изображено на фиг.4, поле аффинного движения блока описано двумя векторами движения контрольных точек Ṽ и Ṽ. Ṽ - вектор движения контрольной точки для верхней левой контрольной точки 402 текущего блока 400. Ṽ - вектор движения контрольной точки для верхней правой контрольной точки 404 текущего блока 400.
[0104] Векторное поле движения (MVF) блока описывается следующим уравнением:
(2)
x
y
0
x
0
y
1
x
1
y
v
v
v
v
w
В уравнении (2) v - горизонтальный компонент вектора движения для позиции (x, y) в блоке; v - вертикальный компонент вектора движения для позиции (x, y) в блоке; (, ) - вектор движения верхней левой угловой контрольной точки (например, верхней левой контрольной точки 402); (, ) - вектор движения верхней правой угловой контрольной точки (например, верхней правой контрольной точки 404); и  - ширина блока. Таким образом, видеокодер может использовать уравнение (2), чтобы "экстраполировать" векторы движения для позиций (x, y) на основе векторов движения контрольных точек блока.
[0105] Чтобы дополнительно упростить предсказание компенсации движения, применяется предсказание аффинного преобразования на основе блоков. Таким образом, вместо того, чтобы находить векторы движения для каждого местоположения в блоке, видеокодер может находить векторы движения для подблоков блока. В JEM подблоками являются блоки 4×4. Чтобы найти вектор движения подблока, видеокодер может вычислять вектор движения центрального образца подблока согласно уравнению (2). Видеокодер может затем округлять вычисленный вектор движения до точности 1/16 доли. Округленный вектор движения может называться здесь высокоточным вектором движения. Затем видеокодер может применять фильтры интерполяции компенсации движения, чтобы генерировать предсказания (т.е. предсказательные блоки) каждого из подблоков с найденными векторами движения.
[0106] Фиг.5 изображает примерное аффинное векторное поле движения (MVF) для каждого подблока. Как показано в примере с фиг.5, текущий блок 500 имеет верхнюю левую контрольную точку 502 и верхнюю правую контрольную точку 504. Видеокодер может вычислять, на основе вектора движения 506 для верхней левой контрольной точки 502 и вектора движения 508 для верхней правой контрольной точки 504, векторы движения для подблоков текущего блока 500. Фиг.5 изображает векторы движения подблоков в виде маленькой стрелки.
[0107] После MCP высокоточный вектор движения каждого подблока округляется и сохраняется с той же самой точностью, что и обычный вектор движения. В некоторых примерах округление высокоточного вектора движения выполняется только тогда, когда точность сохраненных векторов движения меньше, чем у высокоточных векторов движения.
[0108] Существует два аффинных режима движения в JEM: AF_ПРОМЕЖУТОЧНЫЙ режим и режим AF_ОБЪЕДИНЕНИЯ. В JEM AF_ПРОМЕЖУТОЧНЫЙ режим может применяться для CU, у которых и ширина, и высота большее 8. Аффинный флаг сигнализируется на уровне CU в битовом потоке, чтобы указать, используется ли AF_ПРОМЕЖУТОЧНЫЙ режим. В AF_ПРОМЕЖУТОЧНОМ режиме кодер 20 видео сигнализирует опорный индекс Списка 0 и/или опорный индекс Списка 1 для текущего блока, чтобы указать опорное изображение Списка 0 и/или опорное изображение Списка 1.
[0109] В AF_ПРОМЕЖУТОЧНОМ режиме каждый из кодера 20 видео и декодера 30 видео строит один или более списков кандидатов (т.е. списки наборов-кандидатов аффинных MVP) для текущего блока. Например, каждый из кодера 20 видео и декодера 30 видео может строить список наборов-кандидатов аффинных MVP Списка 0 и/или список наборов-кандидатов аффинных MVP Списка 1. Каждый из списков наборов-кандидатов аффинных MVP включает в себя соответственный набор из наборов аффинных MVP. В 4-параметрической аффинной модели движения набор аффинных MVP в списке наборов-кандидатов аффинных MVP Списка 0 определяет два вектора движения Списка 0 (т.е. пару векторов движения). В 4-параметрической аффинной модели движения набор аффинных MVP в списке наборов-кандидатов аффинных MVP Списка 1 определяет два вектора движения Списка 1.
0
1
0
A
B
C
1
D
E
0
0
1
[0110] Изначально видеокодер (например, кодер 20 видео или декодер 30 видео) пытается заполнить список наборов-кандидатов аффинных MVP парами векторов движения типа {(v,v)|v={v,v,v},v={v,v}} с использованием соседних блоков. Фиг.6A изображает структурную схему, иллюстрирующую текущий блок 600 и соседние блоки, как используемые в AF_ПРОМЕЖУТОЧНОМ режиме. Как изображено на фиг.6A, V выбирается из векторов движения блоков A, B или C. Вектор движения из соседнего блока масштабируется согласно опорному списку и отношению между POC ссылки для соседнего блока, POC ссылки для текущей CU и POC текущей CU. Например, предположим, видеокодер выбирает вектор движения Списка 0 соседнего блока (например, блока A, B или C) как V. В этом примере вектор движения Списка 0 соседнего блока указывает позицию в опорном изображении соседнего блока (т.е. ссылке для соседнего блока). Кроме того, в этом примере кодер 20 видео может выбрать и просигнализировать опорный индекс Списка 0, указывающий опорное изображение для текущей CU (т.е. ссылку для текущей CU). Если опорное изображение соседнего блока не то же самое, что и опорное изображение для текущей CU, видеокодер может масштабировать вектор движения Списка 0 соседнего блока на основе разницы между опорным временным расстоянием и текущим временным расстоянием. Опорное временное расстояние является временным расстоянием между POC опорного изображения соседнего блока и POC текущей CU. Текущее временное расстояние является временным расстоянием между POC текущей CU и POC опорного изображения для текущей CU. Видеокодер может выполнять подобный процесс для вектора движения Списка 1. Подход для выбора v из соседних блоков D и E подобен.
[0111] Если количество кандидатов в списке кандидатов меньше 2, список кандидатов заполняется парами векторов движения, составленными удваиванием каждого из кандидатов AMVP {AMVP0, AMVP0} и {AMVP1, AMVP1}. Иными словами, видеокодер может генерировать два кандидата AMVP способом, описанным выше. Два кандидата AMVP обозначены AMVP0 и AMVP1. Видеокодер затем включает, в список 620 кандидатов с фиг.6B, первый кандидат аффинного предиктора вектора движения, который определяет AMVP0 в качестве вектора движения для первой контрольной точки и определяет AMVP0 в качестве вектора движения для второй контрольной точки. Если количество кандидатов в списке кандидатов все еще меньше 2 после включения первого кандидата аффинного MVP в список 620 кандидатов, видеокодер включает второй кандидат аффинного MVP в список 620 кандидатов, где второй кандидат аффинного MVP определяет AMVP1 в качестве вектора движения для первой контрольной точки и определяет AMVP1 в качестве вектора движения для второй контрольной точки.
[0112] Когда список 620 кандидатов больше 2, видеокодер сначала сортирует кандидаты в списке 620 кандидатов согласно непротиворечивости соседних векторов движения (подобия двух векторов движения в кандидате пары). Видеокодер сохраняет только первые два кандидаты, как показано на фиг.6B линией с меткой "Размер=2". Кодер 20 видео может использовать проверку издержек искажения в зависимости от скорости, чтобы определять, какой набор-кандидат векторов движения выбирается в качестве предсказания вектора движения контрольная точка (CPMVP) текущей CU. Кодер 20 видео может сигнализировать в битовом потоке индекс, указывающий позицию CPMVP в списке 620 кандидатов. Декодер 30 видео может получать индекс из битового потока и использовать индекс, чтобы определять, какой из кандидатов в списке 620 кандидатов является CPMVP. После того как CPMVP текущей аффинной CU определяется, аффинная оценка движения применяется, и вектор движения контрольной точки (CPMV) найден. Кодер 20 видео сигнализирует в битовом потоке разницу между CPMV и CPMVP. Иными словами, кодер 20 видео сигнализирует разницу векторов движения (MVD) в битовом потоке.
[0113] Кроме того, и в HEVC, и в JEM синтаксический элемент предсказания между изображениями, inter_pred_idc, сигнализирует, используются ли Список 0, Список 1 или оба для блока (например, CU или PU). Для каждого MVP, полученного из одного списка опорных изображений, соответствующее опорное изображение сигнализируется индексом к списку опорных изображений, ref_idx_l0/1, и MV(_x;_y) представлен индексом к MVP, mvp_l0/1_флаг, и его разницей MV (MVD). Синтаксис MVD также сигнализируется в битовом потоке так, что MV могут быть реконструированы на стороне декодера. Иными словами, если блок однонаправленным образом предсказывается из Списка 0 или двунаправленным образом предсказывается, кодер 20 видео сигнализирует флаг ref_idx_l0, чтобы указать местоположение опорного изображения в Списке 0, сигнализирует mvp_l0_флаг, чтобы указать местоположение в списке кандидатов AMVP Списка 0 выбранного предиктора вектора движения, и сигнализирует MVD Списка 0. Если блок однонаправленным образом предсказывается из Списка 1 или двунаправленным образом предсказывается, кодер 20 видео сигнализирует флаг ref_idx_l1, чтобы указать местоположение опорного изображения в Списке 1, сигнализирует mvp_l1_флаг, чтобы указать местоположение в списке кандидатов AMVP Списка 1 выбранного предиктора вектора движения, и сигнализирует MVD Списка 1.
[0114] Дополнительно, кодер 20 видео может сигнализировать флаг (например, mvd_l1_zero_flag) в заголовке среза. Флаг указывает, равна ли MVD для второго списка опорных изображений (например, Списка 1) нулю и, таким образом, не сигнализируется в битовом потоке. Отсутствие сигнализирования MVD для второго списка опорных изображений может дополнительно улучшить эффективность кодирования в некоторых обстоятельствах.
[0115] Когда CU кодируется в режиме AF_ОБЪЕДИНЕНИЯ, видеокодер назначает для CU аффинную модель движения блока, закодированную посредством аффинного режима из допустимых соседних реконструированных блоков, встречающегося первым в порядке посещения: A→B→C→D→E. Фиг.7A изображает соседние блоки, используемые при кодировании текущего блока 700 в режиме AF_ОБЪЕДИНЕНИЯ. Порядок посещения (т.е. порядок выбора) для соседних блоков является: от левого, верхнего, верхнего правого, левого нижнего к верхнему левому, как показано на фиг.7A. Например, если соседний блок B является первым соседним блоком в порядке A→B→C→D→E, который кодируется с использованием аффинного режима, видеокодер может использовать аффинную модель движения соседнего блока B в качестве аффинной модели движения текущего блока. Например, в этом примере для X=0 и/или X=1, видеокодер может экстраполировать вектор движения Списка X верхней левой контрольной точки соседнего блока B, чтобы генерировать вектор движения Списка X верхней левой контрольной точки текущего блока 700, использовать опорный индекс Списка X верхней левой контрольной точки соседнего блока B в качестве опорного индекса Списка X верхней левой контрольной точки текущего блока 700, экстраполировать вектор движения Списка X верхней левой контрольной точки соседнего блока B, чтобы генерировать вектор движения Списка X верхней левой контрольной точки текущего блока 700, и использовать опорный индекс Списка X верхней левой контрольной точки соседнего блока B в качестве опорного индекса Списка X верхней левой контрольной точки текущего блока 700. В этом примере видеокодер может использовать уравнение (2) выше, чтобы экстраполировать вектор движения контрольной точки соседнего блока B, чтобы определять вектор движения контрольной точки текущего блока 700, с использованием позиции (x, y) контрольной точки текущего блока 700 в качестве x и y в уравнении (2).
2
3
4
0
2
3
4
1
2
3
4
0
1
0
x
0
0x
y
0
0y
1
x
1
1x
y
1
1y
[0116] Если соседний левый нижний блок A кодируется в аффинном режиме, как показано на фиг.7B, находятся векторы движения v, v и v из верхнего левого угла, верхнего правого угла и левого нижнего угла текущего блока 720, который содержит блок A. Вектор движения v из верхнего левого угла на текущем блоке 720 вычисляется согласно v, v и v. Во-вторых, вектор движения v из сверху справа от текущей CU вычисляется. Если быть точнее, 6-параметрическая аффинная модель движения сначала строится векторами движения v, v и v, как показано в уравнении (3) ниже, и значения v и v затем вычисляются этой 6-параметрической аффинной моделью движения. То есть при использовании с позицией (x, y) верхней левой контрольной точки текущего блока 720 (т.е., ṽ), v в уравнении (3) является компонентом x вектора движения ṽ (т.е., v), и x в уравнении (3) является компонентом y ṽ (т.е., v). Подобным образом, при использовании с позицией (x, y) верхней правой контрольной точки текущего блока 720 (т.е., ṽ), v в уравнении (3) является компонентом x вектора движения ṽ (т.е., v), и x в уравнении (3) является компонентом y ṽ (т.е., v).
(3)
0
1
[0117] После того как CPMV v и v текущей CU найдены, согласно упрощенной аффинной модели движения уравнения (1), векторное поле движения текущей CU генерируется. Чтобы идентифицировать, кодируется ли текущий CU посредством режима AF_ОБЪЕДИНЕНИЯ, аффинный флаг сигнализируется в битовом потоке, когда по меньшей мере один соседний блок кодируется в аффинном режиме.
[0118] В качестве дополнения к 4-параметрической аффинной модели движения в JEM, аффинная модель движения с 6 параметрами описана в JVET-C0062. В 6-параметрической аффинной модели нет ограничения на коэффициенты масштабирования между горизонтальным и вертикальным направлениями. Три угловых вектора движения используются, чтобы представить 6-параметрическую модель.
0
1
2
[0119] Фиг.8A изображает примерные блоки, используемые в 6-параметрической аффинной модели движения. Фиг.8B изображает примерный список 820 наборов-кандидатов аффинных MVP, используемый в 6-параметрической аффинной модели движения. Следующие шесть уравнений описывают горизонтальный (x) и вертикальный (y) компоненты векторов движения в трех углах (V, V и V, как изображено на фиг.8A):
(4)
Путем решения уравнений (4) 6-параметрическая аффинная модель может быть определена путем подстановки решений в уравнение (1).
0
1
2
0
A
B
C
1
D
E
2
F
G
[0120] Подобно 4-параметрическому AF_ПРОМЕЖУТОЧНОМУ режиму, список кандидатов с набором векторов движения {(v,v,v)|v={v,v,v},v={v,v},v={v,v}} для 6-параметрического AF_ПРОМЕЖУТОЧНОГО режима строится с использованием соседних блоков. Таким образом, в примере с фиг.8B каждый набор аффинных MVP (т.е. каждый кандидат) в списке 820 наборов-кандидатов аффинных MVP включает в себя три вектора движения. В AF_ПРОМЕЖУТОЧНОМ режиме видеокодер может генерировать два списка наборов-кандидатов аффинных MVP типа, изображенного на фиг.8B. Один из списка наборов-кандидатов аффинных MVP включает в себя наборы аффинных MVP, которые определяют векторы движения Списка 0. Другой список наборов-кандидатов аффинных MVP включает в себя наборы аффинных MVP, которые определяют векторы движения Списка 1.
[0121] Проектирование аффинного движения в HEVC/JEM может иметь следующие проблемы. Например, корреляция аффинного движения Списка 0 и Списка 1 не задействуются для предсказания MV для блоков, закодированных посредством аффинного режима. В другом примере корреляция аффинного движения текущего блока и соседнего блока не задействуются для предсказания MV для блоков, закодированных посредством аффинного режима. В еще одном примере нулевая MVD Списка 1 может нанести ущерб производительности аффинных моделей движения ввиду неточного MV контрольных точек. Это раскрытие описывает методики, которые могут преодолеть эти проблемы и потенциально улучшить эффективность кодирования.
x
y
x
y
x
y
[0122] В некоторых примерах этого раскрытия аффинная модель движения является 6-параметрической моделью движения, как показано в уравнении (1). В JEM-3.0 аффинная модель движения для блока представлена векторами движения контрольных точек (V0, V1). В JVET-C0062 аффинная модель движения для блока представлена векторами движения контрольных точек (V0, V1, V2). Однако может быть желательно представить аффинную модель движения путем сигнализирования параметров a, b, c, d, e, f в уравнении (1) или упрощенных 4 параметров. Аффинная модель движения может также дополнительно быть интерпретирована как уравнение (5), где O и O являются сдвигами переноса, S и S являются коэффициентами масштабирования в направлениях x и y, и ϴ и ϴ являются углами поворота.
(5)
x
y
x
y
x
y
Это раскрытие предлагает несколько способов, чтобы улучшить предиктор вектора движения (MVP) или предсказание параметра аффинного предсказания движения. Следует заметить, что видеокодер может выполнять предсказание параметра для представления a, b, c, d, e, f в уравнении (1) или O, O, S, S, ϴ и ϴ в уравнении (5).
[0123] Несколько методик этого раскрытия перечисляются ниже.
1) Аффинное предсказание вектора движения и аффинное предсказание параметров между Списком 0 и Списком 1.
2) Аффинное предсказание вектора движения между контрольными точками и аффинные параметры предсказания между наборами параметров.
3) Аффинное предсказание вектора движения и аффинное предсказание параметра из соседних блоков. Соседние блоки не ограничиваются пространственными соседними блоками. В действительности в некоторых примерах используются временные соседние блоки.
4) Аффинное предсказание движения подблоков и аффинное предсказание параметра подблоков, причем каждый подблок может иметь свои собственные контрольные точки и/или параметры.
5) Усовершенствовать генерирование дополнительных кандидатов MVP.
6) Запретить нулевую MVD L1 для аффинного промежуточного режима в срезах GPB.
[0124] Методики этого раскрытия могут применяться по отдельности. В качестве альтернативы, любая комбинация методик может применяться. Это раскрытие разъясняет больше подробностей каждой из методик ниже.
[0125] Как упомянуто выше, один из недостатков проектирования аффинного движения в HEVC и JEM состоит в том, что корреляция между аффинным движением Списка 0 и Списка 1 не задействуется. Иными словами, существующие подходы сигнализируют аффинные контрольные точки независимо для Списка 0 и Списка 1. Выгодное использование корреляции между аффинным движением Списка 0 и Списка 1 может представлять возможность увеличить эффективность кодирования.
[0126] Таким образом, в соответствии с методикой этого раскрытия кодер 20 видео и декодер 30 видео могут использовать аффинную модель движения в одном направлении промежуточного предсказания, чтобы улучшить сигнализирование аффинной модели движения в другом направлении промежуточного предсказания. Аффинная модель движения в конкретном направлении промежуточного предсказания является аффинной моделью движения, которая определяет векторы движения, указывающие на местоположения в опорных изображениях в конкретном списке опорных изображений, соответствующем направлению промежуточного предсказания.
[0127] Например, чтобы задействовать корреляциию между MV Списка 0 и Списка 1, кодер 20 видео и декодер 30 видео могут использовать MV Списка 0 в качестве предиктора MV для MV Списка 1, или наоборот. Декодер 30 видео может принять решение использовать предсказание MV от Списка 0 к Списку 1 или предсказание MV от Списка 1 к Списку 0 согласно указанию направления предсказания. Указание направления предсказания может явным образом сигнализироваться или находится в неявной форме.
[0128] Декодер 30 видео может находить подразумеваемое указание направления предсказания с использованием декодированной или реконструированной информации. В одном примере указание направления предсказания зависит от MVP в списке наборов-кандидатов аффинных MVP (т.е. списках MVP) каждого направления предсказания. Если список MVP одного направления предсказания содержит MVP, найденные из некоторых менее предпочтительных способов (например, масштабируемый предиктор вектора движения, или MVP, найденный из блока, закодированного посредством локального режимома компенсации освещения), аффинная модель от другого направления предсказания используется, чтобы предсказывать аффинную модель в текущем направлении предсказания. В качестве альтернативы, указание направления предсказания может зависеть от того, сколько различных предикторов MV находится в каждом списке.
[0129] В другом примере, если список MVP одного направления предсказания содержит MVP, найденные из некоторого способа с более высоким предпочтением (например, немасштабируемый предиктор вектора движения, или он из блока, закодированного посредством режима преобразования с повышением частоты кадров (FRUC)), аффинная модель из текущего направления предсказания используется, чтобы предсказывать аффинную модель в другом направлении предсказания. В режиме FRUC информация движения блока не сигнализируется, а ищется на стороне декодирования.
[0130] В одном примере, если существует какой-либо низкоприоритетный MVP в списке наборов-кандидатов MVP для Списка 1, указание направления предсказания устанавливается как "от Списка 0 к Списку 1", и, в процессе предсказания MV, MV Списка 0 используется в качестве MVP для MV Списка 1. Иначе, если нет низкоприоритетных MVP в списке наборов-кандидатов MVP для Списка 1, указание направления предсказания устанавливается как "от Списка 1 к Списку 0", и, в процессе предсказания MV, MV Списка 1 используются в качестве MVP для MV Списка 0.
N
[0131] После того как указание направления предсказания определяется, заменяемые наборы-кандидаты MVP (с  кандидатами) определяются согласно декодированной или реконструированной информации на стороне декодера. В одном примере заменяемый набор-кандидат MVP является первым набором-кандидатом MVP, содержащим по меньшей мере один низкоприоритетный MVP. В одном примере низким приоритетом могут быть наделены пространственные MVP, масштабируемые согласно информации POC, заполненные AMVP MVP и временные MVP.
N
[0132] В одном примере, дополнительно, когда нет набора-кандидата MVP, который должен быть заменен, аффинное предсказание вектора движения между Списком 0 и Списком 1 не выполняется. В некоторых примерах количество наборов-кандидатов MVP, которые должны быть заменены,  устанавливается равным 1. В одном примере, если указание направления предсказания устанавливается как предсказание MV от Списка 0 к Списку 1, MVP из набора-кандидата MVP, который должен быть заменен, в Списке 1 затем заменяются масштабируемыми MV соответствующих контрольных точек в Списке 0, соответственно, или наоборот.
[0133] В другом примере, если указание направления предсказания устанавливается как предсказание MV от Списка 0 к Списку 1, только частичные MVP из набора-кандидата MVP, который должен быть заменен, в Списке 1 заменяются масштабируемыми MV соответствующих контрольных точек в Списке 0, соответственно, или наоборот. Например, только первый MVP (V0) заменяется.
[0134] В другом примере, если указание направления предсказания устанавливается как предсказание MV от Списка 0 к Списку 1, только первый MVP (V0) набора-кандидата MVP, который должен быть заменен, в Списке 1 заменяется масштабируемыми MV соответствующих контрольных точек в Списке 0, соответственно. Второй MVP (V1) набора MVP, который должен быть заменен, в Списке 1 заменяется масштабируемыми MV первых контрольных точек (V0) в Списке 0 плюс разница между MV первых и вторых контрольных точек в Списке 0 (V1-V0). Подход для замены третьих MVP (V2) для 6-параметрической аффинной модели подобен. Если указание направления предсказания устанавливается как предсказание MV от Списка 1 к Списку 0, только первый MVP (V0) из набора-кандидата MVP, который должен быть заменен, в Списке 0 заменяется масштабируемыми MV соответствующих контрольных точек в Списке 1, соответственно. Второй MVP (V1) из набора-кандидата MVP, который должен быть заменен, в Списке 0 заменяется масштабируемыми MV первых контрольных точек (V0) в Списке 1 плюс разница между MV первых и вторых контрольных точек в Списке 1 (V1-V0). И подход для замены третьих MVP (V2) для 6-параметрической аффинной модели подобен.
[0135] В некоторых примерах MV контрольных точек могут быть использованы в качестве кандидата MVP для MV других контрольных точек. В одном примере MV верхней левой контрольной точки (V0) используется в качестве кандидата MVP для MV верхней правой контрольной точки (V1). Подобным образом, при 6-параметрической аффинной модели движения, MV верхней левой контрольной точки (V0) используется в качестве кандидата MVP для MV верхней правой контрольной точки (V1). Кроме того, это предсказание вектора движения между контрольными точками может выборочно применяться. В качестве альтернативы, при 6-параметрической аффинной модели вектор движения верхней правой контрольной точки (V0) используется в качестве предиктора вектора движения верхней правой контрольной точки (V1) (или нижней левой контрольной точки (V2)), и пара V0 и V1 (или пара V0 и V2) используется, чтобы находить предиктор вектора движения для V2 (или V1) посредством 4-параметрической аффинной модели движения. В одном примере только второй набор-кандидат MVP применяется для предсказания MV между контрольными точками.
[0136] В другом примере аффинная модель может быть найдена из вектора движения одной контрольной точки и дополнительных просигнализированных параметров модели. Просигнализированные параметры включают в себя, но не ограничиваются, разницы векторов движения между контрольными точками или аффинную степень поворота и так далее. В одном примере вектор движения одной из контрольных точек текущего блока вместе со степенью поворота сигнализируются для блока, закодированного в качестве аффинного режима движения. Для каждого аффинного блока аффинная модель движения строится с использованием вектора движения контрольной точки и угла поворота.
[0137] В соответствии с конкретными методиками этого раскрытия видеокодер может использовать соседне-экстраполированные векторы движения в качестве аффинных предикторов вектора движения для контрольных точек текущего аффинного блока. Например, для текущего промежуточного блока видеокодер может задействовать модели движения одного или более из соседних аффинных блоков текущего промежуточного блока (например, соседние блоки, закодированные в AF_ПРОМЕЖУТОЧНОМ режиме или режиме AF_ОБЪЕДИНЕНИЯ), называемых исходными аффинными блоками, чтобы предсказать аффинную модель движения для текущего промежуточного блока (т.е. текущую аффинную модель движения). Например, MVP контрольных точек текущего блока могут быть экстраполированы из контрольных точек соседних блоков. Например, для каждой соответственной контрольной точки текущего блока видеокодер может использовать уравнение (2) выше, чтобы экстраполировать MVP для соответственной контрольной точки текущего блока из векторов движения контрольных точек исходного аффинного блока. Исходные аффинные блоки могут быть одним или более пространственными соседними блоками или временными соседними блоками.
[0138] В одном примере исходный аффинный блок определяется как первый блок, закодированный посредством аффинного режима из допустимых пространственных соседних блоков на основе предварительно определенного порядка посещения (например, A→B→C→D→E, или B→A→D→C→E, или любой другой порядок посещения блоков, изображенных на фиг.7A).
[0139] В другом примере исходный аффинный блок определяется как первый блок, закодированный посредством аффинного режима из соседних блоков согласно одному или более предварительно определенным приоритетным наборам на основе предварительно определенного порядка посещения (например, A→B→C→D→E, или B→A→D→C→E, или любой другой порядок посещения, как показано на фиг.7A и фиг.7B). Те соседние аффинные блоки, которые не удовлетворяют какому-либо из приоритетов, считаются недоступными.
[0140] В некоторых примерах исходный аффинный блок определяется сначала согласно порядку посещения и затем предварительно определенному порядку приоритета. Например, исходный аффинный блок может быть определен согласно следующему порядку: A (приоритет 1) → B (приоритет 1) → C (приоритет 1) → D (приоритет 1) → E (приоритет 1) → A (приоритет 2) → и так далее. В этом примере видеокодер сначала проверяет, находится ли блок A в приоритетном наборе 1; если нет, видеокодер проверяет, находится ли блок B в приоритетном наборе 1; если нет, видеокодер проверяет, находится ли блок C в приоритетном наборе 1; и так далее.
[0141] В другом примере видеокодер может определять исходный аффинный блок сначала согласно предварительно определенному порядку приоритета и затем порядку посещения. Например, A (приоритет 1) → A (приоритет 2) → B (приоритет 1) → B (приоритет 2) → C (приоритет 1) → C (приоритет 2) → и так далее. Таким образом, в этом примере видеокодер сначала проверяет, находится ли блок A в приоритетном наборе 1; если нет, видеокодер проверяет, находится ли блок A в приоритетном наборе 2; если нет, видеокодер проверяет, находится ли блок B в приоритетном наборе 1; и так далее.
[0142] В различных примерах приоритетные наборы определяются различными способами. Определения различных примерных приоритетных наборов перечисляются ниже. Следующие определения приоритетных наборов могут применяться по отдельности. В качестве альтернативы, любая их комбинация может применяться.
[0143] Первый примерный приоритетный набор определен нижеприведенным образом, где меньшие числа представляют более высокий приоритет:
1. Соседний аффинный блок находится в приоритетном наборе 1, если опорное изображение Списка X соседнего аффинного блока является тем же самым опорным изображением, что и опорное изображение Списка X текущего блока, где Список X является списком опорных изображений текущего блока, в текущий момент оцениваемого, и X равен либо 0, либо 1.
2. Соседний аффинный блок находится в приоритетном наборе 2, если опорное изображение Списка X соседнего аффинного блока является тем же самым опорным изображением, что и опорное изображение Списка Y текущего блока, где Список Y является списком опорных изображений помимо списка опорных изображений текущего блока, в текущий момент оцениваемого, и Y равен либо 0, либо 1.
[0144] В другом примере приоритетный набор определен следующим образом:
1. Соседний аффинный блок находится в приоритетном наборе 1, если опорное изображение Списка X соседнего аффинного блока отличается от опорного изображения Списка X текущего блока, где Список X является списком опорных изображений текущего блока, в текущий момент оцениваемого, и X равен либо 0, либо 1.
2. Соседний аффинный блок находится в приоритетном наборе 2, если опорное изображение Списка Y соседнего аффинного блока отличается от опорного изображения Списка Y текущего блока, где Список Y является списком опорных изображений помимо списка опорных изображений текущего блока, в текущий момент оцениваемого, и Y равен либо 0, либо 1.
[0145] В другом примере приоритетный набор определен следующим образом:
1. Разницы MV соседних аффинных блоков находятся внутри предварительно определенного диапазона.
2. Разницы MV соседних аффинных блоков не находятся внутри предварительно определенного диапазона.
[0146] В другом примере приоритетный набор определяется следующим образом. В этом и других примерах меньшие числа могут представлять более высокий приоритет.
1. Соседний аффинный блок находится в приоритетном наборе 1, если соседний аффинный блок кодируется в AF_ПРОМЕЖУТОЧНОМ режиме.
2. Соседний аффинный блок находится в приоритетном наборе 2, если соседний аффинный блок кодируется в режиме AF_ОБЪЕДИНЕНИЯ.
[0147] В другом примере приоритет соседнего аффинного блока зависит от того, имеет ли соседний аффинный блок то же самое направление промежуточного предсказания, что и текущий аффинный блок. В другом примере приоритет соседнего аффинного блока зависит от размера соседнего аффинного блока. Например, соседние аффинные блоки с большими размерами могут иметь более высокий приоритет.
[0148] В одном примере видеокодер выбирает, в качестве исходного аффинного блока для Списка X, соседний аффинный блок, который имеет то же самое опорное изображение Списка X, что и текущий блок, и встречается первым в следующем порядке посещения: B→A→D→C→E. В этом примере, если никакой соседний аффинный блок не доступен (например, ни один из соседних аффинных блоков не имеет то же самое опорное изображение Списка X, что и текущий блок), видеокодер может выбирать, в качестве исходного аффинного блока, соседний аффинный блок, имеющий в качестве его опорного изображения Списка Y опорное изображение Списка X текущего блока и встречается первым в следующем порядке посещения: B→A→D→C→E, где X равен 0 или 1, и Y равен (1-X).
[0149] В одном примере в случае, когда двойная аффинная модель предсказания используется в текущем блоке, исходный аффинный блок для Списка 0 и Списка 1 может быть различным. Иными словами, видеокодер может использовать различные исходные аффинные блоки при оценке Списка 0 и Списка 1 для текущего блока. Вышеупомянутый процесс выбора исходного аффинного блока может применяться по отдельности для каждого списка опорных изображений.
0
1
0
1
2
[0150] После того как видеокодер выбирает исходный аффинный блок, видеокодер экстраполирует набор предикторов MV для контрольных точек текущего блока с использованием MV контрольных точек исходного аффинного блока. Например, в 4-параметрической аффинной модели движения видеокодер может экстраполировать MV Списка X первой контрольной точки текущего блока из MV Списка X первой контрольной точки исходного аффинного блока. Дополнительно, в этом примере видеокодер может экстраполировать MV Списка X второй контрольной точки текущего блока из MV Списка X второй контрольной точки исходного аффинного блока. В этом примере X равен либо 0, либо 1, и получающаяся в результате пара экстраполированных MV Списка X называется термином экстраполированный набор предикторов вектора движения (MVP) и может быть обозначена {V', V'}. Видеокодер может использовать уравнение (2), чтобы выполнить экстраполяцию, как описано в другом месте в этом раскрытии. В 6-параметрической аффинной модели движения видеокодер может также экстраполировать MV Списка X третьей контрольной точки текущего блока из MV Списка X третьей контрольной точки исходного аффинного блока. Экстраполированный MV Списка X третьей контрольной точки текущего блока может также быть включен в набор предикторов вектора движения и может быть обозначен {V', V', V'}.
0
1
0
1
2
[0151] Видеокодер может затем вставлять экстраполированный набор MVP Списка X (например, {V', V'} для 4-параметрической аффинной модели движения или {V', V', V'} для 6-параметрической аффинной модели движения) в список наборов-кандидатов аффинных MVP Списка X. После того как видеокодер вставляет экстраполированный набор MVP в список наборов-кандидатов аффинных MVP Списка X, видеокодер вставляет стандартный набор-кандидат аффинных MVP в список наборов-кандидатов аффинных MVP Списка X. Стандартный набор-кандидат аффинных MVP может быть набором-кандидатом аффинных MVP, генерируемым в соответствии с другими примерами, обеспеченными в этом раскрытии. Видеокодер может вставлять стандартный набор-кандидат MVP в список наборов-кандидатов аффинных MVP Списка X после или перед экстраполированным набором MVP. Если текущий блок двунаправленным образом предсказывается, видеокодер может выполнять подобный процесс для Списка Y, где Y равен 1-X.
i
j
[0152] Фиг.9 изображает примерный список 900 наборов-кандидатов аффинных MVP, который включает в себя экстраполированный набор 902 MVP, в соответствии с методикой этого раскрытия. В примере с фиг.9 экстраполированный набор (902) MVP {V', V'} вставляется в первую позицию списка 900 наборов-кандидатов аффинных MVP, после чего следуют стандартные наборы-кандидаты MVP. Видеокодер может строить остаток списка 900 наборов-кандидатов аффинных MVP тем же самым образом, что и список 620 кандидатов (фиг.6B) или список 820 наборов-кандидатов аффинных MVP (фиг.8B).
[0153] В одном примере процесс экстраполяции может быть тем же самым, что и режим AF_ОБЪЕДИНЕНИЯ, описанный выше с использованием уравнения (1) или (2), в зависимости от того, 4-параметрическая аффинная модель движения или 6-параметрическая аффинная модель движения используется, чтобы выполнить экстраполяцию MV. В качестве альтернативы, другие функции экстраполяции могут применяться. Например, видеокодер может применить билинейную функцию к векторам движения контрольных точек исходного аффинного блока, чтобы выполнить процесс экстраполяции.
[0154] В некоторых примерах видеокодер выбирает второй исходный аффинный блок дополнительно к выбору исходного аффинного блока, как описано выше. Видеокодер может выбрать второй исходный аффинный блок, продолжая искать исходный аффинный блок после выбора первого исходного аффинного блока. Видеокодер может осуществлять поиск в соответствии с любым из примеров, описанных выше, для выбора исходного аффинного блока. Видеокодер может экстраполировать второй набор MVP для контрольных точек текущего блока с использованием MV контрольных точек второго исходного аффинного блока и может вставлять второй набор MVP в качестве другого набора-кандидата MVP в списке наборов-кандидатов аффинных MVP.
[0155] В другом примере видеокодер выбирает два или более исходных аффинных блоков при кодировании текущего блока. В этом примере видеокодер находит набор предикторов MV для контрольных точек текущего блока с использованием MV некоторых, или видеокодер вставляет все контрольные точки исходных аффинных блоков в качестве другого набора-кандидата MVP.
[0156] В соответствии с методикой этого раскрытия, в аффинном промежуточном режиме (т.е. AF_ПРОМЕЖУТОЧНОМ режиме) или аффинном режиме объединения (т.е. режиме AF_ОБЪЕДИНЕНИЯ) аффинное движение каждого подблока (например, блока 4×4) текущего блока может быть предсказано или непосредственно унаследовано из экстраполированного движения его собственных соседних блоков. В одном примере соседний блок выбирается как ближайший соседний аффинный блок для каждого подблока. Иными словами, текущий блок может быть разделен на множество одноразмерных подблоков (например, подблоков 4×4). Для каждого соответственного подблока из множества подблоков видеокодер может определять ближайший блок, который был предсказан с использованием аффинной модели движения. В случаях, когда соответственный подблок находится у границы текущего блока, ближайший блок, который был предсказан с использованием аффинной модели движения, может находиться вне текущего блока. Например, для верхнего левого подблока текущего блока ближайший блок, который был предсказан с использованием аффинной модели движения, может быть блоком выше и левее верхнего левого подблока. Подобным образом, для верхнего правого подблока текущего блока ближайший блок, который был предсказан с использованием аффинной модели движения, может быть блоком выше верхнего правого подблока или блоком выше и правее верхнего правого подблока. Для подблока внутри текущего блока ближайший блок, который был предсказан с использованием аффинной модели движения, может быть другим подблоком текущего блока, который выше или левее подблока.
[0157] Этот подход отличается от того, как подблоки используются в JEM3.0. Как рассмотрено выше, в JEM3.0 видеокодер вычисляет векторы движения каждого подблока текущего блока только на основе векторов движения контрольных точек в верхнем левом и верхнем правом углах текущего блока. В отличие от этого, в соответствии с этой методикой этого раскрытия, векторы движения подблоков не вычисляются на основе векторов движения контрольных точек, а вместо этого предсказываются или непосредственно наследуются из экстраполированного движения соседних блоков. Это может давать в результате более высокую эффективность кодирования, поскольку векторы движения подблоков могут быть взяты из местоположений ближе к подблокам.
[0158] Фиг.10 изображает предсказание движения подблока или предсказание параметра в соответствии с методикой этого раскрытия, где аффинное движение каждого подблока (например, блока 4×4) текущего блока 1000 может быть предсказано или непосредственно унаследовано от экстраполированного движения его собственных соседних блоков. Как показано в примере с фиг.10, аффинное движение подблока 1002 TL предсказывается с использованием экстраполированного движения соседнего блока B2 (1004), в то время как подблок 1006 TR использует экстраполированное движение соседнего блока B1. В другом примере подблок может также использовать экстраполированное движение временных соседних блоков.
[0159] В аффинном промежуточном режиме или аффинном режиме объединения аффинные параметры (например, a, b, c, d, e и f в уравнениях (1) или (4)) каждого подблока (например, блока 4×4) текущего блока могут быть предсказаны или непосредственно унаследованы из его собственных соседних блоков. В одном примере соседний блок выбирается как ближайший соседний аффинный блок для каждого подблока. Например, как показано на фиг.10, аффинные параметры подблока 1002 TL предсказываются с использованием соседнего блока B2 (1004), в то время как подблок 1006 TR использует соседний блок B1 (1008).
[0160] В текущем проектировании аффинного предсказания движения в JEM3.0, если размер списка наборов-кандидатов аффинных MVP текущего блока меньше 2, видеокодер заполняет список наборов-кандидатов аффинных MVP с одним или более наборами аффинных MVP, составленными путем удваивания каждого из кандидатов AMVP. Это раскрытие может использовать термин "найденный из AMVP кандидат" для ссылки на набор аффинных MVP, составленный путем удвоения кандидатов AMVP. Однако, если вектор движения Списка X контрольной точки V0 (фиг.6A) и вектор движения Списка X контрольной точки V1 одинаковы в 4-параметрической аффинной модели движения или векторы движения Списка X контрольных точек V0, V1 и V2 (фиг.8A) одинаковы в 6-параметрической аффинной модели движения, вычисленные MV для каждого подблока текущего блока идентичны. Когда вычисленные MV для каждого подблока текущего блока идентичны, результаты являются теми же самыми, что и стандартное предсказание с компенсацией движения. Однако получение того же самого результата предсказания с компенсацией движения с использованием аффинного предсказания движения может давать в результате меньшую эффективность кодирования, чем стандартное предсказание с компенсацией движения. Таким образом, включение в список наборов-кандидатов аффинных MVP найденного из AMVP кандидата, который обеспечивает тот же самый результат, что и стандартное предсказание с компенсацией движения, представляет упущенную возможность включить в список наборов-кандидатов аффинных MVP набор аффинных MVP, который может давать в результате лучшую эффективность кодирования, чем стандартное предсказание с компенсацией движения.
[0161] Таким образом, в соответствии с методикой этого раскрытия видеокодер добавляет сдвиг к одному или более MVP в найденном из AMVP кандидате, чтобы удостовериться, что не все MVP внутри найденного из AMVP кандидата идентичны. Включение разнообразия наборов аффинных MVP в список наборов-кандидатов аффинных MVP может улучшить вероятность того, что использование одного из наборов аффинных MVP в списке наборов-кандидатов аффинных MVP дает в результате более высокую эффективность кодирования.
[0162] Фиг.11A изображает примерный список наборов-кандидатов аффинных MVP для 4-параметрической аффинной модели движения в соответствии с методикой этого раскрытия. Фиг.11B изображает примерный список наборов-кандидатов аффинных MVP для 6-параметрической аффинной модели движения в соответствии с методикой этого раскрытия. Как показано в примере с фиг.11A, при 4-параметрической аффинной модели движения видеокодер добавляет сдвиг к MVP для контрольной точки V1. Как показано в примере с фиг.11B, для 6-параметрической аффинной модели движения видеокодер добавляет сдвиг к MVP для контрольной точки V2. В некоторых примерах сдвиг различен для найденных из AMVP кандидатов в различных позициях в списке наборов-кандидатов аффинных MVP. Например, видеокодер может использовать +4 в качестве сдвига для первого найденного из AMVP кандидата и может использовать -4 в качестве сдвига для второго найденного из AMVP кандидата.
A
B
C
D
E
[0163] В примере с фиг.11A видеокодер генерирует список 1100 кандидатов Списка X (т.е. набор аффинных MVP) для текущего блока, где X равен 0 или 1. Чтобы генерировать список 1100 кандидатов, видеокодер проверяет потенциальные кандидаты. Каждый из потенциальных кандидатов в комбинации вектора движения Списка X блока, выбранного из блоков V, V и V (фиг.6A), и вектора движения Списка X блока, выбранного из V и V (фиг.6A). Если оба блока в потенциальном кандидате определяют вектор движения Списка X, видеокодер включает в себя потенциальный кандидат в качестве кандидата в списке 1100 кандидатов. Видеокодер останавливает добавление кандидатов после того, как список 1100 кандидатов включает в себя два кандидата.
[0164] После проверки всех из потенциальных кандидатов, если все еще меньше 2 кандидатов в списке 1100 кандидатов, видеокодер может добавлять первый найденный из AMVP кандидат 1102 к списку 1100 кандидатов. Первый найденный из AMVP кандидат 1102 определяет первый найденный из AMVP предиктор 1104 вектора движения и второй найденный из AMVP предиктор 1106 вектора движения. Первый найденный из AMVP предиктор 1104 вектора движения является предиктором вектора движения для первой контрольной точки текущего блока. Второй найденный из AMVP предиктор 1106 вектора движения является предиктором вектора движения для второй контрольной точки текущего блока. Видеокодер находит первый найденный из AMVP предиктор 1104 вектора движения тем же самым способом, который видеокодер использует, чтобы найти первый кандидат вектора движения в AMVP. Это раскрытие описывает методику для нахождения кандидатов вектора движения в AMVP выше. Второй найденный из AMVP предиктор 1106 вектора движения равен первому найденному из AMVP предиктору 1104 вектора движения плюс первый сдвиг (т.е., Сдвиг0) к по меньшей мере одному из горизонтального или вертикального компонента первого найденного из AMVP предиктора 1104 вектора движения.
1
[0165] Если все еще меньше 2 кандидатов в списке 1100 кандидатов после добавления первого найденного из AMVP кандидата 1102 в список 1100 кандидатов, видеокодер добавляет второй найденный из AMVP кандидат 1108 в список 1100 кандидатов. Второй найденный из AMVP кандидат 1108 движения определяет третий найденный из AMVP предиктор 1110 вектора движения и четвертый найденный из AMVP предиктор 1112 вектора движения. Видеокодер находит третий найденный из AMVP предиктор 1110 вектора движения тем же самым способом, который видеокодер использует, чтобы найти второй кандидат вектора движения в AMVP. Четвертый найденный из AMVP предиктор 1112 вектора движения тот же самый, что и третий найденный из AMVP вектор движения 1110, за исключением того, что видеокодер добавляет второй сдвиг (т.е., Сдвиг) к по меньшей мере одному из горизонтального или вертикального компонента третьего найденного из AMVP предиктора 1110 вектора движения. Если присутствует 2 кандидата в списке 1100 кандидатов после добавления первого найденного из AMVP кандидата 1102 к списку 1100 кандидатов, видеокодер не добавляет второй найденный из AMVP кандидат 1108 к списку 1100 кандидатов. Если текущий блок двунаправленным образом предсказывается, видеокодер может повторять процесс, описанный выше, для генерирования списка 1100 кандидатов в отношении Списка Y векторов движения, где Y равен 1-X.
A
B
C
D
E
F
G
0
0
[0166] Пример с фиг.11B изображает подобный процесс за исключением использования аффинной модели движения с 6 параметрами. Таким образом, чтобы сгенерировать список 1120 кандидатов, видеокодер проверяет потенциальных кандидатов. Каждый из потенциальных кандидатов является комбинацией вектора движения Списка X блока, выбранного из блоков V, V и V (фиг.8A), вектора движения Списка X блока, выбранного из V и V (фиг.8A), и вектора движения Списка X блока, выбранного из V и V (фиг. 8A). После проверки каждой из комбинаций, если все еще меньше 2 кандидатов в списке 1120 кандидатов, видеокодер может добавлять первый найденный из AMVP кандидат 1122 в список 1120 кандидатов. Первый найденный из AMVP кандидат 1122 определяет первый найденный из AMVP предиктор 1124 вектора движения (обозначенный AMVP на фиг.11B), второй найденный из AMVP предиктор 1126 вектора движения и третий найденный из AMVP предиктор 1128 вектора движения. Первый найденный из AMVP предиктор 1124 вектора движения является предиктором вектора движения для первой контрольной точки текущего блока, второй найденный из AMVP предиктор 1126 вектора движения является предиктором вектора движения для второй контрольной точки текущего блока, и третий найденный из AMVP предиктор 1128 вектора движения является предиктором вектора движения для третьей контрольной точки текущего блока. Видеокодер находит первый найденный из AMVP предиктор 1124 вектора движения тем же самым способом, который видеокодер использует, чтобы найти кандидат первого вектора движения в AMVP. Второй найденный из AMVP предиктор 1128 вектора движения равен первому, найденному из AMVP предиктору 1126 вектора движения. Третий найденный из AMVP предиктор 1128 вектора движения равен первому найденному из AMVP предиктору вектора движения плюс первый сдвиг (т.е., Сдвиг) к по меньшей мере одному из горизонтального или вертикального компонента первого найденного из AMVP вектора движения 1124.
1
1
[0167] Если все еще меньше 2 кандидатов в списке 1120 кандидатов после добавления первого найденного из AMVP кандидата 1122 к списку 1120 кандидатов, видеокодер добавляет второй найденный из AMVP кандидат 1130 в список 1120 кандидатов. Второй найденный из AMVP кандидат 1130 движения определяет четвертый найденный из AMVP предиктор 1132 вектора движения (обозначенный AMVP на фиг.11B), пятый найденный из AMVP предиктор 1134 вектора движения и шестой найденный из AMVP предиктор 1136 вектора движения. Видеокодер находит четвертый найденный из AMVP предиктор 1132 вектора движения тем же самым образом, который видеокодер использует, чтобы найти второй кандидат вектора движения в AMVP. Пятый найденный из AMVP предиктор 1134 вектора движения тот же самый, что и четвертый найденный из AMVP вектор 1132 движения. Шестой найденный из AMVP предиктор 1136 вектора движения равен третьему найденному из AMVP предиктору 1132 вектора движения плюс второй сдвиг (т.е. Сдвиг) к по меньшей мере одному из горизонтального или вертикального компонента третьего найденного из AMVP предиктора 1132 вектора движения. Если присутствует 2 кандидата в списке 1120 кандидатов после добавления первого найденного из AMVP кандидата 1122 к списку 1120 кандидатов, видеокодер не добавляет второй найденный из AMVP кандидат 1130 к списку 1120 кандидатов. Если текущий блок двунаправленным образом предсказывается, видеокодер может повторять процесс, описанный выше, для генерирования списка 1120 кандидатов в отношении Списка Y, где Y равен 1-X.
[0168] В некоторых примерах предсказание вектора движения из других блоков помимо соседних блоков, используемых для нахождения MVP в HEVC, может добавляться в список кандидатов. В некоторых примерах видеокодер обновляет глобальный MVP для аффинного движения динамически, и видеокодер использует глобальный MVP для аффинного движения, когда размер списка кандидатов меньше 2. Например, видеокодер может строить глобальную аффинную модель движения с использованием доступных аффинных блоков и может обновлять глобальную аффинную модель движения всегда, когда видеокодер реконструирует аффинный блок. Видеокодер может затем использовать эту глобальную аффинную модель движения, чтобы генерировать глобальный MVP для следующих аффинных блоков.
[0169] В HEVC и JEM3.0 флаг в заголовке среза, mvd_l1_zero_flag, указывает, равна ли MVD для второго списка опорных изображений (например, Списка 1) нулю, и, таким образом, не сигнализируется в битовом потоке, чтобы дополнительно улучшить эффективность кодирования. Иными словами, единственный флаг в заголовке среза для среза может указывать, что все MVD Списка 1 для всех блоков среза равны 0. Использование этого флага может увеличить эффективность кодирования путем устранения необходимости отдельно сигнализировать MVD Списка 1, равные 0, для каждого AMVP- или AF_ВНУТРЕННИМ образом закодированного блока среза.
[0170] Однако в соответствии с методикой этого раскрытия, mvd_l1_zero_flag может применяться к конкретным режимам кодирования, и для других режимов этот флаг игнорируется, даже если флаг указывает, что MVD равен нулю. В одном примере это нулевое проектирование MVD запрещается для аффинного режима движения, но это нулевое проектирование MVD все еще сохраняется для стандартного промежуточного режима (режима AMVP). Иными словами, даже если mvd_l1_zero_flag среза указывает, что все MVD Списка1 в срезе равны 0, кодер 20 видео может все равно сигнализировать MVD Списка1 для блоков среза, которые кодируются с использованием аффинного режима движения. Благодаря остающейся возможности сигнализировать MVD Списка1 для блоков, которые кодируются с использованием аффинного режима движения, несмотря на mvd_l1_zero_flag, указывающий, что MVD Списка1 равны 0, кодер 20 видео может иметь возможность избежать сигнализирования MVD Списка1 для блоков, которые не закодированы с использованием аффинного режима движения, при этом все еще имея возможность сигнализировать MVD Списка1 для блоков, которые кодируются с использованием аффинного режима движения. Это может давать в результате увеличенную эффективность кодирования. Это раскрытие описывает примерные операции в соответствии с этой примерной методикой ниже со ссылками на фиг.19A и фиг.19B.
[0171] Фиг.12 изображает структурную схему, иллюстрирующую примерный кодер 20 видео, который может осуществлять методики этого раскрытия. Фиг.12 обеспечена в целях объяснения и не должна считаться ограничивающей методики, широко проиллюстрированные и описанные в этом раскрытии. Методики этого раскрытия могут применяться к различным стандартам или способам кодирования.
[0172] В примере с фиг.12 кодер 20 видео включает в себя блок 1200 обработки предсказания, память 1201 видеоданных, блок 1202 остаточного генерирования, блок 1204 обработки преобразования, блок 1206 квантования, блок 1208 обратного квантования, блок 1210 обработки обратного преобразования, блок 1212 реконструкции, блок 1214 фильтра, буфер 1216 декодированных изображений и блок 1218 энтропийного кодирования. Блок 1200 обработки предсказания включает в себя блок 1220 обработки промежуточного предсказания и блок 1222 обработки внутреннего предсказания. Блок 1220 обработки промежуточного предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны).
[0173] Память 1201 видеоданных может быть сконфигурирована с возможностью сохранять видеоданные, которые должны быть закодированы компонентами кодера 20 видео. Видеоданные, сохраненные в памяти 1201 видеоданных, могут быть получены, например, от источника 18 видео. Буфер 1216 декодированных изображений может быть памятью опорных изображений, которая сохраняет опорные видеоданные для использования в кодировании видеоданных кодером 20 видео, например, во внутреннем или промежуточном режимах кодирования. Память 1201 видео данных и буфер 1216 декодированных изображений может формироваться любым из множества различных устройств памяти, таких как динамическая оперативная память (DRAM), включающая в себя синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 1201 видеоданных и буфер 1216 декодированных изображений могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах память 1201 видеоданных может быть на кристалле с другими компонентами кодера 20 видео или вне кристалла по отношению к этим компонентам. Память 1201 видео данных может быть той же самой или входить в состав носителей 19 данных с фиг.1.
[0174] Кодер 20 видео принимает видеоданные. Кодер 20 видео может кодировать каждую CTU в срезе изображения из видеоданных. Каждая из CTU может быть ассоциирована с одноразмерными блоками дерева кодирования (CTB) яркости и соответствующими CTB изображения. В составе кодирования CTU блок 1200 обработки предсказания может выполнять разделение, чтобы разделить CTB из CTU на прогрессивно меньшие блоки. Меньшие блоки могут быть блоками кодирования CU. Например, блок 1200 обработки предсказания может разделять CTB, ассоциированные с CTU, согласно древовидной структуре.
[0175] Кодер 20 видео может кодировать CU в CTU, чтобы генерировать закодированные представления CU (т.е. закодированные CU). В составе кодирования CU блок 1200 обработки предсказания может разделять блоки кодирования, ассоциированные с CU, между одной или более PU в CU. Таким образом, каждая PU может быть ассоциирована с блоком предсказания яркости и соответствующими блоками предсказания цветности. Кодер 20 видео и декодер 30 видео могут поддерживать PU, имеющие различные размеры. Как указанный выше, размер CU может ссылаться на размер блока кодирования яркости CU, и размер PU может ссылаться на размер блока предсказания яркости PU. Предполагая, что размер конкретной CU равен 2Nx2N, кодер 20 видео и декодер 30 видео могут поддерживать размеры PU 2Nx2N или NxN для внутреннего предсказания и симметричные размеры PU 2Nx2N, 2NxN, Nx2N, NxN или подобные для промежуточного предсказания. Кодер 20 видео и декодер 30 видео могут также поддерживать асимметричное разделение для размеров PU 2NxnU, 2NxnD, nLx2N и nRx2N для промежуточного предсказания.
[0176] Блок 1220 обработки промежуточного предсказания может генерировать предсказательные данные для PU. В составе генерирования предсказательных данных для PU блок 1220 обработки промежуточного предсказания выполняет промежуточное предсказание на PU. Предсказательные данные для PU могут включать в себя предсказательные блоки PU и информацию движения для PU. Блок 1220 обработки промежуточного предсказания может выполнять различные операции для PU CU в зависимости от того, находится ли PU в срезе I, срезе P или срезе B. В срезе I все PU предсказываются внутренним образом. Следовательно, если PU находится в срезе I, блок 1220 обработки промежуточного предсказания не выполняет промежуточное предсказание на PU. Таким образом, для блоков, закодированных в I-режиме предсказанный блок формируется с использованием пространственного предсказания из ранее закодированных соседних блоков внутри того же самого кадра. Если PU находится в срезе P, блок 1220 обработки промежуточного предсказания может использовать однонаправленное промежуточное предсказание, чтобы генерировать предсказательный блок PU. Если PU находится в срезе B, блок 1220 обработки промежуточного предсказания может использовать однонаправленное или двунаправленное промежуточное предсказание, чтобы генерировать предсказательный блок PU.
[0177] Блок 1220 обработки промежуточного предсказания может применять методики для аффинных моделей движения, как описано в другом месте в этом раскрытии. Например, блок 1220 обработки промежуточного предсказания может выбирать исходный аффинный блок, где исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком. В этом примере блок 1220 обработки промежуточного предсказания может экстраполировать векторы движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока. Кроме того, в этом примере блок 1220 обработки промежуточного предсказания может вставлять, в список наборов-кандидатов аффинных MVP, набор аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока. В этом примере блок 1220 обработки промежуточного предсказания может выбирать набор аффинных MVP в списке наборов-кандидатов аффинных MVP. Дополнительно, в этом примере блок 1220 обработки промежуточного предсказания может сигнализировать, в битовом потоке, MVD, которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP. Блок 1220 обработки промежуточного предсказания может также сигнализировать, в битовом потоке, индекс, указывающий позиции в списке наборов-кандидатов аффинных MVP выбранного набора аффинных MVP.
[0178] Блок 1222 обработки внутреннего предсказания может генерировать предсказательные данные для PU путем выполнения внутреннего предсказания над PU. Предсказательные данные для PU могут включать в себя предсказательные блоки PU и различные синтаксические элементы. Блок 1222 обработки внутреннего предсказания может выполнять внутреннее предсказание над PU в срезах I, срезах P и срезах B.
[0179] Чтобы выполнить внутреннее предсказание над PU, блок 1222 обработки внутреннего предсказания может использовать множество режимов внутреннего предсказания, чтобы генерировать множество наборов предсказательных данных для PU. Блок 1222 обработки внутреннего предсказания может использовать образцы из блоков образцов соседних PU, чтобы генерировать предсказательный блок для PU. Соседние PU могут быть выше, выше и правее, выше и левее или левее PU, предполагая порядок кодирования слева направо, сверху вниз для PU, CU и CTU. Блок 1222 обработки внутреннего предсказания может использовать различные количества режимов внутреннего предсказания, например, 33 направленных режима внутреннего предсказания. В некоторых примерах количество режимов внутреннего предсказания может зависеть от размера области, ассоциированной с PU.
[0180] Блок 1200 обработки предсказания может выбирать предсказательные данные для PU в CU из числа предсказательных данных, генерируемых блоком 1220 обработки промежуточного предсказания для PU, или предсказательных данных, генерируемых блоком 1222 обработки внутреннего предсказания для PU. В некоторых примерах блок 1200 обработки предсказания выбирает предсказательные данные для PU в CU на основе метрик скорости/искажения наборов предсказательных данных. Предсказательные блоки выбранных предсказательных данных могут называться здесь выбранными предсказательными блоками.
[0181] Блок 1202 остаточного генерирования может генерировать, на основе блоков кодирования (например, блоков кодирования яркости, Cb и Cr) для CU и выбранных предсказательных блоков (например, предсказательных блоков яркости, Cb и Cr) для PU в CU, остаточные блоки (например, остаточные блоки яркости, Cb и Cr) для CU. Например, блок 1202 остаточного генерирования может генерировать остаточные блоки CU так, что каждый образец в остаточных блоках имеет значение, равное разнице между образцом в блоке кодирования CU и соответствующим образцом в соответствующем выбранном предсказательном блоке PU в CU.
[0182] Блок 1204 обработки преобразования может выполнять разделение остаточных блоков CU на блоки преобразования TU в CU. Например, блок 1204 обработки преобразования может выполнять квадродревовидное разделение, чтобы разделить остаточные блоки CU на блоки преобразования TU в CU. Таким образом, TU может быть ассоциирована с блоком преобразования яркости и двумя блоками преобразования цветности. Размеры и позиции блоков преобразования яркости и цветности TU в CU могут основываться или не основываться на размерах и позициях блоков предсказания PU в CU. Квадродревовидная структура, известная как "остаточное квадродерево" (RQT), может включать в себя узлы, ассоциированные с каждой из областей. TU в CU могут соответствовать концевым узлам RQT.
[0183] Блок 1204 обработки преобразования может генерировать блоки коэффициентов преобразования для каждого TU в CU путем применения одного или более преобразований к блокам преобразования TU. Блок 1204 обработки преобразования может применять различные преобразования к блоку преобразования, ассоциированному с TU. Например, блок 1204 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование или концептуально-подобное преобразование к блоку преобразования. В некоторых примерах блок 1204 обработки преобразования не применяет преобразований к блоку преобразования. В таких примерах блок преобразования может рассматриваться как блок коэффициентов преобразования.
n
m
n
m
[0184] Блок 1206 квантования может квантовать коэффициенты преобразования в блоке коэффициентов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов преобразования. Например, -битный коэффициент преобразования может быть округлен в меньшую сторону к -битному коэффициенту преобразования в течение квантования, где  больше . Блок 1206 квантования может квантовать блок коэффициентов, ассоциированный с TU в CU, на основе значения параметра квантования (QP), ассоциированного с CU. Кодер 20 видео может регулировать степень квантования, применяемого к блокам коэффициентов, ассоциированным с CU, путем регулирования значения QP, ассоциированного с CU. Квантование может вносить потерю информации. Таким образом, квантованные коэффициенты преобразования могут иметь более низкую точность, чем исходные коэффициенты.
[0185] Блок 1208 обратного квантования и блок 1210 обработки обратного преобразования могут применять обратное квантование и обратное преобразование к блоку коэффициентов, соответственно, чтобы реконструировать остаточный блок из блока коэффициентов. Блок 1212 реконструкции может добавлять реконструированный остаточный блок к соответствующим образцам из одного или более предсказательных блоков, генерируемых блоком 1200 обработки предсказания, чтобы произвести реконструированный блок преобразования, ассоциированный с TU. Путем реконструирования блоков преобразования для каждого TU в CU, таким образом, кодер 20 видео может реконструировать блоки кодирования CU.
[0186] Блок 1214 фильтра может выполнять одну или более операций деблокирования, чтобы уменьшить артефакты блокирования в блоках кодирования, ассоциированных с CU. Буфер 1216 декодированных изображений может сохранять реконструированные блоки кодирования после того, как блок 1214 фильтра выполняет одну или более операций деблокирования над реконструированными блоками кодирования. Блок 1220 обработки промежуточного предсказания может использовать опорное изображение, которое содержит реконструированные блоки кодирования, чтобы выполнить промежуточное предсказание над PU других изображений. Дополнительно, блок 1222 обработки внутреннего предсказания может использовать реконструированные блоки кодирования в буфере 1216 декодированных изображений, чтобы выполнять внутреннее предсказание над другими PU в том же самом изображении, что и CU.
[0187] Блок 1218 энтропийного кодирования может принимать данные от других функциональных компонентов кодера 20 видео. Например, блок 1218 энтропийного кодирования может принимать блоки коэффициентов от блока 1206 квантования и может принимать синтаксические элементы от блока 1200 обработки предсказания. Блок 1218 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования над данными, чтобы сгенерировать энтропийно закодированные данные. Например, блок 1218 энтропийного кодирования может выполнять операцию CABAC, операцию контекстно-адаптивного кодирования переменной длины (CAVLC), операцию длины кодирования от переменной к переменной (V2V), операцию контекстно-адаптивного двоичного арифметического кодирования на основе синтаксиса (SBAC), операцию кодирования энтропии разделения интервала вероятности (PIPE), операцию экспоненциального кодирования Голомба или другой тип операции энтропийного кодирования над данными. Кодер 20 видео может выводить битовый поток, который включает в себя энтропийно закодированные данные, генерируемые блоком 1218 энтропийного кодирования. Например, битовый поток может включать в себя данные, которые представляют значения коэффициентов преобразования для CU.
[0188] Фиг.13 изображает структурную схему, иллюстрирующую примерный декодер 30 видео, который сконфигурирован с возможностью осуществлять методики этого раскрытия. Фиг.13 обеспечена в целях объяснения и не ограничения методик, широко проиллюстрированных и описанных в этом раскрытии. В целях объяснения это раскрытие описывает декодер 30 видео в контексте кодирования HEVC. Однако методики этого раскрытия могут применяться к другим стандартам или способам кодирования.
[0189] В примере с фиг.13 декодер 30 видео включает в себя блок 1300 энтропийного декодирования, память 1301 видеоданных, блок 1302 обработки предсказания, блок 1304 обратного квантования, блок 1306 обработки обратного преобразования, блок 1308 реконструкции, блок 1310 фильтра и буфер 1312 декодированных изображений. Блок 1302 обработки предсказания включает в себя блок 1314 компенсации движения и блок 1316 обработки внутреннего предсказания. В других примерах декодер 30 видео может включать в себя больше, меньше или другие функциональные компоненты.
[0190] Память 1301 видеоданных может сохранять закодированные видеоданные, такие как битовый поток закодированного видео, для декодирования компонентами декодера 30 видео. Видеоданные, сохраненные в памяти 1301 видеоданных, могут быть получены, например, от компьютерно-читаемого носителя 16, например, от локального источника видео, такого как камера, посредством проводной или беспроводной сетевой связи видеоданных или путем осуществления доступа к физическим запоминающим носителям. Память 1301 видеоданных может формировать буфер кодированных изображений (CPB), который хранит закодированные видеоданные из битового потока закодированного видео. Буфер 1312 декодированных изображений может быть памятью опорных изображений, которая хранит опорные видеоданные для использования в декодировании видеоданных декодером 30 видео, например, во внутреннем или промежуточном режимах кодирования, или для вывода. Память 1301 видеоданных и буфер 1312 декодированных изображений может формироваться любым из множества различных устройств памяти, таких как динамическая оперативная память (DRAM), включающая в себя синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 1301 видеоданных и буфер 1312 декодированных изображений могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах память 1301 видеоданных может быть на кристалле с другими компонентами декодера 30 видео или вне кристалла по отношению к этим компонентам. Память 1301 видеоданных может быть той же самой, что и среда 28 хранения с фиг.1, или ее частью.
[0191] Память 1301 видеоданных принимает и сохраняет закодированные видеоданные (например, единицы NAL) битового потока. Блок 1300 энтропийного декодирования может принимать закодированные видеоданные (например, единицы NAL) из памяти 1301 видеоданных и может синтаксически анализировать единицы NAL, чтобы получить синтаксические элементы. Блок 1300 энтропийного декодирования может энтропийно декодировать энтропийно закодированные синтаксические элементы в единицах NAL. Блок 1302 обработки предсказания, блок 1304 обратного квантования, блок 1306 обработки обратного преобразования, блок 1308 реконструкции и блок 1310 фильтра могут генерировать декодированные видеоданные на основе синтаксических элементов, извлеченных из битового потока. Блок 1300 энтропийного декодирования может выполнять процесс, в общем случае обратный процессу блока 1218 энтропийного кодирования.
[0192] В качестве дополнения к получению синтаксических элементов из битового потока декодер 30 видео может выполнять операцию реконструкции над CU. Чтобы выполнить операцию реконструкции над CU, декодер 30 видео может выполнять операцию реконструкции над каждой TU в CU. Путем выполнения операции реконструкции для каждой TU в CU декодер 30 видео может реконструировать остаточные блоки CU.
[0193] В составе выполнения операции реконструкции над TU в CU, блок 1304 обратного квантования может осуществлять обратное квантование, т.е. деквантование, блоков коэффициентов, ассоциированных с TU. После того как блок 1304 обратного квантования осуществляет обратное квантование блока коэффициентов, блок 1306 обработки обратного преобразования может применять одно или более обратных преобразований к блоку коэффициентов для того, чтобы генерировать остаточный блок, ассоциированный с TU. Например, блок 1306 обработки обратного преобразования может применять обратный DCT, обратное целое преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное преобразование поворота, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.
[0194] Блок 1304 обратного квантования может выполнять конкретные методики этого раскрытия. Например, для по меньшей мере одной соответственной группы квантования множества групп квантования внутри CTB CTU изображения видеоданных, блок 1304 обратного квантования может находить, на основе по меньшей мере частично локальной информации квантования, просигнализированной в битовом потоке, соответственный параметр квантования для соответственной группы квантования. Дополнительно, в этом примере блок 1304 обратного квантования может осуществлять обратное квантование, на основе соответственного параметра квантования для соответственной группы квантования, по меньшей мере одного коэффициента преобразования блока преобразования TU CU CTU. В этом примере соответственная группа квантования определяется как группа последовательных, в порядке кодирования, CU или блоков кодирования так, что границы соответственной группы квантования должны быть границами CU или блоков кодирования, и размер соответственной группы квантования больше либо равен порогу. Декодер 30 видео (например, блок 1306 обработки обратного преобразования, блок 1308 реконструкции и блок 1310 фильтра) может реконструировать, на основе обратно квантованных коэффициентов преобразования блока преобразования, блок кодирования CU.
[0195] Если PU закодирован с использованием внутреннего предсказания, блок 1316 обработки внутреннего предсказания может выполнять внутреннее предсказание, чтобы генерировать предсказательные блоки PU. Блок 1316 обработки внутреннего предсказания может использовать режим внутреннего предсказания, чтобы генерировать предсказательные блоки PU на основе образцов пространственно-соседних блоков. Блок 1316 обработки внутреннего предсказания может определять режим внутреннего предсказания для PU на основе одного или более синтаксических элементов, полученных из битового потока.
[0196] Если PU закодирован с использованием промежуточного предсказания, блок 1314 компенсации движения может определять информацию движения для PU. Блок 1314 компенсации движения может определять, на основе информации движения PU, один или более опорных блоков. Блок 1314 компенсации движения может генерировать, на основе одного или более опорных блоков, предсказательные блоки (например, предсказательные блоки яркости, Cb и Cr) для PU.
[0197] Блок 1314 компенсации движения может применять методики для аффинных моделей движения, описанные в другом месте в этом раскрытии. Например, блок 1314 компенсации движения может выбирать исходный аффинный блок, где исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком. В этом примере блок 1314 компенсации движения может экстраполировать векторы движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока. В этом примере блок 1314 компенсации движения вставляет, в список наборов-кандидатов аффинных MVP, набор аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока. Кроме того, блок 1314 компенсации движения определяет, на основе индекса, просигнализированного в битовом потоке, выбранный набор аффинных MVP в списке наборов-кандидатов аффинных MVP. В этом примере блок 1300 энтропийного декодирования может получать, из битового потока, MVD, которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP. Блок 1314 компенсации движения может, в этом примере, определять, на основе предикторов вектора движения, включенных в выбранный набор аффинных MVP, и упомянутых MVD, векторы движения контрольных точек текущего блока. В этом примере блок 1314 компенсации движения может генерировать, на основе векторов движения контрольных точек текущего блока, предсказательный блок.
[0198] Блок 1308 реконструкции может использовать блоки преобразования (например, блоки преобразования яркости, Cb и Cr) для TU в CU и предсказательные блоки (например, блоки яркости, Cb и Cr) PU в CU, т.е. либо данные внутреннего предсказания, либо данные промежуточного предсказания, в зависимости от применимости, чтобы реконструировать блоки кодирования (например, блоки кодирования яркости, Cb и Cr) для CU. Например, блок 1308 реконструкции может добавлять образцы блоков преобразования (например, блоков преобразования яркости, Cb и Cr) к соответствующим образцам предсказательных блоков (например, предсказательных блоков яркости, Cb и Cr), чтобы реконструировать блоки кодирования (например, блоки кодирования яркость, Cb и Cr) CU.
[0199] Блок 1310 фильтра может выполнять операцию деблокирования, чтобы уменьшать артефакты блокирования, ассоциированные с блоками кодирования CU. Декодер 30 видео может сохранять блоки кодирования CU в буфере 1312 декодированных изображений. Буфер 1312 декодированных изображений может обеспечивать опорные изображения для последующей компенсации движения, внутреннего предсказания и представления на устройстве отображения, таком как устройство 32 отображения с фиг.1. Например, декодер 30 видео может выполнять, на основе блоков в буфере 1312 декодированных изображений, операции внутреннего предсказания или промежуточного предсказания для PU других CU.
[0200] Фиг.14A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных, в соответствии с методикой этого раскрытия. Блок-схемы этого раскрытия обеспечены в качестве примеров. Другие примеры в соответствии с методиками этого раскрытия могут включать в себя больше, меньше или другие действия, или действия могут выполняться в другом порядке.
[0201] Как описано выше, в соответствии с одной или более методиками этого раскрытия аффинная модель движения для одного направления промежуточного предсказания может быть использована, чтобы улучшить сигнализирование аффинной модели движения для другого направления промежуточного предсказания. Фиг.14A и фиг.14B изображают примерные операции в соответствии с такими методиками.
[0202] В примере с фиг.14A кодер 20 видео определяет, на основе первого вектора движения контрольной точки аффинной модели движения текущего блока видеоданных, второй вектор движения контрольной точки аффинной модели движения текущего блока (1400). Первый вектор движения соответствует Списку X (где X равен 0 или 1), и второй вектор движения соответствует Списку Y (где Y равен 1-X). В одном примере для определения второго вектора движения контрольной точки кодер 20 видео сначала определяет вектор движения Списка X контрольной точки. Кодер 20 видео может определять вектор движения Списка X контрольной точки в соответствии с любым из примеров, обеспеченных в этом раскрытии. Кроме того, кодер 20 видео может выполнять поиск, чтобы определять вектор движения Списка Y для контрольной точки, который обеспечивает наилучшую издержку искажения в зависимости от скорости при заданном векторе движения Списка X для контрольной точки. В этом примере кодер 20 видео может сигнализировать разницу векторов движения, указывающую разницу между вектором движения Списка X для контрольной точки и вектором движения Списка Y для контрольной точки.
[0203] Дополнительно, кодер 20 видео генерирует, на основе аффинной модели движения текущего блока, предсказательный блок (1402). Кодер 20 видео может генерировать предсказательный блок в соответствии с примерами, обеспеченными в другом месте в этом описании. Например, кодер 20 видео может использовать вектор движения Списка X и Списка Y контрольных точек аффинной модели движения текущего блока, чтобы определять векторы движения Списка X и Списка Y для подблоков текущего блока, и может затем применять фильтры интерполяции компенсации движения, чтобы генерировать предсказательные блоки для каждого из подблоков, тем самым генерируя предсказательный блок для текущего блока.
[0204] В примере с фиг.14A кодер 20 видео также генерирует данные, используемые для декодирования текущего блока на основе предсказательного блока (1404). Кодер 20 видео может генерировать данные, используемые для декодирования текущего блока в соответствии с любым из примеров, обеспеченных в другом месте в этом раскрытии. Например, кодер 20 видео может генерировать остаточные данные, применять преобразование к остаточным данным, квантовать преобразованные остаточные данные и применять энтропийное кодирование к синтаксическим элементам, представляющим квантованные преобразованные остаточные данные, как описано в другом месте в этом раскрытии.
[0205] Фиг.14B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия. В примере с фиг.14B декодер 30 видео определяет, на основе первого вектора движения контрольной точки аффинной модели движения текущего блока видеоданных, второй вектор движения контрольной точки аффинной модели движения текущего блока (1420). Первый вектор движения соответствует первому списку опорных изображений (т.е. Списку X, где X равен 0 или 1). Второй вектор движения соответствует второму, другому списку опорных изображений (т.е. Списку Y, где Y равен 1-X). В этом примере декодер 30 видео может определять вектор движения Списка X для контрольной точки в соответствии с другими примерами, обеспеченными в этом раскрытии. Кроме того, в этом примере, чтобы определить вектор движения Списка Y для контрольной точки, декодер 30 видео может получать, из битового потока, разницу векторов движения, которая указывает разницу между вектором движения Списка X для контрольной точки и вектором движения Списка Y для контрольной точки. В этом примере декодер 30 видео может добавлять разницу векторов движения к вектору движения Списка X контрольной точки, чтобы определить вектор движения Списка Y для контрольной точки.
[0206] Дополнительно, декодер 30 видео генерирует, на основе аффинной модели движения текущего блока, предсказательный блок (1422). Декодер 30 видео может генерировать предсказательный блок тем же самым образом, что и кодер 20 видео на фиг.14A. Декодер 30 видео может реконструировать текущий блок на основе остаточных данных и предсказательного блока (1424). Например, декодер 30 видео может реконструировать текущий блок по меньшей мере частично путем добавления образцов остаточных данных к соответствующим образцам предсказательного блока.
[0207] Фиг.15A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных, в соответствии с методикой этого раскрытия. Как рассмотрено выше, в соответствии с некоторыми методиками этого раскрытия, MV контрольных точек текущего блока могут быть использованы в качестве кандидата MVP для MV других контрольных точек текущего блока. Фиг.15A и фиг.15B изображают примерные операции в соответствии с этими методиками.
[0208] В примере с фиг.15A кодер 20 видео определяет, на основе вектора движения первой контрольной точки аффинной модели движения текущего блока видеоданных, вектор движения второй контрольной точки аффинной модели движения текущего блока (1500). Например, кодер 20 видео может включать вектор движения первой контрольной точки (например, верхней левой контрольной точки) аффинной модели движения текущего блока в качестве кандидата в список кандидатов, используемый для предсказания вектора движения второй контрольной точки (например, верхней правой контрольной точки) аффинной модели движения текущего блока. Другие кандидаты в списке кандидатов могут включать в себя векторы движения соответствующих контрольных точек (например, верхних левых контрольных точек) соседних аффинно-кодированных блоков. В этом примере кодер 20 видео может затем выбирать кандидат из списка кандидатов (например, на основе издержки искажения в зависимости от скорости). Кроме того, в этом примере кодер 20 видео может затем использовать вектор движения выбранного кандидата в качестве предиктора вектора движения для второй контрольной точки. В некоторых примерах кодер 20 видео сигнализирует MVD, указывающую разницу между вектором движения выбранного кандидата и предиктором вектора движения для второй контрольной точки.
[0209] Кроме того, кодер 20 видео генерирует, на основе аффинной модели движения текущего блока, предсказательный блок (1502). Дополнительно, кодер 20 видео генерирует данные, используемые для декодирования текущего блока на основе предсказательного блока (1504). Кодер 20 видео может генерировать предсказательный блок и генерировать данные, используемые для декодирования текущего блока, в соответствии с примерами, обеспеченными в другом месте в этом раскрытии.
[0210] Фиг.15B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия. В примере с фиг.15B декодер 30 видео определяет, на основе вектора движения первой контрольной точки аффинной модели движения текущего блока видеоданных, вектор движения второй контрольной точки аффинной модели движения текущего блока (1520). Декодер 30 видео может определять вектор движения второй контрольной точки аффинной модели движения текущего блока тем же самым образом, как описано выше в отношении кодера 20 видео на фиг.15A. Чтобы определить вектор движения второй контрольной точки, декодер 30 видео может получать из битового потока индекс, указывающий выбранный кандидат в списке кандидатов. Список кандидатов может включать в себя векторы движения контрольных точек, включающие в себя вектор движения первой контрольной точки текущего блока. В некоторых примерах декодер 30 видео может определять вектор движения второй контрольной точки путем добавления просигнализированной MVD к вектору движения выбранного кандидата.
[0211] Дополнительно, декодер 30 видео генерирует, на основе аффинной модели движения текущего блока, предсказательный блок (1522). Декодер 30 видео реконструирует блок на основе предсказательного блока (1524). Декодер 30 видео может генерировать предсказательный блок и реконструировать блок в соответствии с примерами, обеспеченными в другом месте в этом раскрытии. Например, декодер 30 видео может реконструировать блок на основе предсказательного блока и декодированных остаточных данных.
[0212] Фиг.16A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия. Как рассмотрено выше, в соответствии с некоторыми методиками этого раскрытия, видеокодер может использовать модели движения одного или более соседних аффинных блоков текущего блока, чтобы предсказать текущую аффинную модель движения. В примере с фиг.16A кодер 20 видео использует модель движения единственного соседнего аффинного блока, чтобы предсказать по меньшей мере две контрольные точки аффинной модели движения для текущего блока (1600). Дополнительно, кодер 20 видео генерирует, на основе аффинной модели движения текущего блока, предсказательный блок (1602). Кодер 20 видео затем генерирует данные, используемые для декодирования текущего блока на основе предсказательного блока (1604). Кодер 20 видео может генерировать данные в соответствии с примерами, обеспеченными в другом месте в этом раскрытии.
[0213] Фиг.16B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных, в соответствии с методикой этого раскрытия. В примере с фиг.16B декодер 30 видео использует модель движения единственного соседнего аффинного блока, чтобы предсказывать аффинную модель движения для текущего блока (1620). Кроме того, декодер 30 видео генерирует, на основе аффинной модели движения текущего блока, предсказательный блок (1622). Декодер 30 видео может затем реконструировать текущий блок на основе предсказательного блока (1624). Декодер 30 видео может генерировать предсказательный блок и реконструировать текущий блок в соответствии с любым из примеров, обеспеченных в другом месте в этом раскрытии.
[0214] Фиг.17 изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия. Фиг.17 и фиг.18 изображают более подробные блок-схемы для операций, очерченных на фиг.16A и фиг.16B. В примере с фиг.17 кодер 20 видео выбирает исходный аффинный блок (1700). Исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком. Кодер 20 видео может выбирать исходный аффинный блок различными способами. Например, кодер 20 видео может определять, что исходный аффинный блок является первым встречающимся аффинно-кодированным блоком из множества соседних блоков, посещенных в предварительно определенном порядке посещения. В некоторых примерах кодер 20 видео может определять, что исходный аффинный блок является первым встречающимся доступным аффинно-кодированным блоком из множества соседних блоков согласно множеству предварительно определенных приоритетных наборов на основе предварительно определенного порядка посещения. Аффинно-кодированный блок не считается доступным, если аффинно-кодированный блок не находится в одном из предварительно определенных приоритетных наборов. Различные примеры приоритетных наборов описаны в другом месте в этом раскрытии.
[0215] Дополнительно, кодер 20 видео может экстраполировать векторы движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока (1702). Например, кодер 20 видео может выстраивать аффинную модель движения, определенную аффинными параметрами, определенными векторами движения контрольных точек исходного аффинного блока. Кодер 20 видео может затем находить векторы движения контрольных точек текущего блока (или так называемые экстраполированные) с использованием построенной аффинной модели движения. Например, чтобы экстраполировать вектор движения контрольной точки текущего блока, кодер 20 видео может использовать векторы движения построенной аффинной модели движения и позицию (x, y) контрольной точки текущего блока в уравнении 2, чтобы определять вектор движения контрольной точки.
[0216] Кроме того, кодер 20 видео может вставлять, в список наборов-кандидатов аффинных MVP, набор аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока (1704). В некоторых примерах кодер 20 видео может также включать стандартный набор аффинных MVP в набор аффинных MVP. Например, в одном примере кодер 20 видео может определять первый предиктор вектора движения как вектор движения блока, смежного с первой контрольной точкой текущего блока. В этом примере кодер 20 видео определяет второй предиктор вектора движения как вектор движения блока, смежного со второй контрольной точкой текущего блока (например, блоки A, B или C; или блоки D или E с фиг.6A). В этом примере кодер 20 видео вставляет, в список наборов-кандидатов аффинных MVP, набор аффинных MVP, который включает в себя первый предиктор вектора движения и второй предиктор вектора движения.
[0217] В некоторых примерах кодер 20 видео выбирает второй исходный аффинный блок. Второй исходный аффинный блок является другим аффинно-кодированным блоком, который пространственно соседствует с текущим блоком. В этом примере кодер 20 видео экстраполирует векторы движения контрольных точек второго исходного аффинного блока, чтобы определить предикторы второго вектора движения для контрольных точек текущего блока. Кроме того, кодер 20 видео вставляет второй набор аффинных MVP в список наборов-кандидатов аффинных MVP. Второй набор аффинных MVP включает в себя предикторы второго вектора движения для контрольных точек текущего блока.
[0218] После этого кодер 20 видео выбирает набор аффинных MVP в списке наборов-кандидатов аффинных MVP (1706). Кодер 20 видео может выбрать набор аффинных MVP на основе анализа искажения в зависимости от скорости наборов аффинных MVP в списке наборов-кандидатов аффинных MVP.
[0219] Кодер 20 видео может сигнализировать, в битовом потоке, MVD, которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP (1708). Дополнительно, кодер 20 видео может сигнализировать, в битовом потоке, индекс, указывающий позиции в списке наборов-кандидатов аффинных MVP выбранного набора аффинных MVP (1710).
[0220] Фиг.18 изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных, в соответствии с методикой этого раскрытия. В примере с фиг.18 декодер 30 видео выбирает исходный аффинный блок (1800). Исходный аффинный блок является аффинно-кодированным блоком, который пространственно соседствует с текущим блоком. Декодер 30 видео может выбирать исходный аффинный блок тем же самым образом, что и кодер 20 видео, как описано в другом месте в этом раскрытии.
[0221] Дополнительно, декодер 30 видео экстраполирует векторы движения контрольных точек исходного аффинного блока, чтобы определить предикторы вектора движения для контрольных точек текущего блока (1802). Декодер 30 видео вставляет, в список наборов-кандидатов аффинных MVP, набор аффинных MVP, который включает в себя предикторы вектора движения для контрольных точек текущего блока (1804). Декодер 30 видео может экстраполировать векторы движения контрольных точек и вставлять набор аффинных MVP тем же самым образом, что и кодер 20 видео, как описано в другом месте в этом раскрытии. Декодер 30 видео может также добавлять дополнительные наборы аффинных MVP в список наборов-кандидатов аффинных MVP, как описано выше в отношении кодера 20 видео.
[0222] Кроме того, декодер 30 видео определяет, на основе индекса, просигнализированного в битовом потоке, выбранный набор аффинных MVP в списке наборов-кандидатов аффинных MVP (1806). Декодер 30 видео получает, из битового потока, MVD, которые указывают разницы между векторами движения контрольных точек текущего блока и предикторами вектора движения в выбранном наборе аффинных MVP (1808). Дополнительно, декодер 30 видео определяет, на основе предикторов вектора движения, включенных в выбранный набор аффинных MVP, и упомянутых MVD, векторы движения контрольных точек текущего блока (1810). Например, декодер 30 видео может добавлять MVD к соответствующим предикторам вектора движения, чтобы определять векторы движения контрольных точек текущего блока.
[0223] Декодер 30 видео может затем генерировать, на основе векторов движения контрольных точек текущего блока, предсказательный блок (1812). Декодер 30 видео может реконструировать текущий блок на основе остаточных данных и предсказательного блока (1814). Декодер 30 видео может генерировать предсказательный блок и реконструировать текущий блок в соответствии с примерами, обеспеченными в другом месте в этом раскрытии.
[0224] Фиг.19A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных, в соответствии с методикой этого раскрытия. Как рассмотрено выше, в соответствии с некоторыми методиками этого раскрытия, в аффинном промежуточном режиме или аффинном режиме объединения аффинные параметры каждого подблока (например, блока 4×4) текущего блока могут быть предсказаны или непосредственно унаследованы от собственных соседних блоков подблока. Фиг.19A и фиг.19B изображают примерные операции в соответствии с такими методиками.
[0225] В примере с фиг.19A текущий блок видеоданных разделяется на множество подблоков. Для каждого соответственного подблока из множества подблоков кодер 20 видео использует экстраполированное движение соответственного соседнего аффинного блока, чтобы предсказать аффинное движение для соответственного подблока (1900). Кодер 20 видео может экстраполировать движение соответственного соседнего аффинного блока тем же самым способом, который описан в другом месте в этом раскрытии. В некоторых примерах, чтобы использовать экстраполированное движение соответственного соседнего аффинного блока, чтобы предсказать аффинное движение для соответственного подблока, кодер 20 видео предсказывает аффинное движение для соответственного подблока из экстраполированного движения соседнего аффинного блока. В некоторых случаях соседний аффинный блок является другим подблоком текущего блока. В некоторых примерах, чтобы использовать экстраполированное движение соответственного соседнего аффинного блока, кодер 20 видео наследует аффинное движение для каждого соответственного подблока непосредственно от экстраполированного движения соседнего аффинного блока. Иными словами, кодер 20 видео устанавливает опорные индексы и вектора движения контрольных точек соответственного подблока, равные индексам движения и экстраполированным векторам движения контрольных точек соответственного соседнего аффинного блока. Например, как показано на фиг.10, подблок 1002 может наследовать опорные индексы и экстраполированные векторы движения контрольных точек аффинного блока 1004.
[0226] Дополнительно, кодер 20 видео генерирует, на основе аффинного движения для подблоков, предсказательный блок (1902). Например, для каждого соответственного подблока из множества подблоков кодер 20 видео может использовать аффинное движение для соответственного подблока, чтобы генерировать соответственный предсказательный подблок для соответственного подблока. В этом примере кодер 20 видео может использовать аффинное движение для соответственного подблока, чтобы генерировать соответственный предсказательный подблок для соответственного подблока тем же самым способом, описанным в другом месте в этом раскрытии, для использования аффинного движения, чтобы генерировать предсказательный блок. Например, кодер 20 видео может использовать уравнение (2), чтобы вычислять x-компонент и y-компонент вектора движения для соответственного подблока. Кодер 20 видео может затем использовать вектор движения для соответственного подблока, чтобы определять предварительный или окончательный предсказательный блок для соответственного подблока. Кроме того, в этом примере кодер 20 видео может комбинировать предсказательные подблоки, чтобы генерировать предсказательный блок для текущего блока.
[0227] Кодер 20 видео генерирует данные, используемые для декодирования текущего блока, на основе предсказательного блока (1904). Кодер 20 видео может генерировать данные, используемые для декодирования текущего блока, в соответствии с любыми из соответствующих примеров, обеспеченных в другом месте в этом раскрытии.
[0228] Фиг.19B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия. В примере с фиг.16B текущий блок видеоданных разделяется на множество подблоков. Для каждого соответственного подблока из множества подблоков декодер 30 видео использует экстраполированное движение соответственного соседнего аффинного блока, чтобы предсказать аффинное движение для соответственного подблока (1920). Декодер 30 видео может предсказывать аффинное движение для соответственного подблока тем же самым образом, как описано выше в отношении кодера 20 видео. В некоторых примерах, чтобы использовать экстраполированное движение соответственного соседнего аффинного блока, декодер 30 видео предсказывает аффинное движение для каждого соответственного подблока из экстраполированного движения соседнего аффинного блока. В некоторых примерах, чтобы использовать экстраполированное движение соответственного соседнего аффинного блока, декодер 30 видео наследует аффинное движение для каждого соответственного подблока непосредственно от экстраполированного движения соседнего аффинного блока.
[0229] Кроме того, декодер 30 видео генерирует, на основе аффинного движения подблоков, предсказательный блок (1922). Декодер 30 видео может генерировать предсказательный блок тем же самым образом, как описано выше в отношении кодера 20 видео. Декодер 30 видео реконструирует блок на основе предсказательного блока (1924). Например, декодер 30 видео может реконструировать текущий блок, может добавлять образцы предсказательного блока к соответствующим остаточным образцам, декодированным из битового потока.
[0230] Фиг.20A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия. Как рассмотрено выше, в соответствии с некоторыми методиками этого раскрытия, сдвиги могут добавляться к MVP, чтобы удостовериться, что не все MVP внутри одного набора-кандидата MVP идентичны. Фиг.20A и фиг.20B изображают примерные операции в соответствии с этими методиками.
[0231] В частности, в примере с фиг.20A первый вектор движения является вектором движения первой контрольной точки аффинной модели движения текущего блока. Второй вектор движения является вектором движения второй контрольной точки аффинной модели движения текущего блока. На основе того, что полное количество кандидатов в списке кандидатов векторов движения меньше 2, и того, что первый вектор движения и второй вектор движения одинаковы, кодер 20 видео добавляет сдвиг к предиктору вектора движения (2000). Как описано в другом месте в этом раскрытии, сдвиг может быть различным для различных позиций в списке кандидатов.
[0232] Дополнительно, кодер 20 видео включает предиктор вектора движения в список кандидатов (2002). Например, кодер 20 видео может включать предиктор вектора движения в массив предикторов вектора движения. Дополнительно, кодер 20 видео выбирает кандидат в списке кандидатов (2004). Кодер 20 видео может выбрать кандидат так, что выбранный кандидат дает в результате наилучшее значение отношения искажения к скорости среди кандидатов в списке кандидатов. Кроме того, кодер 20 видео использует выбранный кандидат, чтобы определить предсказательный блок (2006). Например, кодер 20 видео может использовать векторы движения, определенные выбранным кандидатом, чтобы идентифицировать местоположения в опорном изображении. В этом примере кодер 20 видео может определять предсказательный блок путем применения вращения к копии блока образцов в идентифицированных местоположениях в опорном изображении. В некоторых примерах кодер 20 видео может использовать выбранный кандидат, чтобы определять первый предварительный предсказательный блок, и также определять второй предсказательный блок (например, на основе образцов в опорном изображении в другом списке опорных изображений). В этом примере кодер 20 видео может определять образцы в предсказательном блоке как средневзвешенные значения соответствующих образцов в первом предварительном предсказательном блоке и втором предварительном предсказательном блоке.
[0233] Кодер 20 видео может затем генерировать остаточные данные на основе образцов текущего блока и предсказательного блока (2008). Например, кодер 20 видео может генерировать остаточные данные так, что каждый образец остаточных данных указывает разницу между соответствующими образцами в текущем блоке и предсказательном блоке. Дополнительно, кодер 20 видео включает в битовый поток, который содержит закодированное представление видеоданных, указание выбранного кандидата в списке кандидатов (2010).
[0234] Фиг.20B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия. В примере с фиг.18B на основе того, что полное количество кандидатов в списке кандидатов векторов движения меньше 2, и того, что первый вектор движения и второй вектор движения одинаковы, декодер 30 видео добавляет сдвиг к предиктору вектора движения (2020). В этом примере первый вектор движения является вектором движения первой контрольной точки аффинной модели движения текущего блока видеоданных. Второй вектор движения является вектором движения второй контрольной точки аффинной модели движения текущего блока.
[0235] Кроме того, в примере с фиг.20B декодер 30 видео включает предиктор вектора движения в список кандидатов (2022). Декодер 30 видео может затем определять выбранный кандидат в списке кандидатов (2024). Дополнительно, декодер 30 видео может использовать выбранный кандидат, чтобы определить предсказательный блок (2026). Декодер 30 видео может затем реконструировать текущий блок на основе предсказательного блока (2028). В некоторых примерах декодер 30 видео может реконструировать текущий блок на основе предсказательного блока и остаточных данных.
[0236] Фиг.21A изображает блок-схему, иллюстрирующую примерную операцию для кодирования видеоданных в соответствии с методикой этого раскрытия. Как отмечено выше, в соответствии с методикой этого раскрытия, mvd_l1_zero_flag может быть применим к конкретным режимам кодирования, и для других режимов этот флаг игнорируется, даже если mvd_l1_zero_flag указывает, что MVD равна нулю. Фиг.21A и фиг.21B изображают примерные операции в соответствии с этой методикой.
[0237] Конкретным образом, в примере с фиг.21A кодер 20 видео включает в битовый поток флаг (например, mvd_l1_zero_flag), который указывает, сигнализируются ли разницы векторов движения для вторых списков опорных изображений (например, списка 1) в битовом потоке (2100). На основе того, что движение текущего блока видеоданных является аффинным режимом движения, независимо от значения флага, кодер 20 видео включает в битовый поток MVD (2102). Например, кодер 20 видео может включать в битовый поток синтаксический элемент, указывающий вертикальный компонент MVD, и второй элемент, указывающий горизонтальный компонент MVD.
[0238] Кроме того, кодер 20 видео генерирует, на основе аффинной модели движения текущего блока, предсказательный блок (2104). Кодер 20 видео может генерировать предсказательный блок на основе аффинной модели движения текущего блока в соответствии с любым из примеров, обеспеченных в другом месте в этом раскрытии. Кодер 20 видео может затем генерировать данные, используемые для декодирования текущего блока, на основе предсказательного блока (2106). Например, кодер 20 видео может генерировать остаточные данные, применять преобразование к остаточным данным, квантовать преобразованные остаточные данные и применять энтропийное кодирование к синтаксическим элементам, представляющим квантованные преобразованные остаточные данные, как описано в другом месте в этом раскрытии.
[0239] Фиг.21B изображает блок-схему, иллюстрирующую примерную операцию для декодирования видеоданных в соответствии с методикой этого раскрытия. В примере с фиг.21B декодер 30 видео получает, из битового потока, флаг (например, mvd_l1_zero_flag), который указывает, сигнализируются ли разницы векторов движения для вторых списков опорных изображений (например, списка 1) в битовом потоке (2120).
[0240] Дополнительно, в примере с фиг.21B на основе того, что движение текущего блока видеоданных является аффинным режимом движения, независимо от значения флага, декодер 30 видео получает из битового потока MVD (2122). Иными словами, декодер 30 видео декодирует MVD из битового потока. В некоторых примерах, чтобы получить MVD из битового потока, декодер 30 видео получает из битового потока первый синтаксический элемент, указывающий вертикальный компонент MVD, и второй синтаксический элемент, указывающий горизонтальный компонент MVD. Декодер 30 видео определяет, на основе разницы векторов движения, аффинную модель движения для текущего блока (2124). Дополнительно, декодер 30 видео генерирует, на основе аффинной модели движения текущего блока, предсказательный блок (2126). Кроме того, декодер 30 видео восстанавливает блок на основе предсказательного блока (2128). Декодер 30 видео может генерировать предсказательный блок и реконструировать блок в соответствии с любым из примеров, обеспеченных в другом месте в этом раскрытии.
[0241] Некоторые аспекты этого раскрытия были описаны в отношении расширений стандарта HEVC в целях иллюстрации. Однако методики, описанные в этом раскрытии, могут быть полезны для других процессов кодирования видео, включающих в себя другие стандартные или патентованные процессы кодирования видео, в текущий момент находящиеся в разработке или еще не разработанные.
[0242] Видеокодер, как описано в этом раскрытии, может ссылаться на кодер видео или декодер видео. Подобным образом, блок кодирования видео может ссылаться на кодер видео или декодер видео. Схожим образом, видеокодирование может ссылаться на кодирование видео или декодирование видео, в зависимости от применимости. В этом раскрытии фраза "на основе" может указывать "только на основе", "по меньшей мере частично на основе" или "в некотором смысле на основе". Это раскрытие может использовать термин "единица видео", или "блок видео", или "блок" для ссылки на один или более блоков образцов и синтаксических структур, используемых, чтобы кодировать образцы одного или более блоков образцов. Примерные типы единиц видео могут включать в себя CTU, CU, PU, единицы преобразования (TU), макроблоки, разделы макроблоков и так далее. В некоторых контекстах рассмотрение PU может заменяться рассмотрением макроблоков или разделов макроблоков. Примерные типы блоков видео могут включать в себя блоки дерева кодирования, блоки кодирования и другие типы блоков видеоданных.
[0243] Следует понимать, что в зависимости от примера конкретные действия или события по любой из методик, описанных здесь, могут выполняться в другой последовательности, могут добавляться, объединяться или пропускаться целиком (например, не все описанные действия или события необходимы для применения методик на практике). Кроме того, в конкретных примерах действия или события могут выполняться параллельно, например посредством многопотоковой обработки, обработки прерываний или множества процессоров, а не последовательно.
[0244] В одном или более примерах описанные функции могут осуществляться в аппаратных средствах, программных средствах, программно-аппаратных средствах или любой их комбинации. Если они осуществляются в программных средствах, функции могут сохраняться на или передаваться через, в качестве одной или более инструкций или кода, компьютерно-читаемый носитель и исполняться аппаратным процессором. Компьютерно-читаемые носители могут включать в себя компьютерно-читаемые носители информации, которые соответствуют материальному носителю, такому как запоминающие носители или носители связи, включающие в себя любой носитель, который обеспечивает перенос компьютерной программы от одного места к другому, например, согласно протоколу связи. Таким образом, компьютерно-читаемые носители в общем случае могут соответствовать (1) материальным компьютерно-читаемым носителям информации, которые являются некратковременными, или (2) носителю связи, такому как сигнал или несущая волна. Запоминающие носители могут быть любыми доступными носителями, к которым может осуществляться доступ одним или более компьютерами или одной или более схемами обработки, чтобы извлекать инструкции, код и/или структуры данных для осуществления методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.
[0245] В качестве примера и не ограничения, такие компьютерно-читаемые носители информации могут содержать RAM, ROM, EEPROM, CD-ROM или другой накопитель на оптических дисках, накопитель на магнитных дисках или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может быть использован, чтобы сохранять желаемый программный код в форме инструкций или структур данных, и к которому может осуществляться доступ компьютером. Также любое соединение корректно называется компьютерно-читаемым носителем. Например, если инструкции передаются от веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии связи (DSL) или беспроводных технологий, таких как инфракрасный, радио- и микроволновой спектр, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасный, радио- и микроволновой спектр, включаются в определение носителя. Следует понимать, однако, что компьютерно-читаемые носители информации и запоминающие носители не включают в себя соединения, несущие волны, сигналы или другие переходные носители, но вместо этого направляются к непереходным, материальным носителям информации. Термины "disk" и "disc", используемые здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-ray, причем "disks" обычно воспроизводят данные магнитным образом, в то время как "discs" воспроизводят данные оптическим образом посредством лазеров. Комбинации вышеупомянутого должны также включаться в объем компьютерно-читаемых носителей.
[0246] Функциональные возможности, описанные в этом раскрытии, могут выполняться схемами обработки фиксированных функций и/или программируемыми схемами обработки. Например, инструкции могут исполняться схемами обработки фиксированных функций и/или программируемыми схемами обработки. Такие схемы обработки могут включать в себя один или более процессоров, таких как один или более процессоров цифровых сигналов (DSP), универсальные микропроцессоры, специализированные интегральные схемы (ASIC), программируемые пользователем логические матрицы (FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", используемый здесь, может ссылаться на любую из вышеупомянутой структуры или любой другой структуры, подходящей для осуществления методик, описанных здесь. Дополнительно, в некоторых аспектах функциональные возможности, описанные здесь, могут быть обеспечены внутри специализированных аппаратных средств и/или программных модулей, сконфигурированных для кодирования и декодирования, или встроенных в комбинированный кодек. Также методики могут полностью осуществляться в одной или более схемах или логических элементах. Схемы обработки могут быть объединены с другими компонентами различными способами. Например, схема обработки может быть объединена с другими компонентами посредством межсоединения внутри устройства, проводного или беспроводного сетевого соединения или другого носителя связи.
[0247] Методики этого раскрытия могут осуществляться в широком множестве различных средств или устройств, включающих в себя беспроводную телефонную трубку, интегральную схему (IC) или набор IC (например, набор кристаллов). Различные компоненты, модули или блоки описаны в этом раскрытии, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных, чтобы выполнять раскрываемые методики, но не обязательно требуют осуществления различными аппаратными блоками. В действительности, как описано выше, различные блоки могут комбинироваться в аппаратный блок кодека или обеспечиваться набором взаимодействующих аппаратных блоков, включающих в себя один или более процессоров, как описано выше, в сочетании с подходящими программными средствами и/или программно-аппаратными средствами.
[0248] Были описаны различные примеры. Эти и другие примеры находятся в пределах объема нижеследующей формулы изобретения.