УСТРОЙСТВО КОДИРОВАНИЯ КАДРОВ, СПОСОБ КОДИРОВАНИЯ КАДРОВ, УСТРОЙСТВО ДЕКОДИРОВАНИЯ КАДРОВ И СПОСОБ ДЕКОДИРОВАНИЯ КАДРОВ
FRAME ENCODING DEVICE, FRAME ENCODING METHOD, FRAME DECODING DEVICE AND FRAME DECODING METHOD

Уровень техники
Область техники, к которой относится изобретение
[0001] Настоящее изобретение относится к технологии кодирования и декодирования кадров для разделения кадра на блоки и выполнения предсказания.
Описание предшествующего уровня техники
[0002] При кодировании и декодировании кадров, целевой кадр разделяется на блоки, каждый из которых представляет собой набор из предписанного числа выборок, и процесс выполняется в единицах блоков. Эффективность кодирования повышается посредством разделения кадра на соответствующие блоки и надлежащего задания внутрикадрового предсказания (интра-предсказания) и межкадрового предсказания (интер-предсказания).
[0003] При кодировании/декодировании движущихся кадров, эффективность кодирования повышается посредством интер-предсказания для выполнения предсказания из кодированного/декодированного кадра. Патентный документ 1 описывает технологию для применения аффинного преобразования во время интер-предсказания. Довольно часто объект вызывает деформацию, такую как увеличение/уменьшение и вращение в движущихся кадрах, и эффективное кодирование обеспечивается за счет применения технологии патентного документа 1.
Документы предшествующего уровня техники
[0004]
Патентные документы
Патентный документ 1. Не прошедшая экспертизу заявка на патент (Япония), первая публикация, № H9-172644
Сущность изобретения
[0005] Тем не менее, поскольку технология патентного документа 1 заключает в себе преобразование кадров, имеется проблема в том, что нагрузка по обработке является большой. С учетом вышеизложенной проблемы, настоящее изобретение предоставляет эффективную технологию кодирования с низкой нагрузкой.
[0006] Чтобы разрешать вышеописанную проблему, устройство кодирования кадров согласно первому аспекту настоящего изобретения включает в себя модуль хранения информации кодирования, выполненный с возможностью заполнять все потенциально подходящие варианты на основе предыстории в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории, по меньшей мере, предварительно определенным вектором движения и опорным индексом; модуль формирования списков потенциально подходящих вариантов объединения, выполненный с возможностью формировать список потенциально подходящих вариантов объединения, включающий в себя, по меньшей мере, вектор движения и опорный индекс блока, соседнего с целевым блоком кодирования, в качестве потенциально подходящего варианта объединения; модуль добавления потенциально подходящих вариантов объединения на основе предыстории, выполненный с возможностью добавлять потенциально подходящий вариант на основе предыстории, включенный в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в список потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения и выводить второй список потенциально подходящих вариантов объединения; и модуль выбора потенциально подходящих вариантов объединения, выполненный с возможностью выбирать потенциально подходящий вариант объединения из второго списка потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения для выбора, при этом модуль хранения информации кодирования добавляет потенциально подходящий вариант объединения для выбора в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории в качестве потенциально подходящего варианта на основе предыстории и выводит список потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0007] Чтобы разрешать вышеописанную проблему, способ кодирования кадров согласно второму аспекту настоящего изобретения включает в себя этап сохранения информации кодирования для заполнения всех потенциально подходящих вариантов на основе предыстории в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории, по меньшей мере, предварительно определенным вектором движения и опорным индексом; этап формирования списков потенциально подходящих вариантов объединения для формирования списка потенциально подходящих вариантов объединения, включающего в себя, по меньшей мере, вектор движения и опорный индекс блока, соседнего с целевым блоком кодирования, в качестве потенциально подходящего варианта объединения; этап добавления потенциально подходящих вариантов объединения на основе предыстории для добавления потенциально подходящего варианта на основе предыстории, включенного в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в список потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения и вывода второго списка потенциально подходящих вариантов объединения; и этап выбора потенциально подходящих вариантов объединения для выбора потенциально подходящего варианта объединения из второго списка потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения для выбора, при этом этап сохранения информации кодирования содержит добавление потенциально подходящего варианта объединения для выбора в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории в качестве потенциально подходящего варианта на основе предыстории и вывод списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0008] Чтобы разрешать вышеописанную проблему, программа для кодирования кадров согласно третьему аспекту настоящего изобретения инструктирует компьютеру выполнять этап сохранения информации кодирования для заполнения всех потенциально подходящих вариантов на основе предыстории в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории, по меньшей мере, предварительно определенным вектором движения и опорным индексом; этап формирования списков потенциально подходящих вариантов объединения для формирования списка потенциально подходящих вариантов объединения, включающего в себя, по меньшей мере, вектор движения и опорный индекс блока, соседнего с целевым блоком кодирования, в качестве потенциально подходящего варианта объединения; этап добавления потенциально подходящих вариантов объединения на основе предыстории для добавления потенциально подходящего варианта на основе предыстории, включенного в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в список потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения и вывода второго списка потенциально подходящих вариантов объединения; и этап выбора потенциально подходящих вариантов объединения для выбора потенциально подходящего варианта объединения из второго списка потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения для выбора, при этом этап сохранения информации кодирования содержит добавление потенциально подходящего варианта объединения для выбора в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории в качестве потенциально подходящего варианта на основе предыстории и вывод списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0009] Чтобы разрешать вышеописанную проблему, устройство декодирования кадров согласно четвертому аспекту настоящего изобретения включает в себя модуль хранения информации кодирования, выполненный с возможностью заполнять все потенциально подходящие варианты на основе предыстории в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории, по меньшей мере, предварительно определенным вектором движения и опорным индексом; модуль формирования списков потенциально подходящих вариантов объединения, выполненный с возможностью формировать список потенциально подходящих вариантов объединения, включающий в себя, по меньшей мере, вектор движения и опорный индекс блока, соседнего с целевым блоком декодирования, в качестве потенциально подходящего варианта объединения; модуль добавления потенциально подходящих вариантов объединения на основе предыстории, выполненный с возможностью добавлять потенциально подходящий вариант на основе предыстории, включенный в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в список потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения и выводить второй список потенциально подходящих вариантов объединения; и модуль выбора потенциально подходящих вариантов объединения, выполненный с возможностью выбирать потенциально подходящий вариант объединения из второго списка потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения для выбора, при этом модуль хранения информации кодирования добавляет потенциально подходящий вариант объединения для выбора в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории в качестве потенциально подходящего варианта на основе предыстории и выводит список потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0010] Чтобы разрешать вышеописанную проблему, способ декодирования кадров согласно пятому аспекту настоящего изобретения включает в себя этап сохранения информации кодирования для заполнения всех потенциально подходящих вариантов на основе предыстории в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории, по меньшей мере, предварительно определенным вектором движения и опорным индексом; этап формирования списков потенциально подходящих вариантов объединения для формирования списка потенциально подходящих вариантов объединения, включающего в себя, по меньшей мере, вектор движения и опорный индекс блока, соседнего с целевым блоком декодирования, в качестве потенциально подходящего варианта объединения; этап добавления потенциально подходящих вариантов объединения на основе предыстории для добавления потенциально подходящего варианта на основе предыстории, включенного в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в список потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения и вывода второго списка потенциально подходящих вариантов объединения; и этап выбора потенциально подходящих вариантов объединения для выбора потенциально подходящего варианта объединения из второго списка потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения для выбора, при этом этап сохранения информации кодирования содержит добавление потенциально подходящего варианта объединения для выбора в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории в качестве потенциально подходящего варианта на основе предыстории и вывод списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0011] Чтобы разрешать вышеописанную проблему, программа для декодирования кадров согласно шестому аспекту настоящего изобретения инструктирует компьютеру выполнять этап сохранения информации кодирования для заполнения всех потенциально подходящих вариантов на основе предыстории в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории, по меньшей мере, предварительно определенным вектором движения и опорным индексом; этап формирования списков потенциально подходящих вариантов объединения для формирования списка потенциально подходящих вариантов объединения, включающего в себя, по меньшей мере, вектор движения и опорный индекс блока, соседнего с целевым блоком декодирования, в качестве потенциально подходящего варианта объединения; этап добавления потенциально подходящих вариантов объединения на основе предыстории для добавления потенциально подходящего варианта на основе предыстории, включенного в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в список потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения и вывода второго списка потенциально подходящих вариантов объединения; и этап выбора потенциально подходящих вариантов объединения для выбора потенциально подходящего варианта объединения из второго списка потенциально подходящих вариантов объединения в качестве потенциально подходящего варианта объединения для выбора, при этом этап сохранения информации кодирования содержит добавление потенциально подходящего варианта объединения для выбора в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории в качестве потенциально подходящего варианта на основе предыстории и вывод списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0012] Согласно настоящему изобретению, можно реализовывать высокоэффективный процесс кодирования/декодирования кадров с низкой нагрузкой.
Краткое описание чертежей
[0013] Фиг. 1 является блок-схемой устройства кодирования кадров согласно варианту осуществления настоящего изобретения.
Фиг. 2 является блок-схемой устройства декодирования кадров согласно варианту осуществления настоящего изобретения.
Фиг. 3 является пояснительной блок-схемой последовательности операций способа, показывающей операцию разделения древовидного блока.
Фиг. 4 является схемой, показывающей состояние, в котором входной кадр разделяется на древовидные блоки.
Фиг. 5 является пояснительной схемой, показывающей Z-сканирование.
Фиг. 6A является схемой, показывающей разделенную форму блока.
Фиг. 6B является схемой, показывающей разделенную форму блока.
Фиг. 6C является схемой, показывающей разделенную форму блока.
Фиг. 6D является схемой, показывающей разделенную форму блока.
Фиг. 6E является схемой, показывающей разделенную форму блока.
Фиг. 7 является пояснительной блок-схемой последовательности операций способа, показывающей операцию разделения блока на четыре части.
Фиг. 8 является пояснительной блок-схемой последовательности операций способа, показывающей операцию разделения блока на две или три части.
Фиг. 9 является синтаксисом для выражения формы разбиения блоков.
Фиг. 10A является пояснительной схемой, показывающей интра-предсказание.
Фиг. 10B является пояснительной схемой, показывающей интра-предсказание.
Фиг. 11 является пояснительной схемой, показывающей опорный блок интер-предсказания.
Фиг. 12 является синтаксисом для выражения режима предсказания блоков кодирования.
Фиг. 13 является схемой, показывающей соответствие между синтаксическим элементом, связанным со интер-предсказанием, и режимом.
Фиг. 14 является пояснительной схемой, показывающей аффинную компенсацию движения двух управляющих точек.
Фиг. 15 является пояснительной схемой, показывающей аффинную компенсацию движения трех управляющих точек.
Фиг. 16 является блок-схемой подробной конфигурации модуля 102 интер-предсказания по фиг. 1.
Фиг. 17 является блок-схемой подробной конфигурации модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 16.
Фиг. 18 является блок-схемой подробной конфигурации модуля 302 извлечения режимов нормального объединения по фиг. 16.
Фиг. 19 является пояснительной блок-схемой последовательности операций способа, показывающей процесс извлечения режимов идентификации предикторов нормальных векторов движения модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 16.
Фиг. 20 является блок-схемой последовательности операций способа, показывающей процедуру обработки процесса извлечения режимов идентификации предикторов нормальных векторов движения.
Фиг. 21 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки процесса извлечения режимов нормального объединения.
Фиг. 22 является блок-схемой подробной конфигурации модуля 203 интер-предсказания по фиг. 2.
Фиг. 23 является блок-схемой подробной конфигурации модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 22.
Фиг. 24 является блок-схемой подробной конфигурации модуля 402 извлечения режимов нормального объединения по фиг. 22.
Фиг. 25 является пояснительной блок-схемой последовательности операций способа, показывающей процесс извлечения режимов идентификации предикторов нормальных векторов движения модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 22.
Фиг. 26 является пояснительной схемой, показывающей процедуру обработки для инициализации/обновления списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 27 является блок-схемой последовательности операций способа для процедуры обработки проверки на идентичные элементы в процедуре обработки для инициализации/обновления списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 28 является блок-схемой последовательности операций способа для процедуры обработки поэлементного сдвига в процедуре обработки для инициализации/обновления списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 29 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 30 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения потенциально подходящих вариантов объединения на основе предыстории.
Фиг. 31A является пояснительной схемой, показывающей пример процесса обновления списков потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 31B является пояснительной схемой, показывающей пример процесса обновления списков потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 31C является пояснительной схемой, показывающей пример процесса обновления списков потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 32 является пояснительной схемой, показывающей предсказание с компенсацией движения, когда время такта опорного кадра (RefL0Pic) L0 находится раньше времени такта целевого кадра (CurPic), в качестве L0-предсказания.
Фиг. 33 является пояснительной схемой, показывающей предсказание с компенсацией движения, когда время такта опорного кадра L0-предсказания находится позже времени такта целевого кадра, в качестве L0-предсказания.
Фиг. 34 является пояснительной схемой, показывающей направление предсказания для предсказания с компенсацией движения, когда время такта опорного кадра L0-предсказания находится раньше времени такта целевого кадра, и время такта опорного кадра L1-предсказания находится позже времени такта целевого кадра, в качестве бипредсказания.
Фиг. 35 является пояснительной схемой, показывающей направление предсказания для предсказания с компенсацией движения, когда время такта опорного кадра L0-предсказания и время такта опорного кадра L1-предсказания находятся раньше времени такта целевого кадра, в качестве бипредсказания.
Фиг. 36 является пояснительной схемой, показывающей направление предсказания для предсказания с компенсацией движения, когда время такта опорного кадра L0-предсказания и время такта опорного кадра L1-предсказания находятся позже времени такта целевого кадра, в качестве бипредсказания.
Фиг. 37 является пояснительной схемой, показывающей пример аппаратной конфигурации устройства кодирования/декодирования согласно варианту осуществления настоящего изобретения.
Фиг. 38 является таблицей, показывающей другой пример потенциально подходящих вариантов предикторов векторов движения на основе предыстории, добавленных согласно инициализации списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 39 является таблицей, показывающей другой пример потенциально подходящих вариантов предикторов векторов движения на основе предыстории, добавленных согласно инициализации списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 40 является таблицей, показывающей другой пример потенциально подходящих вариантов предикторов векторов движения на основе предыстории, добавленных согласно инициализации списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 41 является пояснительной схемой, показывающей конфигурацию списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 42 является пояснительной схемой, показывающей состояние, в котором элемент в начале списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории удаляется во время добавления в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 43 является пояснительной схемой, показывающей состояние, в котором каждый элемент сдвигается в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории во время добавления в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 44 является пояснительной схемой, показывающей состояние, в котором новый элемент добавляется во время добавления в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Фиг. 45 является пояснительной схемой, показывающей опорный порядок списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории в режиме нормального объединения согласно второму варианту осуществления.
Фиг. 46 является пояснительной схемой, показывающей опорный порядок списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории в режиме идентификации предикторов нормальных векторов движения согласно второму варианту осуществления.
Фиг. 47 является блок-схемой последовательности операций способа, иллюстрирующей процедуру обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории согласно второму варианту осуществления.
Подробное описание изобретения
[0014] В дальнейшем задаются технологические и технические термины, используемые в варианте осуществления.
Древовидный блок
[0015]
В варианте осуществления, целевой кадр кодирования/декодирования одинаково разделяется на единицы предварительно определенного размера. Эта единица задается как древовидный блок. Хотя размер древовидного блока составляет 128×128 выборок на фиг. 4, размер древовидного блока не ограничен этим, и любой размер может задаваться. Древовидный блок цели (соответствующей цели кодирования в процессе кодирования или цели декодирования в процессе декодирования) переключается в порядке растрового сканирования, т.е. слева направо и сверху вниз. Внутренняя часть каждого древовидного блока дополнительно может рекурсивно разделяться. Блок, который представляет собой цель кодирования/декодирования после того, как древовидный блок рекурсивно разделяется, задается как блок кодирования. Кроме того, древовидный блок и блок кодирования совместно задаются в качестве блоков. Эффективное кодирование обеспечивается посредством выполнения соответствующего разбиения блоков. Размер древовидного блока может составлять фиксированное значение, предварительно определенное посредством устройства кодирования и устройства декодирования, или размер древовидного блока, определенный посредством устройства кодирования, может быть выполнен с возможностью передаваться в устройство декодирования. Здесь, максимальный размер древовидного блока составляет 128×128 выборок, и минимальный размер древовидного блока составляет 16×16 выборок. Кроме того, максимальный размер блока кодирования составляет 64×64 выборки, и минимальный размер блока кодирования составляет 4×4 выборки.
Режим предсказания
[0016]
Переключение выполняется между интра-предсказанием (MODE_INTRA), в котором предсказание выполняется из обработанного сигнала кадров для целевого кадра, и интер-предсказанием (MODE_INTER), в котором предсказание выполняется из сигнала кадров для обработанного кадра в единицах целевых блоков кодирования.
Обработанный кадр используется для кадра, сигнала кадров, древовидного блока, блока, блока кодирования и т.п., полученных посредством декодирования сигнала, полностью кодированного в процессе кодирования, и используется для кадра, сигнала кадров, древовидного блока, блока, блока кодирования и т.п., полученных посредством завершения декодирования в процессе декодирования.
Режим, в котором идентифицируются интра-предсказание (MODE_INTRA) и интер-предсказание (MODE_INTER), задается как режим предсказания (PredMode). Режим предсказания (PredMode) имеет интра-предсказание (MODE_INTRA) или интер-предсказание (MODE_INTER) в качестве значения.
Интер-предсказание
[0017]
При интер-предсказании, при котором предсказание выполняется из сигнала кадров для обработанного кадра, множество обработанных кадров могут использоваться в качестве опорных кадров. Чтобы управлять множеством опорных кадров, два типа опорных списков в виде L0 (опорного списка 0) и L1 (опорного списка 1) задаются, и опорный кадр идентифицируется с использованием каждого опорного индекса. В P-срезе, может использоваться L0-предсказание (Pred_L0). В B-срезе, могут использоваться L0-предсказание (Pred_L0), L1-предсказание (Pred_L1) и бипредсказание (Pred_BI). L0-предсказание (Pred_L0) представляет собой интер-предсказание, которое ссылается на опорный кадр, управляемый в L0, и L1-предсказание (Pred_L1) представляет собой интер-предсказание, которое ссылается на опорный кадр, управляемый в L1. Бипредсказание (Pred_BI) представляет собой интер-предсказание, при котором как выполняется L0-предсказание, так и L1-предсказание, и ссылаются на один опорный кадр, управляемый в каждом из L0 и L1. Информация для идентификации L0-предсказания, L1-предсказания и бипредсказания задается как режим интер-предсказания. В последующей обработке, константы и переменные с подстрочным индексом LX в выводе предположительно должны обрабатываться для каждого из L0 и L1.
Режим идентификации предикторов векторов движения
[0018]
Режим идентификации предикторов векторов движения представляет собой режим для передачи индекса для идентификации предиктора вектора движения, разности векторов движения, режима интер-предсказания и опорного индекса и определения информации интер-предсказания целевого блока. Предиктор вектора движения извлекается из потенциально подходящего варианта предиктора вектора движения, извлекаемого из обработанного блока, соседнего с целевым блоком, либо блока, расположенного в идентичной позиции или около (рядом) с целевым блоком из числа блоков, принадлежащих обработанному кадру, и индекса для идентификации предиктора вектора движения.
Режим объединения
[0019]
Режим объединения представляет собой режим, в котором информация интер-предсказания целевого блока извлекается из информации интер-предсказания обработанного блока, соседнего с целевым блоком, либо блока, расположенного в идентичной позиции или около (рядом) с целевым блоком из числа блоков, принадлежащих обработанному кадру, без передачи разности векторов движения и опорного индекса.
[0020] Обработанный блок, соседний с целевым блоком, и информация интер-предсказания обработанного блока задаются как пространственные потенциально подходящие варианты объединения. Блок, расположенный в идентичной позиции или около (рядом) с целевым блоком из числа блоков, принадлежащих обработанному кадру, и информация интер-предсказания, извлекаемая из информации интер-предсказания блока, задаются как временные потенциально подходящие варианты объединения. Каждый потенциально подходящий вариант объединения регистрируется в списке потенциально подходящих вариантов объединения, и потенциально подходящий вариант объединения, используемый для предсказания целевого блока, идентифицируется посредством индекса объединения.
Соседний блок
[0021]
Фиг. 11 является пояснительной схемой, показывающей опорный блок, на который ссылаются при извлечении информации интер-предсказания в режиме идентификации предикторов векторов движения и режиме объединения. A0, A1, A2, B0, B1, B2 и B3 представляют собой обработанные блоки, соседние с целевым блоком. T0 представляет собой блок, расположенный в идентичной позиции или около (рядом) с целевым блоком в целевом кадре из числа блоков, принадлежащих обработанному кадру.
[0022] A1 и A2 представляют собой блоки, расположенные в левой стороне относительно целевого блока кодирования и соседние с целевым блоком кодирования. B1 и B3 представляют собой блоки, расположенные в верхней стороне относительно целевого блока кодирования и соседние с целевым блоком кодирования. A0, B0 и B2 представляют собой блоки, расположенные снизу слева, сверху справа и сверху слева относительно целевого блока кодирования, соответственно.
[0023] Ниже описываются подробности того, как обрабатывать соседние блоки в режиме идентификации предикторов векторов движения и режиме объединения.
Аффинная компенсация движения
[0024]
Аффинная компенсация движения представляет собой процесс выполнения компенсации движения посредством разделения блока кодирования на субблоки предварительно определенной единицы и отдельного определения вектора движения для каждого из субблоков, на которые разделяется блок кодирования. Вектор движения каждого субблока извлекается на основе одной или более управляющих точек, извлекаемых из информации интер-предсказания обработанного блока, соседнего с целевым блоком, либо блока, расположенного в идентичной позиции или около (рядом) с целевым блоком из числа блоков, принадлежащих обработанному кадру. Хотя размер субблока составляет 4×4 выборки в настоящем варианте осуществления, размер субблока не ограничен этим, и вектор движения может извлекаться в единицах выборок.
[0025] Пример аффинной компенсации движения в случае двух управляющих точек показывается на фиг. 14. В этом случае, две управляющих точки имеют два параметра в виде компонента горизонтального направления и компонента вертикального направления. Таким образом, аффинное преобразование в случае двух управляющих точек называется "четырехпараметрическим аффинным преобразованием". CP1 и CP2 по фиг. 14 представляют собой управляющие точки.
Пример аффинной компенсации движения в случае трех управляющих точек показывается на фиг. 15. В этом случае, три управляющих точки имеют два параметра в виде компонента горизонтального направления и компонента вертикального направления. Таким образом, аффинное преобразование в случае трех управляющих точек называется "шестипараметрическим аффинным преобразованием". CP1, CP2 и CP3 по фиг. 15 представляют собой управляющие точки.
[0026] Аффинная компенсация движения может использоваться как в режиме идентификации предикторов векторов движения, так и в режиме объединения. Режим, в котором аффинная компенсация движения применяется в режиме идентификации предикторов векторов движения, задается как режим идентификации предикторов векторов движения на основе субблоков, и режим, в котором аффинная компенсация движения применяется в режиме объединения, задается как режим объединения на основе субблоков.
Синтаксис интер-предсказания
[0027]
В дальнейшем описывается синтаксис, связанный со интер-предсказанием, с использованием фиг. 12 и 13.
Флаг merge_flag на фиг. 12 указывает то, задается целевой блок кодирования в режим объединения или в режим идентификации предикторов векторов движения. Флаг merge_affine_flag указывает то, применяется или нет режим объединения на основе субблоков к целевому блоку кодирования режима объединения. Флаг inter_affine_flag указывает то, следует или нет применять режим идентификации предикторов векторов движения на основе субблоков к целевому блоку кодирования режима идентификации предикторов векторов движения. Флаг cu_affine_type_flag используется для того, чтобы определять число управляющих точек в режиме идентификации предикторов векторов движения на основе субблоков.
Фиг. 13 показывает значение каждого синтаксического элемента и способ предсказания, соответствующий ему. Режим нормального объединения соответствует merge_flag=1 и merge_affine_flag=0 и не представляет собой режим объединения на основе субблоков. Режим объединения на основе субблоков соответствует merge_flag=1 и merge_affine_flag=1. Режим идентификации предикторов нормальных векторов движения соответствует merge_flag=0 и inter_affine_flag=0. Режим идентификации предикторов нормальных векторов движения представляет собой режим объединения предиктора вектора движения, который не представляет собой режим идентификации предикторов векторов движения на основе субблоков. Режим идентификации предикторов векторов движения на основе субблоков соответствует merge_flag=0 и inter_affine_flag=1. Когда merge_flag=0 и inter_affine_flag=1, cu_affine_type_flag дополнительно передается, чтобы определять число управляющих точек.
POC
[0028]
Номер в последовательности кадров (POC) представляет собой переменную, ассоциированную с кадром, который должен кодироваться, и задается равным значению, которое постепенно увеличивается на 1 согласно порядку вывода кадров. Согласно POC-значению, можно различать то, являются или нет кадры идентичными, чтобы различать переднезаднюю взаимосвязь между кадрами в порядке вывода или извлекать расстояние между кадрами. Например, если POC двух кадров имеют идентичное значение, может определяться то, что они представляют собой идентичный кадр. Когда POC двух кадров имеют различные значения, может определяться то, что кадр с меньшим POC-значением представляет собой кадр, который должен выводиться первым. Разность между POC двух кадров указывает межкадровое расстояние в направлении временной оси.
Первый вариант осуществления
[0029]
В дальнейшем описываются устройство 100 кодирования кадров и устройство 200 декодирования кадров согласно первому варианту осуществления настоящего изобретения.
[0030] Фиг. 1 является блок-схемой устройства 100 кодирования кадров согласно первому варианту осуществления. Устройство 100 кодирования кадров согласно варианту осуществления включает в себя модуль 101 разбиения блоков, модуль 102 интер-предсказания, модуль 103 интра-предсказания, запоминающее устройство 104 декодированных кадров, модуль 105 определения способа предсказания, модуль 106 формирования остатков, модуль 107 ортогонального преобразования/квантования, модуль 108 кодирования битовых строк, модуль 109 обратного квантования/обратного ортогонального преобразования, модуль 110 наложения сигналов кадров для декодирования и запоминающее устройство 111 для хранения информации кодирования.
[0031] Модуль 101 разбиения блоков рекурсивно разделяет входной кадр, чтобы формировать блок кодирования. Модуль 101 разбиения блоков включает в себя модуль квадратического разбиения, который разделяет разбитый целевой блок в горизонтальном направлении и в вертикальном направлении, и модуль двоичного/троичного разбиения, который разделяет разбитый целевой блок либо в горизонтальном направлении, либо в вертикальном направлении. Модуль 101 разбиения блоков задает сформированный блок кодирования в качестве целевого блока кодирования и предоставляет сигнал кадров целевого блока кодирования в модуль 102 интер-предсказания, модуль 103 интра-предсказания и модуль 106 формирования остатков. Кроме того, модуль 101 разбиения блоков предоставляет информацию, указывающую определенную структуру рекурсивного разбиения, в модуль 108 кодирования битовых строк. Ниже описывается подробная работа модуля 101 разбиения блоков.
[0032] Модуль 102 интер-предсказания выполняет интер-предсказание целевого блока кодирования. Модуль 102 интер-предсказания извлекает множество потенциально подходящих вариантов информации интер-предсказания из информации интер-предсказания, сохраненной в запоминающем устройстве 111 для хранения информации кодирования, и декодированного сигнала кадров, сохраненного в запоминающем устройстве 104 декодированных кадров, выбирает подходящий режим интер-предсказания из множества извлеченных потенциально подходящих вариантов и предоставляет выбранный режим интер-предсказания и предсказанный сигнал кадров согласно выбранному режиму интер-предсказания в модуль 105 определения способа предсказания. Ниже описывается подробная конфигурация и работа модуля 102 интер-предсказания.
[0033] Модуль 103 интра-предсказания выполняет интра-предсказание целевого блока кодирования. Модуль 103 интра-предсказания ссылается на декодированный сигнал кадров, сохраненный в запоминающем устройстве 104 декодированных кадров в качестве опорной выборки, и формирует предсказанный сигнал кадров согласно интра-предсказанию на основе информации кодирования, такой как режим интра-предсказания, сохраненной в запоминающем устройстве 111 для хранения информации кодирования. При интра-предсказании, модуль 103 интра-предсказания выбирает подходящий режим интра-предсказания из множества режимов интра-предсказания и предоставляет выбранный режим интра-предсказания и предсказанный сигнал кадров согласно выбранному режиму интра-предсказания в модуль 105 определения способа предсказания.
Примеры интра-предсказания показаны на фиг. 10A и 10B. Фиг. 10A показывает соответствие между направлением предсказания интра-предсказания и номером режима интра-предсказания. Например, в режиме 50 интра-предсказания, кадр интра-предсказания формируется посредством копирования опорных выборок в вертикальном направлении. Режим 1 интра-предсказания представляет собой DC-режим и представляет собой режим, в котором все выборочные значения целевого блока составляют среднее значение опорных выборок. Режим 0 интра-предсказания представляет собой планарный режим и представляет собой режим для создания двумерного кадра интра-предсказания из опорных выборок в вертикальном и горизонтальном направлениях. Фиг. 10B представляет собой пример, в котором кадр интра-предсказания, формируется в случае режима 40 интра-предсказания. Модуль 103 интра-предсказания копирует значение опорной выборки в направлении, указываемом посредством режима интра-предсказания, относительно каждой выборки целевого блока. Когда опорная выборка режима интра-предсказания не находится в целочисленной позиции, модуль 103 интра-предсказания определяет опорное выборочное значение согласно интерполяции из опорных выборочных значений соседних целочисленных позиций.
[0034] Запоминающее устройство 104 декодированных кадров сохраняет декодированный кадр, сформированный посредством модуля 110 наложения сигналов кадров для декодирования. Запоминающее устройство 104 декодированных кадров предоставляет сохраненный декодированный кадр в модуль 102 интер-предсказания и модуль 103 интра-предсказания.
[0035] Модуль 105 определения способа предсказания определяет оптимальный режим предсказания посредством оценки каждого интра-предсказания и интер-предсказания с использованием информации кодирования, остаточного объема кода, величины искажения между предсказанным сигналом кадров и целевым сигналом кадров и т.п. В случае интра-предсказания, модуль 105 определения способа предсказания предоставляет информацию интра-предсказания, такую как режим интра-предсказания, в качестве информации кодирования в модуль 108 кодирования битовых строк. В случае режима интер-предсказанного объединения, модуль 105 определения способа предсказания предоставляет информацию интер-предсказания, такую как индекс объединения и информация, указывающая то, представляет режим собой или нет режим объединения на основе субблоков (флаг объединения на основе субблоков), в качестве информации кодирования в модуль 108 кодирования битовых строк. В случае режима идентификации предикторов векторов движения интер-предсказания, модуль 105 определения способа предсказания предоставляет информацию интер-предсказания, такую как режим интер-предсказания, индекс предиктора вектора движения, опорные индексы L0 и L1, разность векторов движения и информация, указывающая то, представляет режим собой или нет режим идентификации предикторов векторов движения на основе субблоков (флаг предиктора вектора движения на основе субблоков), в качестве информации кодирования в модуль 108 кодирования битовых строк. Дополнительно, модуль 105 определения способа предсказания предоставляет определенную информацию кодирования в запоминающее устройство 111 для хранения информации кодирования. Модуль 105 определения способа предсказания предоставляет предсказанный сигнал кадров в модуль 106 формирования остатков и модуль 110 наложения сигналов кадров для декодирования.
[0036] Модуль 106 формирования остатков формирует остаток посредством вычитания предсказанного сигнала кадров из целевого сигнала кадров и предоставляет остаток в модуль 107 ортогонального преобразования/квантования.
[0037] Модуль 107 ортогонального преобразования/квантования выполняет ортогональное преобразование и квантование для остатка в соответствии с параметром квантования, чтобы формировать ортогонально преобразованный/квантованный остаток, и предоставляет сформированный остаток в модуль 108 кодирования битовых строк и модуль 109 обратного квантования/обратного ортогонального преобразования.
[0038] Модуль 108 кодирования битовых строк кодирует информацию кодирования согласно способу предсказания, определенному посредством модуля 105 определения способа предсказания для каждого блока кодирования, в дополнение к информации единиц последовательностей, кадров, срезов и блоков кодирования. В частности, модуль 108 кодирования битовых строк кодирует режим PredMode предсказания для каждого блока кодирования. Когда режим предсказания представляет собой интер-предсказание (MODE_INTER), модуль 108 кодирования битовых строк кодирует информацию кодирования (информацию интер-предсказания), такую как флаг для различения того, представляет или нет режим собой режим объединения, флаг объединения на основе субблоков, индекс объединения, когда режим представляет собой режим объединения, режим интер-предсказания, когда режим не представляет собой режим объединения, индекс предиктора вектора движения, информация относительно разности векторов движения и флаг предиктора вектора движения на основе субблоков в соответствии с указанным синтаксисом (синтаксическим правилом для битовых строк) и формирует первые битовые строки. Когда режим предсказания представляет собой интра-предсказание (MODE_INTRA), информация кодирования (информация интра-предсказания), такая как режим интра-предсказания кодируется в соответствии с указанным синтаксисом (синтаксическим правилом для битовых строк), и первые битовые строки формируются. Кроме того, модуль 108 кодирования битовых строк энтропийно кодирует ортогонально преобразованный и квантованный остаток в соответствии с указанным синтаксисом, чтобы формировать вторые битовые строки. Модуль 108 кодирования битовых строк мультиплексирует первые битовые строки и вторые битовые строки в соответствии с указанным синтаксисом и выводит поток битов.
[0039] Модуль 109 обратного квантования/обратного ортогонального преобразования вычисляет остаток посредством выполнения обратного квантования и обратного ортогонального преобразования для ортогонально преобразованного/квантованного остатка, предоставляемого из модуля 107 ортогонального преобразования/квантования, и предоставляет вычисленный остаток в модуль 110 наложения сигналов кадров для декодирования.
[0040] Модуль 110 наложения сигналов кадров для декодирования накладывает предсказанный сигнал кадров согласно определению модуля 105 определения способа предсказания и остаток, обратно квантованный и обратно ортогонально преобразованный посредством модуля 109 обратного квантования/обратного ортогонального преобразования, чтобы формировать декодированный кадр, и сохраняет декодированный кадр в запоминающем устройстве 104 декодированных кадров. Кроме того, модуль 110 наложения сигналов кадров для декодирования может сохранять декодированный кадр в запоминающем устройстве 104 декодированных кадров после выполнения процесса фильтрации для уменьшения искажения, такого как искажение в виде блочности вследствие кодирования для декодированного кадра.
[0041] Запоминающее устройство 111 для хранения информации кодирования сохраняет информацию кодирования, такую как режим предсказания (интер-предсказание или интра-предсказание), определенный посредством модуля 105 определения способа предсказания. В случае интер-предсказания, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интер-предсказания, такую как определенный вектор движения, опорные индексы опорных списков L0 и L1 и списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Кроме того, в случае режима интер-предсказанного объединения, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интер-предсказания, такую как индекс объединения и информация, указывающая то, представляет режим собой или нет режим объединения на основе субблоков (флаг объединения на основе субблоков), в дополнение к вышеописанной информации. Кроме того, в случае режима идентификации предикторов векторов движения интер-предсказания, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интер-предсказания, такую как режим интер-предсказания, индекс предиктора вектора движения, разность векторов движения и информация, указывающая то, представляет режим собой или нет режим идентификации предикторов векторов движения на основе субблоков (флаг предиктора вектора движения на основе субблоков), в дополнение к вышеописанной информации. В случае интра-предсказания, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интра-предсказания, такую как определенный режим интра-предсказания.
[0042] Фиг. 2 является блок-схемой, показывающей конфигурацию устройства декодирования кадров согласно варианту осуществления настоящего изобретения, соответствующего устройству кодирования кадров по фиг. 1. Устройство декодирования кадров согласно варианту осуществления включает в себя модуль 201 декодирования битовых строк, модуль 202 разбиения блоков, модуль 203 интер-предсказания, модуль 204 интра-предсказания, запоминающее устройство 205 для хранения информации кодирования, модуль 206 обратного квантования/обратного ортогонального преобразования, модуль 207 наложения сигналов кадров для декодирования и запоминающее устройство 208 декодированных кадров.
[0043] Поскольку процесс декодирования устройства декодирования кадров по фиг. 2 соответствует процессу декодирования, предоставленному в устройстве кодирования кадров по фиг. 1, компоненты запоминающего устройства 205 для хранения информации кодирования, модуля 206 обратного квантования/обратного ортогонального преобразования, модуля 207 наложения сигналов кадров для декодирования и запоминающего устройства 208 декодированных кадров по фиг. 2 имеют функции, соответствующие компонентам запоминающего устройства 111 для хранения информации кодирования, модуля 109 обратного квантования/обратного ортогонального преобразования, модуля 110 наложения сигналов кадров для декодирования и запоминающего устройства 104 декодированных кадров устройства кодирования кадров по фиг. 1.
[0044] Поток битов, предоставляемый в модуль 201 декодирования битовых строк, разделяется в соответствии с указанным синтаксическим правилом. Модуль 201 декодирования битовых строк декодирует отделенную первую битовую строку и получает информацию единиц последовательностей, кадров, срезов, блоков кодирования и информацию кодирования единиц блоков кодирования. В частности, модуль 201 декодирования битовых строк декодирует режим PredMode предсказания для различения интер-предсказания (MODE_INTER) или интра-предсказания (MODE_INTRA) в единицах блоков кодирования. Когда режим предсказания представляет собой интер-предсказание (MODE_INTER), модуль 201 декодирования битовых строк декодирует информацию кодирования (информацию интер-предсказания) относительно флага для различения того, представляет или нет режим собой режим объединения, индекс объединения, когда режим представляет собой режим объединения, флаг объединения на основе субблоков, режим интер-предсказания, когда режим представляет собой режим идентификации предикторов векторов движения, индекс предиктора вектора движения, разность векторов движения, флаг предиктора вектора движения на основе субблоков и т.п. в соответствии с указанным синтаксисом и предоставляет информацию кодирования (информацию интер-предсказания) в запоминающее устройство 205 для хранения информации кодирования через модуль 203 интер-предсказания и модуль 202 разбиения блоков. Когда режим предсказания представляет собой интра-предсказание (MODE_INTRA), информация кодирования (информация интра-предсказания), такая как режим интра-предсказания декодируется в соответствии с указанным синтаксисом, и информация кодирования (информация интра-предсказания) предоставляется в запоминающее устройство 205 для хранения информации кодирования через модуль 203 интер-предсказания или модуль 204 интра-предсказания и модуль 202 разбиения блоков. Модуль 201 декодирования битовых строк декодирует отделенные вторые битовые строки, чтобы вычислять ортогонально преобразованный/квантованный остаток, и предоставляет ортогонально преобразованный/квантованный остаток в модуль 206 обратного квантования/обратного ортогонального преобразования.
[0045] Когда режим PredMode предсказания целевого блока кодирования представляет собой режим идентификации предикторов векторов движения при интер-предсказании (MODE_INTER), модуль 203 интер-предсказания извлекает множество потенциально подходящих вариантов предикторов векторов движения с использованием информации кодирования ранее декодированного сигнала кадров, сохраненной в запоминающем устройстве 205 для хранения информации кодирования, и регистрирует множество извлеченных потенциально подходящих вариантов предикторов векторов движения в списке потенциально подходящих вариантов предикторов векторов движения, который описывается ниже. Модуль 203 интер-предсказания выбирает предиктор вектора движения согласно индексу предиктора вектора движения, декодированному и предоставляемому посредством модуля 201 декодирования битовых строк, из множества потенциально подходящих вариантов предикторов векторов движения, зарегистрированных в списке потенциально подходящих вариантов предикторов векторов движения, вычисляет вектор движения из разности векторов движения, декодированной посредством модуля 201 декодирования битовых строк, и выбранного предиктора вектора движения, и сохраняет вычисленный вектор движения в запоминающем устройстве 205 для хранения информации кодирования вместе с другой информацией кодирования. Информация кодирования блока кодирования, предоставляемая/сохраненная здесь, представляет собой режим PredMode предсказания, флаги predFlagL0[xP][yP] и predFlagL1[xP][yP], указывающие то, следует использовать L0-предсказание и L1-предсказание, опорные индексы refIdxL0[xP][yP] и refIdxL1[xP][yP] L0 и L1, векторы mvL0[xP][yP] и mvL1[xP][yP] движения L0 и L1 и т.п. Здесь, xP и yP представляют собой индексы, указывающие позицию верхней левой выборки блока кодирования в кадре. Когда режим PredMode предсказания представляет собой интер-предсказание (MODE_INTER), и режим интер-предсказания представляет собой L0-предсказание (Pred_L0), флаг predFlagL0, указывающий то, следует или нет использовать L0-предсказание, равен 1, и флаг predFlagL1, указывающий то, следует или нет использовать L1-предсказание, равен 0. Когда режим интер-предсказания представляет собой L1-предсказание (Pred_L1), флаг predFlagL0, указывающий то, следует или нет использовать L0-предсказание, равен, 0 и флаг predFlagL1, указывающий то, следует или нет использовать L1-предсказание, равен 1. Когда режим интер-предсказания представляет собой бипредсказание (Pred_BI), и флаг predFlagL0, указывающий то, следует или нет использовать L0-предсказание, и флаг predFlagL1, указывающий то, следует или нет использовать L1-предсказание, равны 1. Дополнительно, потенциально подходящие варианты объединения извлекаются в режиме объединения, в котором режим PredMode предсказания блока кодирования цели представляет собой интер-предсказание (MODE_INTER). Множество потенциально подходящих вариантов объединения извлекаются с использованием информации кодирования ранее декодированных блоков кодирования, сохраненной в запоминающем устройстве 205 для хранения информации кодирования, и регистрируются в списке потенциально подходящих вариантов объединения, который описывается ниже, потенциально подходящий вариант объединения, соответствующий индексу объединения, который должен декодироваться и предоставляться посредством модуля 201 декодирования битовых строк, выбирается из множества потенциально подходящих вариантов объединения, зарегистрированных в списке потенциально подходящих вариантов объединения, и информация интер-предсказания, такая как флаги predFlagL0[xP][yP] и predFlagL1[xP][yP], указывающие то, следует или нет использовать L0-предсказание и L1-предсказание выбранного потенциально подходящего варианта объединения, опорные индексы refIdxL0[xP][yP] и refIdxL1[xP][yP] L0 и L1 и векторы mvL0[xP][yP] и mvL1[xP][yP] движения L0 и L1, сохраняется в запоминающем устройстве 205 для хранения информации кодирования. Здесь, xP и yP представляют собой индексы, указывающие позицию верхней левой выборки блока кодирования в кадре. Ниже описывается подробная конфигурация и работа модуля 203 интер-предсказания.
[0046] Модуль 204 интра-предсказания выполняет интра-предсказание, когда режим PredMode предсказания блока кодирования цели представляет собой интра-предсказание (MODE_INTRA). Информация кодирования, декодированная посредством модуля 201 декодирования битовых строк, включает в себя режим интра-предсказания. Модуль 204 интра-предсказания формирует предсказанный сигнал кадров согласно интра-предсказанию из декодированного сигнала кадров, сохраненного в запоминающем устройстве 208 декодированных кадров, в соответствии с режимом интра-предсказания, включенным в информацию кодирования, декодированную посредством модуля 201 декодирования битовых строк, и предоставляет сформированный предсказанный сигнал кадров в модуль 207 наложения сигналов кадров для декодирования. Поскольку модуль 204 интра-предсказания соответствует модулю 103 интра-предсказания устройства 100 кодирования кадров, процесс, аналогичный процессу модуля 103 интра-предсказания, выполняется.
[0047] Модуль 206 обратного квантования/обратного ортогонального преобразования выполняет обратное ортогональное преобразование и обратное квантование для ортогонально преобразованного/квантованного остатка, декодированного посредством модуля 201 декодирования битовых строк, и получает обратно ортогонально преобразованный/обратно квантованный остаток.
[0048] Модуль 207 наложения сигналов кадров для декодирования декодирует сигнал кадров для декодирования посредством наложения предсказанного сигнала кадров, интер-предсказанного посредством модуля 203 интер-предсказания, или предсказанного сигнала кадров, внутренне предсказанного посредством модуля 204 интра-предсказания, и остатка, обратно ортогонально преобразованного/обратно квантованного посредством модуля 206 обратного квантования/обратного ортогонального преобразования, и сохраняет декодированный сигнал кадров для декодирования в запоминающем устройстве 208 декодированных кадров. Во время хранения в запоминающем устройстве 208 декодированных кадров, модуль 207 наложения сигналов кадров для декодирования может сохранять декодированный кадр в запоминающем устройстве 208 декодированных кадров после того, как процесс фильтрации для уменьшения искажения в виде блочности и т.п. вследствие кодирования выполняется для декодированного кадра.
[0049] Далее описывается работа модуля 101 разбиения блоков в устройстве 100 кодирования кадров. Фиг. 3 является блок-схемой последовательности операций способа, показывающей операцию разделения кадра на древовидные блоки и дополнительного разделения каждого древовидного блока. Во-первых, входной кадр разделяется на древовидные блоки, имеющие предварительно определенный размер (этап S1001). Каждый древовидный блок сканируется в предварительно определенном порядке, т.е. в порядке растрового сканирования (этап S1002), и внутренняя часть древовидного блока цели разделяется (этап S1003).
[0050] Фиг. 7 является блок-схемой последовательности операций способа, показывающей подробную работу процесса разбиения этапа S1003. Во-первых, определяется то, должен или нет целевой блок разделяться на четыре части (этап S1101).
[0051] Когда определяется то, что целевой блок должен разделяться на четыре части, целевой блок разделяется на четыре части (этап S1102). Каждый блок, полученный посредством разделения целевого блока, сканируется в порядке Z-сканирования, т.е. в порядке верхней левой, верхней правой, нижней левой и нижней правой частей (этап S1103). Фиг. 5 показывает пример порядка Z-сканирования, и ссылка с номером 601 по фиг. 6A показывает пример, в котором целевой блок разделяется на четыре части. Числа 0-3 ссылки с номером 601 по фиг. 6A указывают порядок обработки. Затем процесс разбиения по фиг. 7 рекурсивно выполняется для каждого блока из разделения на этапе S1101 (этап S1104).
[0052] Когда определяется то, что целевой блок не должен разделяться на четыре части, двоичное/троичное разбиение выполняется (этап S1105).
[0053] Фиг. 8 является блок-схемой последовательности операций способа, показывающей подробную работу процесса двоичного/троичного разбиения этапа S1105. Во-первых, определяется то, должен либо нет целевой блок разделяться на две или три части, т.е. то, должно либо нет выполняться двоичное или троичное разбиение (этап S1201).
[0054] Когда не определяется то, что целевой блок должен разделяться на две или три части, т.е. когда определяется то, что целевой блок не должен разделяться, разбиение завершается (этап S1211). Таким образом, процесс рекурсивного разбиения дополнительно не выполняется для блоков, разделенных согласно процессу рекурсивного разбиения.
[0055] Когда определяется то, что целевой блок должен разделяться на две или три части, дополнительно определяется то, должен или нет целевой блок разделяться на две части (этап S1202).
[0056] Когда определяется то, что целевой блок должен разделяться на две части, определяется то, должен или нет целевой блок разделяться на верхнюю и нижнюю части (в вертикальном направлении) (этап S1203). На основе результата определения, целевой блок разделяется на две части, которые представляют собой верхнюю и нижнюю части (в вертикальном направлении) (этап S1204), или целевой блок разделяется на две части, которые представляют собой левую и правую части (в горизонтальном направлении) (этап S1205). Как результат этапа S1204, целевой блок разделяется на две части, которые представляют собой верхнюю и нижнюю части (в вертикальном направлении), как указано посредством ссылки с номером 602 на фиг. 6B. Как результат этапа S1205, целевой блок разделяется на две части, которые представляют собой левую и правую части (в горизонтальном направлении), как указано посредством ссылки с номером 604 по фиг. 6D.
[0057] Когда не определяется то, что целевой блок должен разделяться на две части, т.е. когда определяется то, что целевой блок должен разделяться на три части, на этапе S1202, определяется то, должен или нет целевой блок разделяться на верхнюю, среднюю и нижнюю части (в вертикальном направлении) (этап S1206). На основе результата определения, целевой блок разделяется на три части, которые представляют собой верхнюю, среднюю и нижнюю части (в вертикальном направлении) (этап S1207), или целевой блок разделяется на три части, которые представляют собой левую, среднюю и правую части (в горизонтальном направлении) (этап S1208). Как результат этапа S1207, целевой блок разделяется на три части, которые представляют собой верхнюю, среднюю и нижнюю части (в вертикальном направлении), как указано посредством ссылки с номером 603 по фиг. 6C. Как результат этапа S1208, целевой блок разделяется на три части, которые представляют собой левую, среднюю и правую части (в горизонтальном направлении), как указано посредством ссылки с номером 605 по фиг. 6E.
[0058] После того, как любой из этапов S1204, S1205, S1207 и S1208 выполняется, каждый из блоков, на которые разделяется целевой блок, сканируется в порядке слева направо и сверху вниз (этапе S1209). Номера 0-2 ссылок с номерами 602-605 по фиг. 6B в 6E указывают порядок обработки. Для каждого из блоков, на которые разделяется целевой блок, процесс двоичного/троичного разбиения по фиг. 8 рекурсивно выполняется (этап S1210).
[0059] Рекурсивное разбиение блоков, описанное здесь, может ограничивать необходимость разбиения согласно числу разбиений или размеру целевого блока и т.п. Информация, которая ограничивает необходимость разбиения, может реализовываться посредством конфигурации, в которой информация не доставляется посредством выполнения согласования между устройством кодирования и устройством декодирования заранее, либо реализовываться посредством конфигурации, в которой устройство кодирования определяет информацию, которая ограничивает необходимость разбиения, записывает информацию в битовую строку и доставляет информацию в устройство декодирования.
[0060] Когда определенный блок разделяется, блок перед разбиением называется "родительским блоком", и каждый блок после разбиения называется "дочерним блоком".
[0061] Далее описывается работа модуля 202 разбиения блоков в устройстве 200 декодирования кадров. Модуль 202 разбиения блоков разделяет древовидный блок согласно процедуре обработки, аналогичной процедуре модуля 101 разбиения блоков устройства 100 кодирования кадров. Тем не менее, имеется отличие в том, что модуль 101 разбиения блоков устройства 100 кодирования кадров применяет технологию оптимизации, такую как оценка оптимальной формы на основе распознавания кадров либо оптимизация показателя искажения, чтобы определять оптимальную форму разбиения блоков, тогда как модуль 202 разбиения блоков устройства 200 декодирования кадров определяет форму разбиения блоков посредством информации разбиения декодирования блока, записанной в битовой строке.
[0062] Синтаксис (синтаксическое правило для битовых строк), связанный с разбиением блоков согласно первому варианту осуществления, показывается на фиг. 9; coding_quadtree() представляет синтаксис, связанный с процессом квадратического разбиения для блока; multi_type_tree() представляет синтаксис, связанный с процессом двоичного или троичного разбиения для блока; qt_split представляет собой флаг, указывающий то, разделяется или нет блок на четыре части; qt_split=1, когда блок разделяется на четыре части, и qt_split=0, когда блок не разделяется на четыре части. Когда блок разделяется на четыре части (qt_split=1), процесс квадратического разбиения рекурсивно выполняется для блоков, каждый из которых разделен на четыре части (coding_quadtree (0), coding_quadtree (1), coding_quadtree (2), coding_quadtree (3), и аргументы 0-3 соответствуют числам, указываемым посредством ссылки с номером 601 по фиг. 6A). Когда блок не разделяется на четыре части (qt_split=0), последующее разбиение определяется согласно multi_type_tree(); mtt_split представляет собой флаг, указывающий то, выполняется дополнительно разбиение либо нет. Когда разбиение дополнительно выполняется (mtt_split=1), передаются mtt_split_vertical, который представляет собой флаг, указывающий то, разделяется блок вертикально или горизонтально, и mtt_split_binary, который представляет собой флаг для определения того, выполняется двоичное или троичное разбиение; mtt_split_vertical=1 указывает разбиение в вертикальном направлении, и mtt_split_vertical=0 указывает разбиение в горизонтальном направлении; mtt_split_binary=1 указывает двоичное разбиение, и mtt_split_binary=0 указывает троичное разбиение. При двоичном разбиении (mtt_split_binary=1), процесс разбиения рекурсивно выполняется для блоков, каждый из которых разделяется на две части (multi_type_tree (0), multi_type_tree (1), и аргументы 0-1 соответствуют числам, указываемым посредством ссылки с номером 602 или 604 на фиг. 6B в 6D). В случае троичного разбиения (mtt_split_binary=0), процесс разбиения рекурсивно выполняется для блоков, каждый из которых разделяется на три части (multi_type_tree (0), multi_type_tree (1), multi_type_tree (2), и аргументы 0-2 соответствуют числам, указываемым посредством ссылки с номером 603 по фиг. 6B, или числам, указываемым посредством ссылки с номером 605 по фиг. 6E). До тех пор, пока mtt_split=0 не достигается, иерархическое разбиение блоков выполняется посредством рекурсивного вызова multi_type_tree.
Интер-предсказание
[0063]
Способ интер-предсказания согласно варианту осуществления осуществляется в модуле 102 интер-предсказания устройства кодирования кадров по фиг. 1 и в модуле 203 интер-предсказания устройства декодирования кадров по фиг. 2.
[0064] В дальнейшем описывается способ интер-предсказания согласно варианту осуществления со ссылкой на чертежи. Способ интер-предсказания осуществляется в процессах кодирования и декодирования в единицах блоков кодирования.
Описание модуля 102 интер-предсказания на стороне кодирования
[0065]
Фиг. 16 является схемой, показывающей подробную конфигурацию модуля 102 интер-предсказания устройства кодирования кадров на фиг. 1. Модуль 301 извлечения режимов идентификации предикторов нормальных векторов движения извлекает множество потенциально подходящих вариантов предикторов нормальных векторов движения, чтобы выбирать предиктор вектора движения, и вычисляет разность векторов движения между выбранным предиктором вектора движения и обнаруженным вектором движения. Обнаруженный режим интер-предсказания, опорный индекс и вектор движения и вычисленная разность векторов движения становятся информацией интер-предсказания режима идентификации предикторов нормальных векторов движения. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания. Ниже описывается подробная конфигурация и процесс модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения.
[0066] Модуль 302 извлечения режимов нормального объединения извлекает множество потенциально подходящих вариантов нормального объединения, чтобы выбирать потенциально подходящий вариант нормального объединения, и получает информацию интер-предсказания режима нормального объединения. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания. Ниже описывается подробная конфигурация и процесс модуля 302 извлечения режимов нормального объединения.
[0067] Модуль 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков извлекает множество потенциально подходящих вариантов предикторов векторов движения на основе субблоков, чтобы выбирать предиктор вектора движения на основе субблоков, и вычисляет разность векторов движения между выбранным предиктором вектора движения на основе субблоков и обнаруженным вектором движения. Обнаруженный режим интер-предсказания, опорный индекс и вектор движения и вычисленная разность векторов движения становятся информацией интер-предсказания режима идентификации предикторов векторов движения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания.
[0068] Модуль 304 извлечения режимов объединения на основе субблоков извлекает множество потенциально подходящих вариантов объединения на основе субблоков, чтобы выбирать потенциально подходящий вариант объединения на основе субблоков, и получает информацию интер-предсказания режима объединения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания.
[0069] Модуль 305 определения режима интер-предсказания определяет информацию интер-предсказания на основе информации интер-предсказания, предоставляемой из модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения, модуля 302 извлечения режимов нормального объединения, модуля 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков и модуля 304 извлечения режимов объединения на основе субблоков. Информация интер-предсказания согласно результату определения предоставляется из модуля 305 определения режима интер-предсказания в модуль 306 предсказания с компенсацией движения.
[0070] Модуль 306 предсказания с компенсацией движения выполняет интер-предсказание для опорного сигнала кадров, сохраненного в запоминающем устройстве 104 декодированных кадров, на основе определенной информации интер-предсказания. Ниже описывается подробная конфигурация и процесс модуля 306 предсказания с компенсацией движения.
Описание модуля 203 интер-предсказания декодирования на стороне декодирования
[0071]
Фиг. 22 является схемой, показывающей подробную конфигурацию модуля 203 интер-предсказания устройства декодирования кадров по фиг. 2.
[0072] Модуль 401 извлечения режимов идентификации предикторов нормальных векторов движения извлекает множество потенциально подходящих вариантов предикторов нормальных векторов движения, чтобы выбирать предиктор вектора движения, вычисляет сумму выбранного предиктора вектора движения и декодированной разности векторов движения и задает вычисленную сумму в качестве вектора движения. Декодированный режим интер-предсказания, опорный индекс и вектор движения становятся информацией интер-предсказания режима идентификации предикторов нормальных векторов движения. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408. Ниже описывается подробная конфигурация и процесс модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения.
[0073] Модуль 402 извлечения режимов нормального объединения извлекает множество потенциально подходящих вариантов нормального объединения, чтобы выбирать потенциально подходящий вариант нормального объединения, и получает информацию интер-предсказания режима нормального объединения. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408. Ниже описывается подробная конфигурация и процесс модуля 402 извлечения режимов нормального объединения.
[0074] Модуль 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков извлекает множество потенциально подходящих вариантов предикторов векторов движения на основе субблоков, чтобы выбирать предиктор вектора движения на основе субблоков, вычисляет сумму выбранного предиктора вектора движения на основе субблоков и декодированной разности векторов движения и задает вычисленную сумму в качестве вектора движения. Декодированный режим интер-предсказания, опорный индекс и вектор движения становятся информацией интер-предсказания режима идентификации предикторов векторов движения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408.
[0075] Модуль 404 извлечения режимов объединения на основе субблоков извлекает множество потенциально подходящих вариантов объединения на основе субблоков, чтобы выбирать потенциально подходящий вариант объединения на основе субблоков, и получает информацию интер-предсказания режима объединения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408.
[0076] Модуль 406 предсказания с компенсацией движения выполняет интер-предсказание для опорного сигнала кадров, сохраненного в запоминающем устройстве 208 декодированных кадров, на основе определенной информации интер-предсказания. Подробная конфигурация и процесс модуля 406 предсказания с компенсацией движения являются аналогичными подробной конфигурации и процессу модуля 306 предсказания с компенсацией движения на стороне кодирования.
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP)
[0077]
Модуль 301 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 17 включает в себя модуль 321 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуль 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуль 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, модуль 325 пополнения потенциально подходящих вариантов предикторов векторов движения, модуль 326 обнаружения нормальных векторов движения, модуль 327 выбора потенциально подходящих вариантов предикторов векторов движения и модуль 328 вычитания векторов движения.
[0078] Модуль 401 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 23 включает в себя модуль 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуль 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуль 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, модуль 425 пополнения потенциально подходящих вариантов предикторов векторов движения, модуль 426 выбора потенциально подходящих вариантов предикторов векторов движения и модуль 427 суммирования векторов движения.
[0079] В дальнейшем описываются процедуры обработки модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования и модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения на стороне декодирования с использованием блок-схем последовательности операций способа по фиг. 19 и 25, соответственно. Фиг. 19 является блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения режимов идентификации предикторов нормальных векторов движения модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования, и фиг. 25 является блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения режимов идентификации предикторов нормальных векторов движения модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения на стороне декодирования.
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP): описание на стороне кодирования
[0080]
В дальнейшем описывается процедура обработки извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования со ссылкой на фиг. 19. В описании процедуры обработки по фиг. 19, термин "нормальный", показанный на фиг. 19, может опускаться.
[0081] Во-первых, модуль 326 обнаружения нормальных векторов движения обнаруживает нормальный вектор движения для каждого режима интер-предсказания и каждого опорного индекса (этап S100 по фиг. 19).
[0082] Затем, в модуле 321 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуле 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуле 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, модуле 325 пополнения потенциально подходящих вариантов предикторов векторов движения, модуле 327 выбора потенциально подходящих вариантов предикторов векторов движения и модуле 328 вычитания векторов движения, разность векторов движения для вектора движения, используемого для интер-предсказания режима идентификации предикторов нормальных векторов движения, вычисляется для каждого из L0 и L1 (этапы S101-S106 по фиг. 19). В частности, когда режим PredMode предсказания целевого блока представляет собой интер-предсказание (MODE_INTER), и режим интер-предсказания представляет собой L0-предсказание (Pred_L0), список mvpListL0 потенциально подходящих вариантов предикторов векторов движения L0 вычисляется, чтобы выбирать предиктор mvpL0 вектора движения, и разность mvdL0 векторов движения вектора mvL0 движения L0 вычисляется. Когда режим интер-предсказания целевого блока представляет собой L1-предсказание (Pred_L1), список mvpListL1 потенциально подходящих вариантов предикторов векторов движения L1 вычисляется, чтобы выбирать предиктор mvpL1 вектора движения, и разность mvdL1 векторов движения вектора mvL1 движения L1 вычисляется. Когда режим интер-предсказания целевого блока представляет собой бипредсказание (Pred_BI), L0-предсказание и L1-предсказание выполняются, список mvpListL0 потенциально подходящих вариантов предикторов векторов движения L0 вычисляется, чтобы выбирать предиктор mvpL0 вектора движения L0, разность mvdL0 векторов движения вектора mvL0 движения L0 вычисляется, список mvpListL1 потенциально подходящих вариантов предикторов векторов движения L1 вычисляется, чтобы выбирать предиктор mvpL1 вектора движения L1, и разность mvdL1 векторов движения вектора mvL1 движения L1 вычисляется.
[0083] Хотя процесс вычисления разностей векторов движения выполняется для каждого из L0 и L1, процесс вычисления разностей векторов движения становится процессом, общим для L0 и L1. Следовательно, в нижеприведенном описании, L0 и L1 представляются как общий LX. X LX равен 0 в процессе вычисления разности векторов движения L0, и X LX равен 1 в процессе вычисления разности векторов движения L1. Кроме того, когда на информацию другого списка вместо LX ссылаются в ходе процесса вычисления разности векторов движения LX, другой список представляется как LY.
[0084] Когда вектор mvLX движения LX используется (этап S102 по фиг. 19: "Да"), потенциально подходящие варианты предикторов векторов движения LX вычисляются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения LX (этап S103 по фиг. 19). В модуле 321 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуле 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуле 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории и модуле 325 пополнения потенциально подходящих вариантов предикторов векторов движения модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения, множество потенциально подходящих вариантов предикторов векторов движения извлекаются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения. Ниже описывается подробная процедура обработки этапа S103 по фиг. 19 с использованием блок-схемы последовательности операций способа по фиг. 20.
[0085] Затем, модуль 327 выбора потенциально подходящих вариантов предикторов векторов движения выбирает предиктор mvpLX вектора движения LX из списка mvpListLX потенциально подходящих вариантов предикторов векторов движения LX (этап S104 по фиг. 19). Здесь, один элемент (i-ый элемент при подсчете с 0-ого элемента) в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения представляется как mvpListLX[i]. Каждая разность векторов движения, которая представляет собой разность между вектором mvLX движения и каждым потенциально подходящим вариантом mvpListLX[i] предиктора вектора движения, сохраненным в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения, вычисляется. Объем кода, когда разности векторов движения кодируются, вычисляется для каждого элемента (потенциально подходящего варианта предиктора вектора движения) списка mvpListLX потенциально подходящих вариантов предикторов векторов движения. Затем потенциально подходящий вариант mvpListLX[i] предиктора вектора движения, который минимизирует объем кода для каждого потенциально подходящего варианта предиктора вектора движения из числа элементов, зарегистрированных в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения, выбирается в качестве предиктора mvpLX вектора движения, и его индекс i получается. Когда предусмотрено множество потенциально подходящих вариантов предикторов векторов движения, имеющих наименьший объем сформированного кода в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения, потенциально подходящий вариант mvpListLX[i] предиктора вектора движения, представленный посредством меньшего числа в индексе i в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения, выбирается в качестве оптимального предиктора mvpLX вектора движения, и его индекс i получается.
[0086] Затем, модуль 328 вычитания векторов движения вычитает выбранный предиктор mvpLX вектора движения LX из вектора mvLX движения LX и вычисляет разность mvdLX векторов движения LX в качестве mvdLX=mvLX-mvpLX (этап S105 по фиг. 19).
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP): описание на стороне декодирования
[0087]
Далее описывается процедура обработки режима идентификации предикторов нормальных векторов движения на стороне декодирования со ссылкой на фиг. 25. На стороне декодирования, в модуле 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуле 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуле 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории и модуле 425 пополнения потенциально подходящих вариантов предикторов векторов движения, вектор движения для использования при интер-предсказании режима идентификации предикторов нормальных векторов движения вычисляется для каждого из L0 и L1 (этапы S201-S206 по фиг. 25). В частности, когда режим PredMode предсказания целевого блока представляет собой интер-предсказание (MODE_INTER), и режим интер-предсказания целевого блока представляет собой L0-предсказание (Pred_L0), список mvpListL0 потенциально подходящих вариантов предикторов векторов движения L0 вычисляется, чтобы выбирать предиктор mvpL0 вектора движения, и вектор mvL0 движения L0 вычисляется. Когда режим интер-предсказания целевого блока представляет собой L1-предсказание (Pred_L1), список mvpListL1 потенциально подходящих вариантов предикторов векторов движения L1 вычисляется, чтобы выбирать предиктор mvpL1 вектора движения, и вектор mvL1 движения L1 вычисляется. Когда режим интер-предсказания целевого блока представляет собой бипредсказание (Pred_BI), L0-предсказание и L1-предсказание выполняются, список mvpListL0 потенциально подходящих вариантов предикторов векторов движения L0 вычисляется, чтобы выбирать предиктор mvpL0 вектора движения L0, вектор mvL0 движения L0 вычисляется, список mvpListL1 потенциально подходящих вариантов предикторов векторов движения L1 вычисляется, чтобы выбирать предиктор mvpL1 вектора движения L1, и каждый вектор mvL1 движения L1 вычисляется.
[0088] Хотя процесс вычисления вектора движения выполняется для каждого из L0 и L1 на стороне декодирования, аналогично стороне кодирования, процесс вычисления вектора движения становится процессом, общим для L0 и L1. Следовательно, в нижеприведенном описании, L0 и L1 представляются как общий LX. LX представляет режим интер-предсказания для использования при интер-предсказании целевого блока кодирования. X равен 0 в процессе вычисления вектора движения L0, и X равен 1 в процессе вычисления вектора движения L1. Кроме того, когда на информацию другого опорного списка вместо опорного списка, идентичного опорному списку опорного списка, идентичного опорному списку LX цели вычисления, ссылаются в ходе процесса вычисления вектора движения LX, другой опорный список представляется как LY.
[0089] Когда вектор mvLX движения LX используется (этап S202 по фиг. 25: "Да"), потенциально подходящие варианты предикторов векторов движения LX вычисляются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения LX (этап S203 по фиг. 25). В модуле 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуле 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуле 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории и модуле 425 пополнения потенциально подходящих вариантов предикторов векторов движения модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения, множество потенциально подходящих вариантов предикторов векторов движения вычисляются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения. Ниже описывается подробная процедура обработки этапа S203 по фиг. 25 с использованием блок-схемы последовательности операций способа по фиг. 20.
[0090] Затем, потенциально подходящий вариант mvpListLX[mvpIdxLX] предиктора вектора движения, соответствующий индексу mvpIdxLX предиктора вектора движения, декодированного и предоставляемого посредством модуля 201 декодирования битовых строк из списка mvpListLX потенциально подходящих вариантов предикторов векторов движения, извлекается в качестве выбранного предиктора mvpLX вектора движения в модуле 426 выбора потенциально подходящих вариантов предикторов векторов движения (этап S204 по фиг. 25).
[0091] Затем, модуль 427 суммирования векторов движения суммирует разность mvdLX векторов движения LX, которая декодируется и предоставляется посредством модуля 201 декодирования битовых строк, и предиктор mvpLX вектора движения LX и вычисляет вектор mvLX движения LX в качестве mvLX=mvpLX+mvdLX (этап S205 по фиг. 25).
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP): способ предсказания векторов движения
[0092]
Фиг. 20 является блок-схемой последовательности операций способа, показывающей процедуру обработки процесса извлечения режимов идентификации предикторов нормальных векторов движения, имеющего функцию, общую для модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения устройства кодирования кадров и модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения устройства декодирования кадров согласно варианту осуществления настоящего изобретения.
[0093] Модуль 301 извлечения режимов идентификации предикторов нормальных векторов движения и модуль 401 извлечения режимов идентификации предикторов нормальных векторов движения включают в себя список mvpListLX потенциально подходящих вариантов предикторов векторов движения. Список mvpListLX потенциально подходящих вариантов предикторов векторов движения имеет списковую структуру и содержит область хранения, в которой индекс предиктора вектора движения, указывающий местоположение в списке потенциально подходящих вариантов предикторов векторов движения, и потенциально подходящий вариант предиктора вектора движения, соответствующий индексу, сохраняется в качестве элементов. Номер индекса предиктора вектора движения начинается с 0, и потенциально подходящие варианты предикторов векторов движения сохраняются в области хранения списка mvpListLX потенциально подходящих вариантов предикторов векторов движения. В настоящем варианте осуществления, предполагается, что, по меньшей мере, два потенциально подходящих вариантов предикторов векторов движения (информация интер-предсказания) могут регистрироваться в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения. Кроме того, переменная numCurrMvpCand, указывающая число потенциально подходящих вариантов предикторов векторов движения, зарегистрированных в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения, задается равной 0.
[0094] Модули 321 и 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения извлекают потенциально подходящие варианты предикторов векторов движения из соседних блоков с левой стороны. В этом процессе, предиктор mvLXA вектора движения извлекается со ссылкой на информацию интер-предсказания соседнего блока с левой стороны (A0 или A1 по фиг. 11), т.е. на флаг, указывающий то, может или нет потенциально подходящий вариант предиктора вектора движения использоваться, вектор движения, опорный индекс и т.п., и извлеченный mvLXA добавляется в список mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S301 по фиг. 20). Кроме того, X равен 0 во время L0-предсказания, и X равен 1 во время L1-предсказания (это справедливо далее). Затем, модули 321 и 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения извлекают потенциально подходящий вариант предиктора вектора движения из соседнего блока с верхней стороны. В этом процессе, предиктор mvLXB вектора движения извлекается со ссылкой на информацию интер-предсказания соседнего блока с верхней стороны (B0, B1 или B2 по фиг. 11), т.е. на флаг, указывающий то, может или нет потенциально подходящий вариант предиктора вектора движения использоваться, вектор движения, опорный индекс и т.п., и mvLXB добавляется в список mvpListLX потенциально подходящих вариантов предикторов векторов движения, если извлеченный mvLXA не равен извлеченному mvLXB (этап S302 по фиг. 20). Обработка этапов S301 и S302 по фиг. 20 является общей за исключением того, что позиции соседних блоков, на которые ссылаются, и число соседних блоков, на которые ссылаются, отличаются, и извлекаются флаг availableFlagLXN, указывающий то, может или нет потенциально подходящий вариант предиктора вектора движения блока кодирования использоваться, вектор mvLXN движения и опорный индекс refIdxN (N представляет A или B, и это справедливо далее).
[0095] Затем, модули 322 и 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения извлекают потенциально подходящие варианты предикторов векторов движения из блоков в кадре, время которого отличается от кадра текущего целевого кадра. В этом процессе, извлекаются флаг availableFlagLXCol, указывающий то, может или нет потенциально подходящий вариант предиктора вектора движения блока кодирования кадра другого момента времени использоваться, вектор mvLXCol движения, опорный индекс refIdxCol и опорный список listCol, и mvLXCol добавляется в список mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S303 по фиг. 20).
[0096] Кроме того, предполагается, что процессы модулей 322 и 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения могут опускаться в единицах последовательностей (SPS), кадров (PPS) или срезов.
[0097] Затем, модули 322 и 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории добавляют потенциально подходящие варианты предикторов векторов движения на основе предыстории, зарегистрированные в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в список mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S304 по фиг. 20). Ниже описываются подробности процедуры обработки регистрации этапа S304 с использованием блок-схемы последовательности операций способа по фиг. 29.
[0098] Затем, модули 325 и 425 пополнения потенциально подходящих вариантов предикторов векторов движения добавляют потенциально подходящие варианты предикторов векторов движения, имеющие предварительно определенное значение, к примеру, (0, 0) до тех пор, пока список mvpListLX потенциально подходящих вариантов предикторов векторов движения не удовлетворяется (S305 по фиг. 20).
Модуль извлечения режимов нормального объединения (нормальное объединение)
[0099]
Модуль 302 извлечения режимов нормального объединения по фиг. 18 включает в себя модуль 341 извлечения пространственных потенциально подходящих вариантов объединения, модуль 342 извлечения временных потенциально подходящих вариантов объединения, модуль 344 извлечения средних потенциально подходящих вариантов объединения, модуль 345 извлечения потенциально подходящих вариантов объединения на основе предыстории, модуль 346 пополнения потенциально подходящих вариантов объединения и модуль 347 выбора потенциально подходящих вариантов объединения.
[0100] Модуль 402 извлечения режимов нормального объединения по фиг. 24 включает в себя модуль 441 извлечения пространственных потенциально подходящих вариантов объединения, модуль 442 извлечения временных потенциально подходящих вариантов объединения, модуль 444 извлечения средних потенциально подходящих вариантов объединения, модуль 445 извлечения потенциально подходящих вариантов объединения на основе предыстории, модуль 446 пополнения потенциально подходящих вариантов объединения и модуль 447 выбора потенциально подходящих вариантов объединения.
[0101] Фиг. 21 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру процесса извлечения режимов нормального объединения, имеющего функцию, общую для модуля 302 извлечения режимов нормального объединения устройства кодирования кадров и модуля 402 извлечения режимов нормального объединения устройства декодирования кадров согласно варианту осуществления настоящего изобретения.
[0102] Далее поэтапно описываются различные процессы. Хотя в дальнейшем описывается случай, в котором тип slice_type среза представляет собой B-срез, если не указано иное в нижеприведенном описании, настоящее изобретение также может применяться к случаю P-среза. Тем не менее, когда тип slice_type среза представляет собой P-срез, поскольку только L0-предсказание (Pred_L0) предоставляется в качестве режима интер-предсказания, и L1-предсказание (Pred_L1) и бипредсказание (Pred_BI) отсутствуют, процесс, связанный с L1, может опускаться.
[0103] Модуль 302 извлечения режимов нормального объединения и модуль 402 извлечения режимов нормального объединения имеют список mergeCandList потенциально подходящих вариантов объединения. Список mergeCandList потенциально подходящих вариантов объединения имеет списковую структуру и содержит индекс объединения, указывающий местоположение в списке потенциально подходящих вариантов объединения, и область хранения, в которой потенциально подходящие варианты объединения, соответствующие индексу, сохраняются в качестве элементов. Номер индекса объединения начинается с 0, и потенциально подходящие варианты объединения сохраняются в области хранения списка mergeCandList потенциально подходящих вариантов объединения. В последующем процессе, потенциально подходящий вариант объединения i индекса объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, представляется посредством mergeCandList[i]. В настоящем варианте осуществления, предполагается, что, по меньшей мере, шесть потенциально подходящих вариантов объединения (информация интер-предсказания) могут регистрироваться в списке mergeCandList потенциально подходящих вариантов объединения. Дополнительно, переменная numCurrMergeCand, указывающая число потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, задается равной 0.
[0104] В модуле 341 извлечения пространственных потенциально подходящих вариантов объединения и модуле 441 извлечения пространственных потенциально подходящих вариантов объединения, пространственные потенциально подходящие варианты объединения из соответствующих блоков (B1, A1, B0, A0 и B2 на фиг. 11), соседних с целевым блоком, извлекаются в порядке B1, A1, B0, A0 и B2 из информации кодирования, сохраненной в запоминающем устройстве 111 для хранения информации кодирования устройства кодирования кадров или в запоминающем устройстве 205 для хранения информации кодирования устройства декодирования кадров, и извлеченные пространственные потенциально подходящие варианты объединения регистрируются в списке mergeCandList потенциально подходящих вариантов объединения (этап S401 по фиг. 21). Здесь задается N, указывающее любое из B1, A1, B0, A0 или B2 или временного потенциально подходящего варианта Col объединения. Извлекаются флаг availableFlagN, указывающий то, может или нет информация интер-предсказания блока N использоваться в качестве пространственного потенциально подходящего варианта объединения, опорный индекс refIdxL0N L0 и опорный индекс refIdxL1N L1 пространственного потенциально подходящего варианта N объединения, флаг predFlagL0N L0-предсказания, указывающий то, выполняется или нет L0-предсказание, флаг predFlagL1N L1-предсказания, указывающий то, выполняется или нет L1-предсказание, вектор mvL0N движения L0 и вектор mvL1N движения L1. Тем не менее, поскольку потенциально подходящий вариант объединения извлекается без ссылки на информацию интер-предсказания блока, включенную в блок кодирования, который представляет собой цель в настоящем варианте осуществления, пространственный потенциально подходящий вариант объединения с использованием информации интер-предсказания блока, включенной в целевой блок кодирования, не извлекается.
[0105] Затем, модуль 342 извлечения временных потенциально подходящих вариантов объединения и модуль 442 извлечения временных потенциально подходящих вариантов объединения извлекают временные потенциально подходящие варианты объединения из кадров различных моментов времени и регистрируют извлеченные временные потенциально подходящие варианты объединения в списке mergeCandList потенциально подходящих вариантов объединения (этап S402 по фиг. 21). Извлекаются флаг availableFlagCol, указывающий то, может или нет временной потенциально подходящий вариант объединения использоваться, флаг predFlagL0Col L0-предсказания, указывающий то, выполняется или нет L0-предсказание временного потенциально подходящего варианта объединения, флаг predFlagL1Col L1-предсказания, указывающий то, выполняется или нет L1-предсказание, вектор mvL0Col движения L0 и вектор mvL1Col движения L1.
[0106] Кроме того, предполагается, что процессы модуля 342 извлечения временных потенциально подходящих вариантов объединения и модуля 442 извлечения временных потенциально подходящих вариантов объединения могут опускаться в единицах последовательностей (SPS), кадров (PPS) или срезов.
[0107] Затем, модуль 345 извлечения потенциально подходящих вариантов объединения на основе предыстории и модуль 445 извлечения потенциально подходящих вариантов объединения на основе предыстории регистрируют потенциально подходящие варианты предикторов векторов движения на основе предыстории, зарегистрированные в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в списке mergeCandList потенциально подходящих вариантов объединения (этап S403 по фиг. 21).
Кроме того, когда число numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, меньше максимального числа MaxNumMergeCand потенциально подходящих вариантов объединения, максимальное число MaxNumMergeCand потенциально подходящих вариантов объединения задается в качестве верхнего предела числа numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, и потенциально подходящие варианты объединения на основе предыстории извлекаются и регистрируются в списке mergeCandList потенциально подходящих вариантов объединения.
[0108] Затем, модуль 344 извлечения средних потенциально подходящих вариантов объединения и модуль 444 извлечения средних потенциально подходящих вариантов объединения извлекают средний потенциально подходящий вариант объединения из списка mergeCandList потенциально подходящих вариантов объединения и добавляют извлеченный средний потенциально подходящий вариант объединения в список mergeCandList потенциально подходящих вариантов объединения (этап S404 по фиг. 21).
Кроме того, когда число numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, меньше максимального числа MaxNumMergeCand потенциально подходящих вариантов объединения, максимальное число MaxNumMergeCand потенциально подходящих вариантов объединения задается в качестве верхнего предела числа numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, и средние потенциально подходящие варианты объединения извлекаются и регистрируются в списке mergeCandList потенциально подходящих вариантов объединения.
Здесь, средний потенциально подходящий вариант объединения представляет собой новый потенциально подходящий вариант объединения, имеющий вектор движения, полученный посредством усреднения векторов движения первого потенциально подходящего варианта объединения и второго потенциально подходящего варианта объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, для каждого из L0-предсказания и L1-предсказания.
[0109] Затем, в модуле 346 пополнения потенциально подходящих вариантов объединения и модуле 446 пополнения потенциально подходящих вариантов объединения, когда число numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, меньше максимального числа MaxNumMergeCand потенциально подходящих вариантов объединения, максимальное число MaxNumMergeCand потенциально подходящих вариантов объединения задается в качестве верхнего предела числа numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, и дополнительный потенциально подходящий вариант объединения извлекается и регистрируется в списке mergeCandList потенциально подходящих вариантов объединения (этап S405 по фиг. 21). В P-срезе, потенциально подходящий вариант объединения, для которого вектор движения имеет значение в (0, 0), и режим предсказания представляет собой L0-предсказание (Pred_L0), добавляется с использованием максимального числа MaxNumMergeCand потенциально подходящих вариантов объединения в качестве верхнего предела. В B-срезе, потенциально подходящий вариант объединения, для которого вектор движения имеет значение в (0, 0), и режим предсказания представляет собой бипредсказание (Pred_BI), добавляется. Опорный индекс, когда потенциально подходящий вариант объединения добавляется, отличается от ранее добавленного опорного индекса.
[0110] Затем, модуль 347 выбора потенциально подходящих вариантов объединения и модуль 447 выбора потенциально подходящих вариантов объединения выбирают потенциально подходящие варианты объединения из потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения. Модуль 347 выбора потенциально подходящих вариантов объединения на стороне кодирования выбирает потенциально подходящий вариант объединения посредством вычисления объема кода и величины искажения и предоставляет индекс объединения, указывающий выбранный потенциально подходящий вариант объединения, и информацию интер-предсказания потенциально подходящего варианта объединения в модуль 306 предсказания с компенсацией движения через модуль 305 определения режима интер-предсказания. С другой стороны, модуль 447 выбора потенциально подходящих вариантов объединения на стороне декодирования выбирает потенциально подходящий вариант объединения на основе декодированного индекса объединения и предоставляет выбранный потенциально подходящий вариант объединения в модуль 406 предсказания с компенсацией движения.
[0111] В модуле 302 извлечения режимов нормального объединения и модуле 402 извлечения режимов нормального объединения, когда размер определенного блока кодирования (произведение его ширины и высоты) меньше 32, потенциально подходящие варианты объединения извлекаются в родительском блоке блока кодирования. Во всех дочерних блоках, используются потенциально подходящие варианты объединения, извлекаемые в родительском блоке. Тем не менее, это ограничено случаем, в котором размер родительского блока равен 32 или более и находится в пределах экрана.
Обновление списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории
[0112]
Далее подробно описываются способ инициализации и способ обновления списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, предоставленного в запоминающем устройстве 111 для хранения информации кодирования на стороне кодирования и в запоминающем устройстве 205 для хранения информации кодирования на стороне декодирования. Фиг. 26 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки для инициализации/обновления списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0113] В настоящем варианте осуществления, предполагается, что список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории обновляется в запоминающем устройстве 111 для хранения информации кодирования и в запоминающем устройстве 205 для хранения информации кодирования. Модуль обновления списков потенциально подходящих вариантов предикторов векторов движения на основе предыстории может устанавливаться в модуле 102 интер-предсказания и модуле 203 интер-предсказания, чтобы обновлять список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0114] Список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории первоначально задается в начале среза, список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории обновляется, когда режим идентификации предикторов нормальных векторов движения или режим нормального объединения выбран посредством модуля 105 определения способа предсказания на стороне кодирования, и список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории обновляется, когда информация предсказания, декодированная посредством модуля 201 декодирования битовых строк, задается относительно режима идентификации предикторов нормальных векторов движения или режима нормального объединения на стороне декодирования.
[0115] Информация интер-предсказания, используемая, когда интер-предсказание выполняется в режиме идентификации предикторов нормальных векторов движения или режиме нормального объединения, регистрируется в качестве потенциально подходящего варианта hMvpCand информации интер-предсказания в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Потенциально подходящий вариант hMvpCand информации интер-предсказания включает в себя опорный индекс refIdxL0 L0, опорный индекс refIdxL1 L1, флаг predFlagL0 L0-предсказания, указывающий то, выполняется или нет L0-предсказание, флаг predFlagL1 L1-предсказания, указывающий то, выполняется или нет L1-предсказание, вектор mvL0 движения L0 и вектор mvL1 движения L1.
[0116] Когда имеется информация интер-предсказания, имеющая значение, идентичное значению потенциально подходящего варианта hMvpCand информации интер-предсказания, из числа элементов (т.е. информации интер-предсказания), зарегистрированных в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, предоставленном в запоминающем устройстве 111 для хранения информации кодирования на стороне кодирования и в запоминающем устройстве 205 для хранения информации кодирования на стороне декодирования, элемент удаляется из списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. С другой стороны, когда отсутствует информация интер-предсказания, имеющая значение, идентичное значению потенциально подходящего варианта hMvpCand информации интер-предсказания, элемент в начале списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории удаляется, и потенциально подходящий вариант hMvpCand информации интер-предсказания добавляется в конец списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0117] Число элементов списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, предоставленного в запоминающем устройстве 111 для хранения информации кодирования на стороне кодирования и в запоминающем устройстве 205 для хранения информации кодирования на стороне декодирования согласно настоящему изобретению, предположительно составляет шесть.
[0118] Во-первых, список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории инициализируется в единицах срезов (этап S2101 по фиг. 26). Потенциально подходящие варианты предикторов векторов движения на основе предыстории добавляются во все элементы списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории в начале среза, и число NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории, зарегистрированное в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, задается равным шести. Альтернативно, все элементы списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории могут быть пустыми в начале среза, и значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории (текущего числа потенциально подходящих вариантов), зарегистрированных в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, может задаваться равным 0.
[0119] Кроме того, инициализация списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории выполняется в единицах срезов (первого блока кодирования среза), но может выполняться в единицах кадров, плиток или строк древовидного блока.
[0120] Фиг. 38 является таблицей, показывающей пример потенциально подходящих вариантов предикторов векторов движения на основе предыстории, добавленных согласно инициализации списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Показывается пример, в котором тип среза представляет собой B-срез, и число опорных кадров равно 4. Информация интер-предсказания, в которой значение вектора mvLXHmvp движения (X равен 0 или 1) составляет (0, 0) в соответствии с типом среза, в котором индекс hMvpIdx предиктора вектора движения на основе предыстории составляет от (число NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории - 1) до 0, добавляется в качестве потенциально подходящего варианта предиктора вектора движения на основе предыстории в список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, и список потенциально подходящих вариантов предикторов векторов движения на основе предыстории заполняется потенциально подходящими вариантами на основе предыстории. В это время, индекс hMvpIdx предиктора вектора движения на основе предыстории начинается с (число NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории - 1), и опорный индекс refIdxLX (X равен 0 или 1) задается равным значению, постепенно увеличиваемому на единицу от 0 до (число numRefIdx опорных кадров - 1). После этого, перекрытие между потенциально подходящими вариантами предикторов векторов движения на основе предыстории разрешается, и опорный индекс refIdxLX задается равным значению 0. Недопустимые потенциально подходящие варианты предикторов векторов движения на основе предыстории исключаются посредством задания числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равным всем значениям и задания значения числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равным фиксированному значению. Таким образом, можно повышать эффективность кодирования посредством назначения небольшого значения опорного индекса refIdxLX, который, в общем, имеет высокий коэффициент выбора, из потенциально подходящего варианта с большим значением индекса hMvpIdx предиктора вектора движения на основе предыстории, имеющего высокую вероятность того, что потенциально подходящий вариант добавляется в список потенциально подходящих вариантов предикторов векторов движения или список потенциально подходящих вариантов объединения.
[0121] Кроме того, поскольку можно обрабатывать число потенциально подходящих вариантов предикторов векторов движения на основе предыстории в качестве фиксированного значения посредством заполнения списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории потенциально подходящими вариантами предикторов векторов движения на основе предыстории в единицах срезов, можно упрощать, например, процесс извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории или процесс извлечения потенциально подходящих вариантов объединения на основе предыстории.
[0122] Здесь, хотя значение вектора движения в общем, задается равным (0, 0), имеющему высокую вероятность выбора, любое другое значение может использоваться при условии, что значение вектора движения составляет предварительно определенное значение. Например, эффективность кодирования разности векторов движения может повышаться посредством задания значения вектора движения равным (4, 4), (0, 32), (-128, 0) и т.п., или эффективность кодирования разности векторов движения может повышаться посредством задания множества предварительно определенных значений.
[0123] Кроме того, хотя индекс hMvpIdx предиктора вектора движения на основе предыстории начинается с (число NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории - 1), и опорный индекс refIdxLX (X равен 0 или 1) задается равным значению, постепенно увеличиваемому на единицу от 0 до (число numRefIdx опорных кадров - 1), индекс hMvpIdx предиктора вектора движения на основе предыстории может начинаться с 0.
[0124] Фиг. 39 является таблицей, показывающей другой пример потенциально подходящих вариантов предикторов векторов движения на основе предыстории, добавленных согласно инициализации списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Показывается пример, в котором тип среза представляет собой B-срез, и число опорных кадров равно 2. В этом примере, список потенциально подходящих вариантов предикторов векторов движения на основе предыстории заполняется посредством добавления информации интер-предсказания, в которой значение опорного индекса refIdxLX (X равен 0 или 1) или вектора mvLXHmvp движения (X равен 0 или 1) отличается, в качестве потенциально подходящего варианта предиктора вектора движения на основе предыстории на величину максимального числа элементов таким образом, что отсутствует перекрытие между потенциально подходящими вариантами предикторов векторов движения на основе предыстории в каждом элементе списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. В это время, индекс hMvpIdx предиктора вектора движения на основе предыстории начинается с (число NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории - 1), и опорный индекс refIdxLX (X равен 0 или 1) задается равным значению, постепенно увеличиваемому на единицу от 0 до (число numRefIdx опорных кадров - 1). После этого, опорный индекс refIdxLX задается равным 0, и вектор mvLXHmvp движения, который имеет значение, отличающееся от (0, 0), добавляется в качестве потенциально подходящего варианта предиктора вектора движения на основе предыстории. Недопустимые потенциально подходящие варианты предикторов векторов движения на основе предыстории исключаются посредством задания числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равным всем значениям и задания значения числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равным фиксированному значению.
[0125] Таким образом, кроме того, можно опускать процесс модуля 346 пополнения потенциально подходящих вариантов объединения после модуля 345 извлечения потенциально подходящих вариантов объединения на основе предыстории в модуле 302 извлечения режимов нормального объединения, который описывается ниже, реализованный в единицах блоков кодирования, и сокращать объем обработки посредством заполнения списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории неперекрывающимися потенциально подходящими вариантами предикторов векторов движения на основе предыстории в единицах срезов.
[0126] Здесь, хотя абсолютное значение каждого компонента вектора mvLXHmvp движения задается равным 0 или 1, абсолютное значение каждого компонента вектора mvLXHmvp движения может превышать 1, если отсутствует перекрытие между потенциально подходящими вариантами предикторов векторов движения на основе предыстории.
[0127] Кроме того, хотя индекс hMvpIdx предиктора вектора движения на основе предыстории начинается с (число NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории - 1), и опорный индекс refIdxLX (X равен 0 или 1) задается равным значению, постепенно увеличиваемому на единицу от 0 до (число numRefIdx опорных кадров - 1), индекс hMvpIdx предиктора вектора движения на основе предыстории может начинаться с 0.
[0128] Фиг. 40 является таблицей, показывающей другой пример потенциально подходящих вариантов предикторов векторов движения на основе предыстории, добавленных согласно инициализации списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0129] Показывается пример, в котором тип среза представляет собой B-срез, и число опорных кадров равно 1. В этом примере, список потенциально подходящих вариантов предикторов векторов движения на основе предыстории заполняется посредством добавления информации интер-предсказания, в которой значение вектора mvLXHmvp движения отличается в опорном индексе refIdxLX 0, в качестве потенциально подходящего варианта предиктора вектора движения на основе предыстории таким образом, что отсутствует перекрытие между потенциально подходящими вариантами предикторов векторов движения на основе предыстории в каждом элементе списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. В это время, индекс hMvpIdx предиктора вектора движения на основе предыстории начинается с (число NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории - 1), и задается информация интер-предсказания, в которой значение вектора mvLXHmvp движения отличается в опорном индексе refIdxLX (X равен 0 или 1) в 0. Недопустимые потенциально подходящие варианты предикторов векторов движения на основе предыстории исключаются посредством задания числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равным всем значениям и задания значения числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равным фиксированному значению.
[0130] Таким образом, кроме того, можно упрощать процесс, поскольку инициализация может выполняться без учета числа опорных кадров посредством задания опорного индекса refIdxLX равным 0.
[0131] Здесь, хотя абсолютное значение каждого компонента вектора mvLXHmvp движения задается равным степени 0, 1 или 2, абсолютное значение каждого компонента вектора mvLXHmvp движения может задаваться равным степени значения, отличного от 2, к примеру, 3 или 4, либо может задаваться равным любому другому значению, если отсутствует перекрытие между потенциально подходящими вариантами предикторов векторов движения на основе предыстории в опорном индексе в 0.
[0132] Кроме того, хотя индекс hMvpIdx предиктора вектора движения на основе предыстории начинается с (число NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории - 1), и задается информация интер-предсказания, в которой значение вектора mvLXHmvp движения отличается в опорном индексе refIdxLX (X равен 0 или 1) в 0, индекс hMvpIdx предиктора вектора движения на основе предыстории может начинаться с 0.
[0133] Затем, следующий процесс обновления списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории итеративно выполняется для каждого блока кодирования в срезе (этапы S2102-S2111 по фиг. 26).
[0134] Во-первых, начальная настройка выполняется для каждого блока кодирования. Флаг identicalCandExist, указывающий то, имеется или нет идентичный потенциально подходящий вариант, задается равным значению "ложь", и индекс removeIdx цели удаления, указывающий потенциально подходящий вариант цели удаления, задается равным 0 (этап S2103 по фиг. 26).
[0135] Определяется то, имеется или нет потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации (этап S2104 по фиг. 26). Когда модуль 105 определения способа предсказания на стороне кодирования определяет то, что режим представляет собой режим идентификации предикторов нормальных векторов движения или режим нормального объединения, либо когда модуль 201 декодирования битовых строк на стороне декодирования декодирует режим в качестве режима идентификации предикторов нормальных векторов движения или режима нормального объединения, его информация интер-предсказания задается в качестве потенциально подходящего варианта hMvpCand информации интер-предсказания цели регистрации. Когда модуль 105 определения способа предсказания на стороне кодирования определяет то, что режим представляет собой режим интра-предсказания, режим идентификации предикторов векторов движения на основе субблоков или режим объединения на основе субблоков, либо когда модуль 201 декодирования битовых строк на стороне декодирования декодирует режим в качестве режима интра-предсказания, режима идентификации предикторов векторов движения на основе субблоков или режима объединения на основе субблоков, процесс обновления списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории не выполняется, и потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации не существует. Когда отсутствует потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации, этапы S2105-S2106 пропускаются (этап S2104 по фиг. 26: "Нет"). Когда имеется потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации, обработка с этапа S2105 выполняется (этап S2104 по фиг. 26: "Да").
[0136] Затем, определяется то, имеется или нет элемент (информация интер-предсказания), имеющий значение, идентичное значению потенциально подходящего варианта hMvpCand информации интер-предсказания цели регистрации, т.е. идентичного элемента, из числа элементов списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (этап S2105 по фиг. 26). Фиг. 27 является блок-схемой последовательности операций способа для процедуры обработки проверки на идентичные элементы. Когда значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равно 0 (этап S2121 по фиг. 27: "Нет"), список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории является пустым, и отсутствует идентичный потенциально подходящий вариант, так что этапы S2122-S2125 по фиг. 27 пропускаются, и текущая процедура обработки проверки на идентичные элементы завершается. Когда значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории превышает 0 ("Да" на этапе S2121 по фиг. 27), обработка этапа S2123 итеративно выполняется до тех пор, пока индекс hMvpIdx предиктора вектора движения на основе предыстории не изменяется с 0 до NumHmvpCand-1 (этапы S2122-S2125 по фиг. 27). Во-первых, сравнивается то, является или нет hMvpIdx-ый элемент HmvpCandList[hMvpIdx] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории идентичным потенциально подходящему варианту hMvpCand информации интер-предсказания (этап S2123 по фиг. 27). Когда они являются идентичными (этап S2123 по фиг. 27: "Да"), флаг identicalCandExist, указывающий то, имеется или нет идентичный потенциально подходящий вариант, задается равным значению "истина", и индекс removeIdx цели удаления, указывающий позицию элемента цели удаления, задается равным текущему значению индекса hMvpIdx предиктора вектора движения на основе предыстории, и текущий процесс проверки на идентичные элементы завершается. Когда они не являются идентичными (этап S2123 по фиг. 27: "Нет"), hMvpIdx постепенно увеличивается на 1. Если индекс hMvpIdx предиктора вектора движения на основе предыстории меньше или равен NumHmvpCand-1, обработка с этапа S2123 выполняется.
[0137] Со ссылкой на блок-схему последовательности операций способа по фиг. 26 снова, процесс сдвига и добавления элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории выполняется (этап S2106 по фиг. 26). Фиг. 28 является блок-схемой последовательности операций способа для процедуры обработки сдвига/добавления элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории этапа S2106 по фиг. 26. Во-первых, определяется то, следует добавлять новый элемент после удаления элемента, сохраненного в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, либо добавлять новый элемент без удаления элемента. В частности, сравнивается то, представляет собой "истина" или нет флаг identicalCandExist, указывающий то, существует или нет идентичный потенциально подходящий вариант, либо того, равно NumHmvpCand или нет шести (этап S2141 по фиг. 28). Когда либо такое условие, что флаг identicalCandExist, указывающий то, имеется или нет идентичный потенциально подходящий вариант, представляет собой "истина", либо такое условие, что текущее число NumHmvpCand потенциально подходящих вариантов равно шести, удовлетворяется (этап S2141 по фиг. 28: "Да"), новый элемент добавляется после удаления элемента, сохраненного в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Начальное значение индекса i задается равным значению removeIdx+1. Процесс поэлементного сдвига этапа S2143 итеративно выполняется от этого начального значения до NumHmvpCand (этапы S2142-S2144 по фиг. 28). Посредством копирования элемента HmvpCandList[i] в HmvpCandList[i-1], элемент сдвигается вперед (этап S2143 по фиг. 28), и i постепенно увеличивается на 1 (этапы S2142-S2144 по фиг. 28). Затем, потенциально подходящий вариант hMvpCand информации интер-предсказания добавляется в (NumHmvpCand-1)-ый элемент HmvpCandList[NumHmvpCand-1] при подсчете с 0-ого элемента, который соответствует концу списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории (этап S2145 по фиг. 28), и текущий процесс сдвига/добавления элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. С другой стороны, когда ни такое условие, что флаг identicalCandExist, указывающий то, имеется или нет идентичный потенциально подходящий вариант, представляет собой "истина", ни такое условие что, текущее число NumHmvpCand потенциально подходящих вариантов равно шести, не удовлетворяется (этап S2141 по фиг. 28: "Нет"), потенциально подходящий вариант hMvpCand информации интер-предсказания добавляется в конец списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории без удаления элемента, сохраненного в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (этап S2146 по фиг. 28). Здесь, конец списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории представляет собой NumHmvpCand-ый элемент HmvpCandList[numHmvpCand] при подсчете с 0-ого элемента. Кроме того, NumHmvpCand постепенно увеличивается на 1, и текущий процесс сдвига/добавления элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается.
[0138] Фиг. 31 является пояснительной схемой, показывающей пример процесса обновления списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Когда новый элемент добавляется в список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в котором зарегистрированы шесть элементов (информация интер-предсказания), элементы сравниваются с новой информацией интер-предсказания в порядке от переднего элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (фиг. 31A). Если новый элемент имеет значение, идентичное значению третьего элемента HMVP2 с начала списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, элемент HMVP2 удаляется из списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, и последующие элементы HMVP3-HMVP5 сдвигаются вперед (копируются) по одному, и новый элемент добавляется в конец списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (фиг. 31B), чтобы завершать обновление списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (фиг. 31C).
Процесс извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории
[0139]
Далее подробно описывается способ извлечения потенциально подходящего варианта предиктора вектора движения на основе предыстории из списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, который представляет собой процедуру обработки этапа S304 по фиг. 20, которая представляет собой процесс, общий для модуля 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования и модуля 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения на стороне декодирования. Фиг. 29 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0140] Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения превышает или равно максимальному числу элементов в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения (здесь, 2), или значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равно 0 ("Нет" на этапе S2201 по фиг. 29), обработка этапов S2202-S2209 по фиг. 29 опускается, и процедура обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения меньше 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения, и значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории превышает 0 ("Да" на этапе S2201 по фиг. 29), обработка этапов S2202-S2209 по фиг. 29 выполняется.
[0141] Затем, обработка этапов S2203-S2208 по фиг. 29 итеративно выполняется до тех пор, пока индекс i не изменяется с 1 до меньшего значения из 4 и числа numCheckedHMVPCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории (этапы S2202-S2209 по фиг. 29). Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения превышает или равно 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S2203 по фиг. 29: "Нет"), обработка этапов S2204-S2209 на фиг. 29 опускается, и текущая процедура обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения меньше 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S2203 по фиг. 29: "Да"), обработка с этапа S2204 по фиг. 29 выполняется.
[0142] Затем, обработка этапа S2205-S2207 выполняется для Y=0 и 1 (L0 и L1) (этапы S2204-S2208 по фиг. 29). Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения превышает или равно 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S2205 по фиг. 29: "Нет"), обработка этапа S2206-S2209 по фиг. 29 опускается, и текущая процедура обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения меньше 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S2205 по фиг. 29: "Да"), обработка с этапа S2206 по фиг. 29 выполняется.
[0143] Затем, в случае элемента, который имеет опорный индекс, идентичный опорному индексу refIdxLX вектора движения цели кодирования/декодирования, и который отличается от любого элемента списка mvpListLX предикторов векторов движения в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории ("Да" на этапе S2206 по фиг. 29), вектор движения LY потенциально подходящего варианта HmvpCandList[NumHmvpCand-i] предиктора вектора движения на основе предыстории добавляется в numCurrMvpCand-ый элемент mvpListLX[numCurrMvpCand] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предикторов векторов движения (этап S2207 по фиг. 29), и текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения постепенно увеличивается на единицу. Когда отсутствует элемент, который имеет опорный индекс, идентичный опорному индексу refIdxLX вектора движения цели кодирования/декодирования, и который отличается от любого элемента списка mvpListLX предикторов векторов движения в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории ("Нет" на этапе S2206 по фиг. 29), дополнительная обработка этапа S2207 пропускается.
[0144] Вышеуказанная обработка этапов S2205-S2207 по фиг. 29 выполняется для L0 и L1 (этапы S2204-S2208 по фиг. 29). Когда индекс i постепенно увеличивается на 1, и индекс i меньше или равен меньшему значению из 4 и числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории, обработка с этапа S2203 выполняется снова (этапы S2202-S2209 по фиг. 29).
Процесс извлечения потенциально подходящих вариантов объединения на основе предыстории
[0145]
Далее подробно описывается способ извлечения потенциально подходящих вариантов объединения на основе предыстории из списка HmvpCandList потенциально подходящих вариантов объединения на основе предыстории, который представляет собой процедуру обработки этапа S404 по фиг. 21, которая представляет собой процесс, общий для модуля 345 извлечения потенциально подходящих вариантов объединения на основе предыстории модуля 302 извлечения режимов нормального объединения на стороне кодирования и модуля 445 извлечения потенциально подходящих вариантов объединения на основе предыстории модуля 402 извлечения режимов нормального объединения на стороне декодирования. Фиг. 30 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения потенциально подходящих вариантов объединения на основе предыстории.
[0146] Во-первых, процесс инициализации выполняется (этап S2301 по фиг. 30). Каждый (numCurrMergeCand-1)-ый элемент от 0 для isPruned[i] задается равным значению "ложь", и переменная numOrigMergeCand задается равным числу numCurrMergeCand элементов, зарегистрированных в текущем списке потенциально подходящих вариантов объединения.
[0147] Затем, начальное значение индекса hMvpIdx задается равным 1, и дополнительная обработка этапов S2303-S2310 по фиг. 30 итеративно выполняется до тех пор, пока индекс hMvpIdx не изменяется с начального значения до NumHmvpCand (этапы S2302-S2311 по фиг. 30). Если число элементов, зарегистрированных в текущем списке numCurrMergeCand потенциально подходящих вариантов объединения, не меньше или равно (максимальное число MaxNumMergeCand потенциально подходящих вариантов объединения - 1), потенциально подходящие варианты объединения добавляются во все элементы списка потенциально подходящих вариантов объединения, так что текущий процесс извлечения потенциально подходящих вариантов объединения на основе предыстории завершается ("Нет" на этапе S2303 по фиг. 30). Когда число numCurrMergeCand элементов, зарегистрированных в текущем списке потенциально подходящих вариантов объединения, меньше или равно (максимальное число MaxNumMergeCand потенциально подходящих вариантов объединения - 1), обработка с этапа S2304 выполняется; sameMotion задается равным значению "ложь" (этап S2304 по фиг. 30). Затем, начальное значение индекса i задается равным 0, и обработка этапов S2306 и S2307 по фиг. 30 выполняется до тех пор, пока индекс не изменяется с начального значения до numOrigMergeCand-1 (S2305-S2308 на фиг. 30). Сравнивается то, имеет или нет (NumHmvpCand-hMvpIdx)-ый элемент HmvpCandList[NumHmvpCand-hMvpIdx] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предсказания векторов движения на основе предыстории значение, идентичное значению i-ого элемента mergeCandList[i] при подсчете с 0-ого элемента списка потенциально подходящих вариантов объединения (этап S2306 по фиг. 30).
[0148] Потенциально подходящие варианты объединения имеют идентичное значение, когда значения всех компонентов (режима интер-предсказания, опорного индекса и вектора движения) потенциально подходящих вариантов объединения являются идентичными. Когда потенциально подходящие варианты объединения имеют идентичное значение, и isPruned[i] представляет собой "ложь" ("Да" на этапе S2306 по фиг. 30), как sameMotion, так и isPruned[i] задаются равными "истина" (этап S2307 по фиг. 30). Когда потенциально подходящие варианты объединения не имеют идентичного значения ("Нет" на этапе S2306 по фиг. 30), обработка этапа S2307 пропускается. Когда итеративная обработка этапов S2305-S2308 по фиг. 30 завершена, сравнивается то, представляет или нет sameMotion собой "ложь" (этап S2309 по фиг. 30). Если sameMotion представляет собой "ложь" ("Да" на этапе S2309 по фиг. 30), т.е. поскольку (NumHmvpCand-hMvpIdx)-ый элемент HmvpCandList[NumHmvpCand-hMvpIdx] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории не существует в mergeCandList, (NumHmvpCand-hMvpIdx)-ый элемент HmvpCandList[NumHmvpCand-hMvpIdx] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории добавляется в numCurrMergeCand-ый элемент mergeCandList[numCurrMergeCand] списка потенциально подходящих вариантов объединения, и numCurrMergeCand постепенно увеличивается на 1 (этап S2310 по фиг. 30). Индекс hMvpIdx постепенно увеличивается на 1 (этап S2302 по фиг. 30), и процесс итеративного выполнения этапов S2302-S2311 по фиг. 30 выполняется.
Когда проверка всех элементов списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается, либо когда потенциально подходящие варианты объединения добавляются во все элементы списка потенциально подходящих вариантов объединения, текущий процесс извлечения потенциально подходящих вариантов объединения на основе предыстории завершается.
Процесс предсказания с компенсацией движения
[0149]
Модуль 306 предсказания с компенсацией движения получает позицию и размер блока, который представляет собой текущую цель процесса предсказания при кодировании. Кроме того, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания. Опорный индекс и вектор движения извлекаются из полученной информации интер-предсказания, и сигнал предсказания формируется после того, как получается сигнал кадров позиции, в которую опорный кадр, идентифицированный посредством опорного индекса в запоминающем устройстве 104 декодированных кадров, перемещается из позиции, идентичной позиции сигнала кадров блока предсказания, на величину вектора движения.
[0150] Сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания с использованием сигнала предсказания, полученного из одного опорного кадра, в качестве сигнала предсказания с компенсацией движения, когда режим интер-предсказания при интер-предсказании представляет собой предсказание из одного опорного кадра, такое как L0-предсказание или L1-предсказание, и с использованием сигнала предсказания, полученного посредством сигналов предсказания с усреднением со взвешиванием, полученных из двух опорных кадров, в качестве сигнала предсказания с компенсацией движения, когда режим предсказания представляет собой предсказание из двух опорных кадров, такое как режим интер-предсказания бипредсказания. Хотя средневзвешенный коэффициент бипредсказания здесь составляет 1:1, усреднение со взвешиванием может выполняться с использованием другого коэффициента. Например, весовой коэффициент может увеличиваться по мере того, как межкадровый интервал между кадром, который представляет собой цель предсказания, и опорным кадром снижается. Кроме того, весовой коэффициент может вычисляться с использованием соответствующей таблицы между комбинациями межкадровых интервалов и весовых коэффициентов.
[0151] Модуль 406 предсказания с компенсацией движения имеет функцию, аналогичную функции модуля 306 предсказания с компенсацией движения на стороне кодирования. Модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения, модуля 402 извлечения режимов нормального объединения, модуля 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков и модуля 404 извлечения режимов объединения на основе субблоков через переключатель 408. Модуль 406 предсказания с компенсацией движения предоставляет полученный сигнал предсказания с компенсацией движения в модуль 207 наложения сигналов кадров для декодирования.
Касательно режима интер-предсказания
[0152]
Процесс выполнения предсказания из одного опорного кадра задается как унипредсказание. В случае унипредсказания, выполняется предсказание с использованием одного из двух опорных кадров, зарегистрированных в опорных списках L0 и L1, такое как L0-предсказание или L1-предсказание.
[0153] Фиг. 32 показывает случай унипредсказания, в котором время такта опорного кадра (RefL0Pic) L0 находится раньше времени такта целевого кадра (CurPic). Фиг. 33 показывает случай унипредсказания, в котором время такта опорного кадра L0-предсказания находится позже времени такта целевого кадра. Аналогично, опорный кадр L0-предсказания по фиг. 32 и 33 может заменяться опорным кадром (RefL1Pic) L1-предсказания, чтобы выполнять унипредсказание.
[0154] Процесс выполнения предсказания из двух опорных кадров задается как бипредсказание, и бипредсказание представляется как бипредсказание с использованием как L0-предсказания, так и L1-предсказания. Фиг. 34 показывает случай бипредсказания, в котором время такта опорного кадра L0-предсказания находится раньше времени такта целевого кадра, и время такта опорного кадра L1-предсказания находится позже времени такта целевого кадра. Фиг. 35 показывает случай бипредсказания, в котором времена такта опорного кадра L0-предсказания и опорного кадра L1-предсказания находятся раньше времени такта целевого кадра. Фиг. 36 показывает случай бипредсказания, в котором время такта опорного кадра L0-предсказания и время такта опорного кадра L1-предсказания находятся позже времени такта целевого кадра.
[0155] Как описано выше, взаимосвязь между типом предсказания L0/L1 и временем может использоваться без ограничения L0, который находится в предыдущем направлении, и L1, который находится в будущем направлении. В случае бипредсказания, каждое из L0-предсказания и L1-предсказания может выполняться с использованием идентичного опорного кадра. Кроме того, определяется то, следует выполнять предсказание с компенсацией движения согласно унипредсказанию или бипредсказанию, на основе, например, информации (например, флага), указывающей то, следует или нет использовать L0-предсказание, и то, следует или нет использовать L1-предсказание.
Касательно опорного индекса
[0156]
В варианте осуществления настоящего изобретения, можно выбирать оптимальный опорный кадр из множества опорных кадров при предсказании с компенсацией движения, чтобы повышать точность предсказания с компенсацией движения. Таким образом, опорный кадр, используемый при предсказании с компенсацией движения, используется в качестве опорного индекса, и опорный индекс кодируется в потоке битов вместе с разностью векторов движения.
Процесс компенсации движения на основе режима идентификации предикторов нормальных векторов движения
[0157]
Как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания из модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения выбрана в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0158] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 401 извлечения режимов идентификации предикторов нормальных векторов движения в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе режима нормального объединения
[0159]
Кроме того, как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания выбрана из модуля 302 извлечения режимов нормального объединения в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0160] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 402 извлечения режимов нормального объединения в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 402 извлечения режимов нормального объединения, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе режима идентификации предикторов векторов движения на основе субблоков
[0161]
Кроме того, как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания из модуля 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков выбрана в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0162] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе режима объединения на основе субблоков
[0163]
Кроме того, как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания из модуля 304 извлечения режимов объединения на основе субблоков выбрана в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0164] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 404 извлечения режимов объединения на основе субблоков в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 404 извлечения режимов объединения на основе субблоков, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе предсказания с аффинным преобразованием
[0165]
В режиме идентификации предикторов нормальных векторов движения и режиме нормального объединения, компенсация движения аффинной модели может использоваться на основе следующих флагов. Следующие флаги отражаются в следующих флагах на основе условий интер-предсказания, определенных посредством модуля 305 определения режима интер-предсказания в процессе кодирования, и кодируются в потоке битов. В процессе декодирования, идентифицируется то, следует или нет выполнять компенсацию движения аффинной модели, на основе следующих флагов в потоке битов.
[0166] sps_affine_enabled_flag представляет то, может или нет компенсация движения аффинной модели использоваться при интер-предсказании. Если sps_affine_enabled_flag равен 0, подавление выполняется таким образом, что она не представляет собой компенсацию движения аффинной модели в единицах последовательностей. Кроме того, inter_affine_flag и cu_affine_type_flag не передаются в синтаксисе CU (блоков кодирования) видеопоследовательности для кодирования. Если sps_affine_enabled_flag равен 1, компенсация движения аффинной модели может использоваться в видеопоследовательности для кодирования.
[0167] sps_affine_type_flag представляет то, может или нет компенсация движения шестипараметрической аффинной модели использоваться при интер-предсказании. Если sps_affine_type_flag равен 0, подавление выполняется таким образом, что она не представляет собой компенсацию движения шестипараметрической аффинной модели. Кроме того, cu_affine_type_flag не передается в CU-синтаксисе видеопоследовательности для кодирования. Если sps_affine_type_flag равен 1, компенсация движения шестипараметрической аффинной модели может использоваться в видеопоследовательности для кодирования. Когда sps_affine_type_flag не существует, он предположительно равен 0.
[0168] Когда P- или B-срез декодируется, если inter_affine_flag равен 1 в текущей целевой CU, компенсация движения аффинной модели используется для того, чтобы формировать сигнал предсказания с компенсацией движения текущей целевой CU. Если inter_affine_flag равен 0, аффинная модель не используется в текущей целевой CU. Когда inter_affine_flag не существует, он предположительно равен 0.
[0169] Когда P- или B-срез декодируется, если cu_affine_type_flag равен 1 в текущей целевой CU, компенсация движения шестипараметрической аффинной модели используется для того, чтобы формировать сигнал предсказания с компенсацией движения текущей целевой CU. Если cu_affine_type_flag равен 0, компенсация движения четырехпараметрической аффинной модели используется для того, чтобы формировать сигнал предсказания с компенсацией движения текущей целевой CU.
[0170] В компенсации движения аффинной модели, поскольку опорный индекс и вектор движения извлекаются в единицах субблоков, сигнал предсказания с компенсацией движения формируется с использованием опорного индекса или вектора движения, который представляет собой цель в единицах субблоков.
[0171] Четырехпараметрическая аффинная модель представляет собой режим, в котором вектор движения субблока извлекается из четырех параметров горизонтальных компонентов и вертикальных компонентов векторов движения двух управляющих точек, и компенсация движения выполняется в единицах субблоков.
Второй вариант осуществления
[0172]
В первом варианте осуществления, порядок, в котором ссылаются на элементы (потенциально подходящие варианты) списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории, является идентичным между режимом идентификации предикторов нормальных векторов движения и режимом нормального объединения. С другой стороны, во втором варианте осуществления, следующие дополнения и изменения вносятся в первый вариант осуществления. Опорный порядок, когда список потенциально подходящих вариантов предикторов векторов движения на основе предыстории используется, реализуется в порядке, противоположном порядку первого варианта осуществления, как показано на фиг. 46 в режиме идентификации предикторов нормальных векторов движения второго варианта осуществления, и реализуется в порядке, идентичном порядку первого варианта осуществления, как показано на фиг. 45 в режиме нормального объединения второго варианта осуществления. Таким образом, порядок, в котором ссылаются на потенциально подходящие варианты, включенные в список потенциально подходящих вариантов предикторов векторов движения на основе предыстории, изменяется на противоположный (представляет собой обратный порядок) между режимом идентификации предикторов нормальных векторов движения и режимом нормального объединения. В силу этого, в режиме идентификации предикторов нормальных векторов движения, элементы в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории добавляются в список потенциально подходящих вариантов предикторов векторов движения в порядке от старого элемента. В режиме нормального объединения, элементы в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории добавляются в список потенциально подходящих вариантов предикторов векторов движения в порядке от нового элемента.
Список потенциально подходящих вариантов предикторов векторов движения на основе предыстории
[0173]
Здесь, в дальнейшем описывается конфигурация и работа списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Как показано на фиг. 41, информация интер-предсказания, используемая при интер-предсказании в целевом блоке кодирования, задается в качестве потенциально подходящего варианта hMvpCand информации интер-предсказания, который должен регистрироваться, и информация интер-предсказания регистрируется в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории в качестве предыстории, используемой в прошлом. На фиг. 41, список потенциально подходящих вариантов предикторов векторов движения на основе предыстории имеет списковую структуру, допускающую сохранение шести элементов, и схема "первый на входе - первый на выходе" (FIFO), в которой элементы извлекаются в порядке от ранее сохраненного элемента, используется в качестве базовой операции хранения.
[0174] Здесь, хотя в дальнейшем описывается пример, в котором максимальное число элементов, допускающих сохранение в HmvpCandList, составляет шесть в качестве согласования между стороной кодирования и стороной декодирования, максимальное число не ограничено конкретным образом и может составлять шесть или больше. Кроме того, максимальное число элементов, допускающих сохранение в HmvpCandList, может быть сконфигурировано с возможностью составлять пять или меньше. Например, HmvpCandList может быть сконфигурирован с максимальным числом элементов, эквивалентному максимальному числу элементов потенциально подходящих вариантов информации интер-предсказания, к примеру, максимальному числу элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения, максимальному числу потенциально подходящих вариантов объединения и максимальному числу потенциально подходящих вариантов объединения на основе субблоков. Кроме того, HmvpCandList может быть сконфигурирован совместно с максимальным числом элементов потенциально подходящих вариантов информации интер-предсказания в каждом режиме.
[0175] Может приспосабливаться конфигурация, в которой максимальное число элементов HmvpCandList включается в синтаксический элемент потока битов и в силу этого доставляется из стороны кодирования в сторону декодирования.
[0176] Как показано на фиг. 41, HmvpCandList может сохранять шесть элементов от позиции 0, которая представляет собой начало списка, до позиции 5, которая представляет собой конец списка, и может встраивать элементы от позиции 0 до позиции 5 по порядку. Эти позиции 0-5 управляются в качестве индексов hMvpIdx предикторов векторов движения на основе предыстории. Например, позиция 0 может выражаться как hMVpIdx[0], и позиция 5 может выражаться как hMVpIdx[5]. Число сохраненных элементов HmvpCandList управляется посредством NumHmvpCand, и увеличение/снижение числа сохраненных элементов управляется в диапазоне 0-6, что представляет собой максимальное число элементов.
[0177] В дальнейшем подробно описывается случай, в котором новый элемент добавляется в состоянии, в котором максимальное число элементов сохраняется в HmvpCandList. Как показано на фиг. 42, когда потенциально подходящий вариант hMvpCand информации интер-предсказания имеет намерение быть новым зарегистрированным в качестве предыстории, элемент в позиции 0, которая представляет собой начало, удаляется, и позиции соответствующих элементов сдвигаются по одной в направлении к началу. Как результат сдвига, число сохраненных элементов постепенно уменьшается на единицу, как показано на фиг. 43, и в силу этого новый элемент может сохраняться в позиции 5 конца. Следовательно, новый элемент добавляется в HmvpCandList, как показано на фиг. 44, посредством сохранения потенциально подходящего варианта hMvpCand информации интер-предсказания в позиции 5 конца.
Процесс извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории в режиме идентификации предикторов нормальных векторов движения согласно второму варианту осуществления
[0178]
Здесь, в дальнейшем описывается процесс извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории в режиме идентификации предикторов нормальных векторов движения согласно второму варианту осуществления.
[0179] Фиг. 47 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, когда список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории выполнен с возможностью использоваться со ссылкой на порядок, противоположный опорному порядку режима нормального объединения в режиме идентификации предикторов нормальных векторов движения второго варианта осуществления.
[0180] Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения превышает или равно максимальному числу элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения (здесь, 2), или значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равно 0 ("Нет" на этапе S2601 по фиг. 47), обработка этапов S2602-S2609 по фиг. 47 опускается, и процедура обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения меньше 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения, и значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории превышает 0 ("Да" на этапе S2601 по фиг. 47), обработка этапов S2602-S2609 по фиг. 47 выполняется.
[0181] Затем, обработка этапов S2603-S2608 по фиг. 47 итеративно выполняется до тех пор, пока индекс i не изменяется с 0 до значения, полученного посредством вычитания 1 из меньшего значения из 4 и числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории (этапы S2602-S2609 на фиг. 47). Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения превышает или равно 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения ("Нет" на этапе S2603 по фиг. 47), обработка этапов S2604-S2609 по фиг. 47 опускается, и текущая процедура обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения меньше 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения ("Да" на этапе S2603 по фиг. 47), обработка с этапа S2604 по фиг. 47 выполняется.
[0182] Затем, обработка этапов S2605-S2607 выполняется относительно индексов Y в 0 и 1 (L0 и L1) (этапы S2604-S2608 по фиг. 47). Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения превышает или равно 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения ("Нет" на этапе S2605 по фиг. 47), обработка этапов S2606-S2609 по фиг. 47 опускается, и текущая процедура обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения меньше 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения ("Да" на этапе S2605 по фиг. 47), обработка с этапа S2606 по фиг. 47 выполняется.
[0183] Затем, в случае элемента, который имеет опорный индекс, идентичный опорному индексу refIdxLX вектора движения цели кодирования/декодирования, и который отличается от любого элемента списка mvpListLX потенциально подходящих вариантов предикторов векторов движения в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории ("Да" на этапе S2606 по фиг. 47), вектор движения LY потенциально подходящего варианта HmvpCandList[i] предиктора вектора движения на основе предыстории добавляется в numCurrMvpCand-ый элемент mvpListLX[numCurrMvpCand] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предикторов векторов движения (этап S2607 по фиг. 47), и текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения постепенно увеличивается на единицу. Когда отсутствует элемент, который имеет опорный индекс, идентичный опорному индексу refIdxLX вектора движения цели кодирования/декодирования, и который отличается от любого элемента списка mvpListLX потенциально подходящих вариантов предикторов векторов движения в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории ("Нет" на этапе S2606 по фиг. 47), дополнительная обработка этапа S2607 пропускается.
[0184] Вышеуказанная обработка этапов S2605-S2607 по фиг. 47 выполняется для L0 и L1 (этапы S2604-S2608 по фиг. 47).
[0185] Когда индекс i постепенно увеличивается на 1 (этапы S2602 и S2609 по фиг. 47), и индекс i меньше или равен значению, полученному посредством вычитания 1 из меньшего значения из 4 и числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории, обработка с этапа S2603 выполняется снова (этапы S2602-S2609 по фиг. 47).
[0186] Как описано выше, в режиме идентификации предикторов нормальных векторов движения, элемент добавляется в список потенциально подходящих вариантов предикторов векторов движения со ссылкой на элементы в порядке от ранее добавленного элемента (старого элемента) в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
Модифицированный пример 1
[0187]
Может приспосабливаться конфигурация, в которой вводится опорный флаг на основе предыстории, указывающий опорный порядок списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории аналогично настоящему варианту осуществления, и переключение выполняется между опорным порядком первого варианта осуществления и опорным порядком настоящего варианта осуществления. Опорный флаг на основе предыстории может включаться в синтаксический элемент потока битов и доставляться в сторону декодирования, и поток битов, имеющий опорный флаг на основе предыстории в синтаксическом элементе, может получаться и декодироваться на стороне декодирования.
Модифицированный пример 2
Хотя на элементы ссылаются по одному в порядке от элемента 0 до элемента 5 в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории, как показано на фиг. 46 в режиме идентификации предикторов нормальных векторов движения, и на элементы ссылаются по одному в порядке от элемента 5 до элемента 0 в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории, как показано на фиг. 45 в режиме нормального объединения в настоящем варианте осуществления, настоящее изобретение не ограничено этим, если опорный порядок списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории отличается между режимом идентификации предикторов нормальных векторов движения и режимом нормального объединения. Например, число элементов, на которые ссылаются из списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории, может отличаться между режимом идентификации предикторов нормальных векторов движения и режимом нормального объединения таким образом, что на элементы ссылаются от элемента 0 до элемента 2 в режиме идентификации предикторов нормальных векторов движения, и на элементы ссылаются от элемента 5 до элемента 1 в режиме нормального объединения. В этом случае, предпочтительно увеличивать число ссылок в режиме нормального объединения с большим числом потенциально подходящих вариантов. В режиме нормального объединения, начальная точка может изменяться, чтобы ссылаться на элементы от элемента 4 до элемента 0.
[0188] Согласно второму варианту осуществления, как описано выше, можно приспосабливать потенциально подходящие варианты, подходящие для каждого режима, посредством задания опорного порядка, когда список потенциально подходящих вариантов предикторов векторов движения на основе предыстории используется, таким образом, что он отличается от опорного порядка режима идентификации предикторов нормальных векторов движения. В частности, когда режим идентификации предикторов нормальных векторов движения для разности кодирования вектора движения выбирается, вектор движения, отличающийся от вектора движения окружающей ситуации целевого блока кодирования, зачастую требуется. Следовательно, можно способствовать повышению эффективности кодирования согласно потенциально подходящим вариантам, подходящим для режима идентификации предикторов нормальных векторов движения, посредством выполнения поиска в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории и использования элементов в качестве потенциально подходящих вариантов в порядке от элемента, считающегося имеющим относительно низкую корреляцию, отличающуюся от последнего, т.е. ранее сохраненного старого элемента.
[0189] Кроме того, поскольку эффективность кодирования увеличивается по мере того, как окружающая корреляция целевого блока кодирования увеличивается в режиме нормального объединения, можно способствовать повышению эффективности кодирования согласно потенциально подходящим вариантам, подходящим для режима нормального объединения, посредством выполнения поиска в списке потенциально подходящих вариантов предикторов векторов движения на основе предыстории и использования элементов в качестве потенциально подходящих вариантов в порядке от элемента, считающегося имеющим относительно высокую корреляцию с последним, т.е. последующим сохраненным новым элементом.
[0190] Два или более из всех вариантов осуществления, описанных выше, могут комбинироваться.
[0191] Во всех вариантах осуществления, описанных выше, поток битов, выводимый посредством устройства кодирования кадров, имеет конкретный формат данных таким образом, что поток битов может декодироваться в соответствии со способом кодирования, используемым в варианте осуществления. Кроме того, устройство декодирования кадров, соответствующее устройству кодирования кадров, может декодировать поток битов конкретного формата данных.
[0192] Когда проводная или беспроводная сеть используется для того, чтобы обмениваться потоком битов между устройством кодирования кадров и устройством декодирования кадров, поток битов может преобразовываться в формат данных, подходящий для формы передачи тракта связи, и передаваться. В этом случае, предоставляются передающее устройство для преобразования потока битов, выводимого из устройства кодирования кадров, в кодированные данные формата данных, подходящего для формы передачи тракта связи, и передачи кодированных данных в сеть, и приемное устройство для приема кодированных данных из сети, восстановления кодированных данных в поток битов и предоставления потока битов в устройство декодирования кадров. Передающее устройство включает в себя запоминающее устройство, которое буферизует поток битов, выводимый посредством устройства кодирования кадров, модуль обработки пакетов, который пакетизирует поток битов, и передающий модуль, который передает пакетизированные кодированные данные через сеть. Приемное устройство включает в себя приемный модуль, который принимает пакетизированные кодированные данные через сеть, запоминающее устройство, которое буферизует принимаемые кодированные данные, и модуль обработки пакетов, который формирует поток битов посредством выполнения обработки пакетов для кодированных данных и предоставляет поток битов в устройство декодирования кадров.
[0193] Кроме того, устройство отображения может предоставляться посредством добавления модуля отображения, который отображает кадр, декодированный посредством устройства декодирования кадров, в конфигурацию. В этом случае, модуль отображения считывает декодированный сигнал кадров, сформированный посредством модуля 207 наложения сигналов кадров для декодирования и сохраненный в запоминающем устройстве 208 декодированных кадров, и отображает декодированный сигнал кадров на экране.
[0194] Кроме того, устройство формирования изображений может предоставляться посредством добавления модуля формирования изображений, который вводит захваченный кадр в устройство кодирования кадров, в конфигурацию. В этом случае, модуль формирования изображений вводит захваченный сигнал кадров в модуль 101 разбиения блоков.
[0195] Фиг. 37 показывает пример аппаратной конфигурации устройства кодирования/декодирования согласно настоящему варианту осуществления. Устройство кодирования/декодирования включает в себя конфигурацию устройства кодирования кадров и устройства декодирования кадров согласно варианту осуществления настоящего изобретения. Связанное устройство 9000 кодирования/декодирования включает в себя CPU 9001, IC 9002 кодека, интерфейс 9003 ввода-вывода, запоминающее устройство 9004, накопитель 9005 на оптических дисках, сетевой интерфейс 9006 и видеоинтерфейс 9009, и соответствующие части соединяются посредством шины 9010.
[0196] Модуль 9007 кодирования кадров и модуль 9008 декодирования кадров типично реализуются в качестве IC 9002 кодека. Процесс кодирования кадров устройства кодирования кадров согласно варианту осуществления настоящего изобретения выполняется посредством модуля 9007 кодирования кадров, и процесс декодирования кадров в устройстве декодирования кадров согласно варианту осуществления настоящего изобретения выполняется посредством модуля 9008 декодирования кадров. Интерфейс 9003 ввода-вывода реализуется посредством, например, USB-интерфейса и соединяется с внешней клавиатурой 9104, мышью 9105 и т.п. CPU 9001 управляет устройством 9000 кодирования/декодирования таким образом, что требуемая пользователем операция выполняется на основе пользовательской операции, вводимой через интерфейс 9003 ввода-вывода. Пользовательские операции с использованием клавиатуры 9104, мыши 9105 и т.п. включают в себя выбор функции кодирования или декодирования, которая должна выполняться, задание качества кодирования, указание назначения ввода-вывода потока битов, указание назначения ввода-вывода кадра и т.п.
[0197] Когда пользователю требуется операция воспроизведения кадра, записанного на дисковом носителе 9100 записи, накопитель 9005 на оптических дисках считывает поток битов из дискового носителя 9100 записи, который вставлен, и передает считываемый поток битов в модуль 9008 декодирования кадров IC 9002 кодека через шину 9010. Модуль 9008 декодирования кадров выполняет процесс декодирования кадров для входного потока битов в устройстве декодирования кадров согласно варианту осуществления настоящего изобретения и передает декодированный кадр на внешний монитор 9103 через видеоинтерфейс 9009. Устройство 9000 кодирования/декодирования включает в себя сетевой интерфейс 9006 и может соединяться с внешним сервером 9106 распространения и портативным терминалом 9107 через сеть 9101. Когда пользователь хочет воспроизводить кадр, записанный на сервере 9106 распространения или в портативном терминале 9107, вместо кадра, записанного на дисковом носителе 9100 записи, сетевой интерфейс 9006 получает поток битов из сети 9101 вместо считывания потока битов из входного дискового носителя 9100 записи. Когда пользователь хочет воспроизводить кадр, записанный в запоминающем устройстве 9004, процесс декодирования кадров в устройстве декодирования кадров согласно варианту осуществления настоящего изобретения выполняется для потока битов, записанного в запоминающем устройстве 9004.
[0198] Когда пользователь хочет выполнять операцию кодирования кадра, захваченного посредством внешней камеры 9102 и записи кодированного кадра в запоминающем устройстве 9004, видеоинтерфейс 9009 вводит кадр из камеры 9102 и передает кадр в модуль 9007 кодирования кадров IC 9002 кодека через шину 9010. Модуль 9007 кодирования кадров выполняет процесс кодирования кадров для ввода кадра через видеоинтерфейс 9009 в устройстве кодирования кадров согласно варианту осуществления настоящего изобретения, чтобы создавать поток битов. Затем поток битов передается в запоминающее устройство 9004 через шину 9010. Когда пользователь хочет записывать поток битов на дисковом носителе 9100 записи вместо запоминающего устройства 9004, накопитель 9005 на оптических дисках записывает поток битов на дисковый носитель 9100 записи, который вставлен.
[0199] Также можно реализовывать аппаратную конфигурацию, которая включает в себя устройство кодирования кадров без включения устройства декодирования кадров, либо аппаратную конфигурацию, которая включает в себя устройство декодирования кадров без включения устройства кодирования кадров. Такая аппаратная конфигурация реализуется, например, посредством замены IC 9002 кодека модулем 9007 кодирования кадров или модулем 9008 декодирования кадров.
[0200] Вышеуказанные процессы, связанные с кодированием и декодированием, могут реализовываться как устройство передачи, хранения и приема данных с использованием аппаратных средств и реализовываться посредством микропрограммного обеспечения, сохраненного в постоянном запоминающем устройстве (ROM), во флэш-памяти и т.п., либо как программное обеспечение компьютера и т.п. Микропрограммно-реализованная программа и программно-реализованная программа для нее могут предоставляться посредством записи программ на носителе записи, допускающем считывание посредством компьютера и т.п., либо могут предоставляться из сервера через проводную или беспроводную сеть, либо могут предоставляться в качестве широковещательных передач данных согласно наземной или спутниковой цифровой широковещательной передаче.
[0201] Настоящее изобретение описывается выше на основе вариантов осуществления. Варианты осуществления представляют собой примеры, и специалисты в данной области техники должны понимать, что различные модификации являются возможными в комбинациях соответствующих компонентов и процессов обработки, и такие модификации находятся в пределах объема настоящего изобретения.
Пояснение номеров ссылок
100 - устройство кодирования кадров
101 - модуль разбиения блоков
102 - модуль интер-предсказания
103 - модуль интра-предсказания
104 - запоминающее устройство декодированных кадров
105 - модуль определения способа предсказания
106 - модуль формирования остатков
107 - модуль ортогонального преобразования/квантования
108 - модуль кодирования битовых строк
109 - модуль обратного квантования/обратного ортогонального преобразования
110 - модуль наложения сигналов кадров для декодирования
111 - запоминающее устройство для хранения информации кодирования
200 - устройство декодирования кадров
201 - модуль декодирования битовых строк
202 - модуль разбиения блоков
203 - модуль интер-предсказания
204 - модуль интра-предсказания
205 - запоминающее устройство для хранения информации кодирования
206 - модуль обратного квантования/обратного ортогонального преобразования
207 - модуль наложения сигналов кадров для декодирования
208 - запоминающее устройство декодированных кадров