Область техники, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0001] Варианты осуществления настоящей заявки относятся к области технологий кодирования видеоизображений и, в частности, к способу и устройству двунаправленного интер-предсказания.
Уровень техники
[0002] В технологии кодирования видео, блок изображения предсказания текущего блока может быть сгенерирован на основе только одного опорного блока изображения (это называется однонаправленным интер-предсказанием (межкадровым предсказанием), или блок изображения предсказания текущего блока может быть сгенерирован на основе по меньшей мере двух опорных блоках изображений (это называется двунаправленным интер-предсказанием). По меньшей мере два опорных блока изображений могут быть из одного и того же опорного изображения (кадра) или различных опорных изображений.
[0003] Чтобы предоставить возможность стороне декодера и стороне кодера использовать один и тот же опорный блок изображения, сторона кодера должна отправить информацию о движении каждого блока изображения на сторону декодера через битовый поток. Как правило, информация о движении текущего блока включает в себя значение индекса опорного изображения, флаг предиктора вектора движения (motion Vector Predictor, MVP), и разность вектора движения (Motion Vector Difference, MVD). Сторона декодера может найти правильный опорный блок изображения в выбранном опорном изображении на основе значения индекса опорного изображения, флага MVP и MVD.
[0004] Соответственно, при двунаправленном интер-предсказании сторона кодера должна отправлять информацию о движении каждого блока изображения в каждом направлении на сторону декодера. Следовательно, информация о движении занимает относительно большое количество ресурсов передачи. Это снижает эффективное использование ресурсов передачи, скорость передачи и эффективность сжатия кодирования.
Сущность изобретения
[0005] Варианты осуществления настоящей заявки обеспечивают способ и устройство двунаправленного интер-предсказания (межкадрового предсказания), устройство кодирования видеосигнала и устройство декодирования видео для определения индекса опорного изображения блока изображения в соответствии со способом выведения в течение кодирования или декодирования без передачи индекса опорного изображения блока изображения в битовом потоке, так что ресурсы передачи могут быть сохранены, а эффективность сжатия кодирования может быть улучшена до некоторой степени.
[0006] Для достижения вышеуказанной цели в вариантах осуществления настоящей заявки используются следующие технические решения.
[0007] Согласно первому аспекту настоящее изобретение обеспечивает способ двунаправленного интер-предсказания. Способ включает в себя:
определение индекса i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, где порядковый номер изображения (POC (picture order count)), соответствующий индексу i1 опорного изображения, меньше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i1 опорного изображения, из POC текущего изображения, меньше разности, полученной посредством вычитания POC, соответствующего индексу ix опорного изображения, из POC текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу ix опорного изображения, меньше, чем POC текущего изображения;
определение индекса i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, где POC, соответствующий индексу i2 опорного изображения, больше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i2 опорного изображения, из POC текущего изображения, больше разности, полученной посредством вычитания POC, соответствующего индексу iy опорного изображения, из POC текущего изображения, индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу iy опорного изображения, больше, чем POC текущего изображения; и
предсказание текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения, где текущее изображение включает в себя текущий блок.
[0008] Следует понимать, что индекс опорного изображения в настоящем изобретении может также кратко упоминаться как индекс.
[0009] Согласно второму аспекту настоящее изобретение обеспечивает способ двунаправленного интер-предсказания. Способ включает в себя:
когда первая группа условий удовлетворяется, определение индекса i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, где первая группа условий включает в себя, по меньшей мере, следующее условие 1 и условие 2:
условие 1: POC, соответствующий индексу i1 опорного изображения, меньше, чем POC текущего изображения; и
условие 2: разность, полученная посредством вычитания POC, соответствующего индексу i1 опорного изображения, из POC текущего изображения, меньше разности, полученной посредством вычитания POC, соответствующего индексу ix опорного изображения, из POC текущего изображения, то индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу ix опорного изображения, меньше, чем POC текущего изображения;
когда вторая группа условий удовлетворяется, определение индекса i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, где вторая группа условий включает в себя, по меньшей мере, следующее условие 11 и условие 12:
условие 11: POC, соответствующий индексу i2 опорного изображения больше, чем POC текущего изображения; и
условие 12: разность, полученная посредством вычитания POC, соответствующего индексу i2 опорного изображения, из POC текущего изображения, больше разности, полученной посредством вычитания POC, соответствующего индексу iy опорного изображения, из POC текущего изображения, то индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу iy опорного изображения, больше, чем POC текущего изображения; и
предсказание текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения, где текущее изображение включает в себя текущий блок.
[0010] Следует понимать, что в вариантах осуществления настоящего изобретения, в дополнение к условию 1 и условию 2, первая группа условий может дополнительно включать в себя другое условие, и в дополнение к условию 11 и условию 12 вторая группа условий может дополнительно включать в себя другое условие. Эти условия включают в себя, но не ограничиваются этим, необязательное условие выполнения в предшествующем уровне техники или необязательное условие выполнения в стандартном развитии и не исчерпывающе перечислены в вариантах осуществления настоящего изобретения.
[0011] Согласно третьему аспекту настоящее изобретение обеспечивает способ двунаправленного интер-предсказания. Способ включает в себя:
обеспечение возможности определить индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, где POC, соответствующий индексу i1 опорного изображения, меньше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i1 опорного изображения, из POC текущего изображения, меньше разности, полученной посредством вычитания POC, соответствующего индексу ix опорного изображения, из POC текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу ix опорного изображения, меньше, чем POC текущего изображения;
обеспечение возможности определить индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, где POC, соответствующий индексу i2 опорного изображения, больше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i2 опорного изображения, из POC текущего изображения, больше разности, полученной посредством вычитания POC, соответствующего индексу iy опорного изображения, из POC текущего изображения, индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу iy опорного изображения, больше, чем POC текущего изображения; и
предсказание текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения, когда индекс i1 опорного изображения определен в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, и индекс i2 опорного изображения определен в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, где текущее изображение включает в себя текущий блок.
[0012] Согласно первому аспекту, второму аспекту или третьему аспекту настоящего изобретения в возможном варианте реализации первый список опорных изображений может соответствовать первому направлению, а второй список опорных изображений может соответствовать второму направлению. Первое направление и второе направление могут быть, соответственно, направлением вперед и направлением назад, или направлением назад и направлением вперед, или и первое направление, и второе направление могут быть направлениями вперед или направлениями назад. Направление также может пониматься как временная последовательность и не ограничивается в настоящем изобретении.
[0013] Согласно первому аспекту, второму аспекту или третьему аспекту настоящего изобретения в возможном варианте реализации способ используется в устройстве декодирования, и, соответственно, способ дополнительно включает в себя:
получение первого идентификатора, когда значение первого идентификатора является первым предварительно установленным значением (которое может быть, но не ограничивается этим, 1 или 0), и используется для указания определить индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, и определить индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений.
[0014] В необязательном порядке, когда значение первого идентификатора является вторым предварительно установленным значением (которое отличается от первого предварительно установленного значения и может быть, но не ограничивается этим, 0 или 1), первый идентификатор может указывать, что битовый поток необходимо проанализировать (осуществить парсинг) или другой способ должен быть использован для получения индекса опорного изображения текущего блока.
[0015] Согласно первому аспекту, второму аспекту или третьему аспекту настоящего изобретения в возможном варианте реализации, когда первый идентификатор является первым предварительно установленным значением (которое может быть, но не ограничивается этим, 1 или 0), первый идентификатор может дополнительно использоваться для указания определить разность второго вектора движения текущего блока на основе разности первого вектора движения текущего блока, и способ дополнительно включает в себя:
получение разности первого вектора движения текущего блока; и
получение разности второго вектора движения текущего блока на основе разности первого вектора движения согласно следующей формуле:
mvd_lY = -mvd_lX.
[0016] Здесь mvd_lY представляет разность второго вектора движения, mvd_lX представляет разность первого вектора движения, одна из разности первого вектора движения и разности второго вектора движения соответствует первому списку опорных изображений, а другая из разности первого вектора движения и разности второго вектора движения соответствует второму списку опорных изображений.
[0017] В необязательном порядке, когда значение первого идентификатора является вторым предварительно установленным значением (которое отличается от первого предварительно установленного значения и может быть, но не ограничивается этим, 0 или 1), первый идентификатор может указывать, что битовый поток необходимо проанализировать или другой способ должен использоваться для получения разности первого вектора движения и/или разности второго вектора движения текущего блока, соответствующих первому списку опорных изображений и/или второму списку опорных изображений.
[0018] Вкратце, когда значение первого идентификатора является первым предварительно установленным значением, первый идентификатор может указывать, что первая информация о движении и вторая информация о движении могут быть выведены взаимно. Например, вторая информация о движении может быть выведена на основе первой информации о движении, или первая информация о движении может быть выведена на основе второй информации о движении. Более конкретно, второй вектор движения может быть выведен на основе первого вектора движения, или первый вектор движения может быть выведен на основе второго вектора движения. Разность второго вектора движения может быть выведена на основе разности первого вектора движения, или разность первого вектора движения может быть выведена на основе разности второго вектора движения.
[0019] В этом случае не вся информация о движении (например, MVD) должна передаваться в битовом потоке, так что ресурсы для передачи битового потока уменьшаются, тем самым повышая эффективность передачи битового потока.
[0020] Кроме того, когда первый вектор движения выводится на основе второго вектора движения, или второй вектор движения выводится на основе первого вектора движения, индекс первого опорного изображения и индекс второго опорного изображения могут быть определены посредством выведения. Другими слова, индекс первого опорного изображения и индекс второго опорного изображения могут быть получены без анализа битового потока.
[0021] В заключении, можно понять, что, когда значение первого идентификатора является первым предварительно установленным значением, первый идентификатор может использоваться для указания того, что индекс опорного изображения текущего блока может быть получен или определен посредством выведения. В частности, когда значение первого идентификатора является первым предварительно установленным значением, первый идентификатор может быть использован для указания определить индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, и определить индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений. В этом случае индекс опорного изображения может не передаваться в битовом потоке, с тем чтобы повысить эффективность передачи битового потока.
[0022] Кроме того, когда значение первого идентификатора является вторым предварительно установленным значением, первый идентификатор может использоваться для указания того, что первый вектор движения не выводится на основе второго вектора движения или второй вектор движения не выводится на основе первого вектора движения. В этом случае битовый поток должен быть проанализирован для получения индекса первого опорного изображения и индекса второго опорного изображения текущего блока.
[0023] Кроме того, когда значение первого идентификатора является вторым предварительно установленным значением, первый идентификатор может использоваться для указания того, что разность первого вектора движения не выводится на основе разности второго вектора движения или разность второго вектора движения не выводится на основе разности первого вектора движения. В этом случае битовый поток должен быть проанализирован для получения индекса первого опорного изображения и индекса второго опорного изображения текущего блока.
[0024] Согласно первому аспекту, второму аспекту или третьему аспекту настоящего изобретения в возможном варианте реализации способ дополнительно включает в себя:
получение первого предсказанного вектора движения и второго предсказанного вектора движения;
определение первого вектора движения на основе первого предсказанного вектора движения и разности первого вектора движения; и
определение второго вектора движения на основе второго предсказанного вектора движения и разности второго вектора движения.
[0025] Предсказание текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения включает в себя: предсказание текущего блока на основе индекса первого опорного изображения, индекса второго опорного изображения, первого списка опорных изображений, второго списка опорных изображений, первого вектора движения и второго вектора движения.
[0026] В необязательном порядке, в конкретном процессе реализации первый предсказанный вектор движения и второй предсказанный вектор движения могут быть получены посредством анализа и/или посредством выведения в вариантах осуществления настоящего изобретения, разность первого вектора движения и разность второго вектора движения также могут быть получены посредством анализа и/или посредством выведения в вариантах осуществления настоящего изобретения, индекс первого опорного изображения и индекс второго опорного изображения могут быть определены в соответствии с вышеизложенным способом определения, и первый список опорных изображений и второй список опорных изображений могут быть получены из битового потока или могут быть построены. После того, как эти части информации о движении будут завершены, можно предсказать текущий блок. Конкретный способ предсказания может быть реализован согласно предшествующему уровню техники.
[0027] В соответствии с вышеуказанным способом, MVD в одном направлении может быть выведена на основе MVD в другом направлении, и индекс опорного изображения может быть определен в соответствии с конкретным правилом. Таким образом, для двух частей информации о движении текущего блока по меньшей мере одна MVD и индексы двух опорных изображений могут не передаваться в битовом потоке, тем самым экономя ресурсы для передачи битового потока.
[0028] Согласно первому аспекту, второму аспекту или третьему аспекту настоящего изобретения в возможном варианте реализации перед получением первого идентификатора способ дополнительно включает в себя: определение того, что предварительно установленное условие удовлетворено, где предварительно установленное условие включает в себя:
первый список опорных изображений имеет первый индекс, второй список опорных изображений имеет второй индекс, POC текущего изображения находится между POC, соответствующим первому индексу, и POC, соответствующим второму индексу.
[0029] Например, это также может быть представлено как выполнение следующего условия:
(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0.
[0030] При этом, POC_Cur может представлять POC текущего изображения, POC_listX может представлять POC опорного изображения в первом списке опорных изображений и POC_listY может представлять POC опорного изображения во втором списке опорных изображений.
[0031] Согласно первому аспекту, второму аспекту или третьему аспекту настоящего изобретения в возможном варианте реализации, перед получением первого идентификатора способ дополнительно включает в себя: определение того, что предварительно установленное условие удовлетворено, где предварительно установленное условие включает в себя то, что полученный идентификатор остаточного вектора движения, который относится к текущему изображению и который соответствует второму списку опорных изображений, является третьим предварительно установленным значением. Например, mvd_l1_zero_flag текущего изображения равен 0.
[0032] Согласно первому аспекту, второму аспекту или третьему аспекту настоящего изобретения в возможном варианте реализации, когда (POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0, изображение, имеющее наименьшую разность POC от изображения, в котором подлежащий обработке блок (то есть, текущий блок) расположен, определяется в качестве первого целевого опорного изображения в первом списке опорных изображений подлежащего обработке блока, где POC первого целевого опорного изображения меньше, чем POC изображения, в котором расположен подлежащий обработке блок; и изображение, имеющее наименьшую разность POC от изображения, в котором расположен подлежащий обработке блок, определяется в качестве второго целевого опорного изображения во втором списке опорных изображений подлежащего обработке блока, где POC второго целевого опорного изображения больше, чем POC изображения, в котором расположен подлежащий обработке блок. Когда и первого целевое опорное изображение, и второе целевое опорное изображение существуют, индекс опорного изображения первого целевого опорного изображения в первом списке опорных изображений представляет собой i1, и индекс опорного изображения второго целевого опорного изображения во втором списке опорных изображений представляет собой i2.
[0033] В необязательном порядке, когда первое целевое опорное изображение или второе целевое опорное изображение не существуют, изображение, имеющее наименьшую разность POC от изображения, в котором расположен подлежащий обработке блок, определяется в качестве третьего целевого опорного изображения в первом списке опорных изображений подлежащего обработке блока, где POC третьего целевого опорного изображения больше, чем POC изображения, в котором расположен подлежащий обработке блок; и изображение, имеющее наименьшую разность POC от изображения, в котором расположен подлежащий обработке блок, определяется в качестве четвертого целевого опорного изображения во втором списке опорных изображений подлежащего обработке блока, где POC четвертого целевого опорного изображения меньше, чем POC изображения, в котором расположен подлежащий обработке блок. Когда и третье целевое опорное изображение и четвертое целевое опорное изображение существуют, индекс четвертого целевого опорного изображения во втором списке опорных изображений представляет собой i2, а индекс опорного изображения третьего целевого опорного изображения в первом списке опорных изображений представляет собой i1.
[0034] Согласно четвертому аспекту обеспечивается устройство двунаправленного интер-предсказания. Устройство включает в себя:
модуль определения, выполненный с возможностью: определения индекса i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, где POC, соответствующий индексу i1 опорного изображения, меньше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i1 опорного изображения, из POC текущего изображения, меньше разности, полученной посредством вычитания POC, соответствующего индексу ix опорного изображения, из POC текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу ix опорного изображения, меньше, чем POC текущего изображения; и определения индекса i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, где POC, соответствующий индексу i2 опорного изображения, больше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i2 опорного изображения, из POC текущего изображения, больше разности, полученной посредством вычитания POC, соответствующего индексу iy опорного изображения, из POC текущего изображения индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из первого списка опорных изображений и POC, соответствующий индексу iy опорного изображения, больше, чем POC текущего изображения; и
модуль обработки интер-предсказания, выполненный с возможностью предсказания текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения, где текущее изображение включает в себя текущий блок.
[0035] Согласно четвертому аспекту в возможном варианте реализации устройство дополнительно включает в себя модуль получения, выполненный с возможностью получения первого идентификатора, где значение первого идентификатора является первым предварительно установленным значением, а когда значение первого идентификатора является первым предварительно установленным значением, первый идентификатор используется для указания определить индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, и определения индекса i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений.
[0036] Согласно четвертому аспекту, в возможном варианте реализации, когда первый идентификатор является первым предварительно установленным значением, первый идентификатор дополнительно используется для указания определить разность второго вектора движения текущего блока на основе разности первого вектора движения текущего блока; модуль получения дополнительно выполнен с возможностью получения разности первого вектора движения текущего блока; и модуль определения дополнительно выполнен с возможностью получения разности второго вектора движения текущего блока на основе разности первого вектора движения согласно следующей формуле:
mvd_lY = -mvd_lX.
[0037] Здесь mvd_lY представляет разность второго вектора движения, mvd_lX представляет разность первого вектора движения, одна из разности первого вектора движения и разности второго вектора движения принадлежит информации о движении, соответствующей первому списку опорных изображений, а другая из разности первого вектора движения и разности второго вектора движения принадлежит информации о движении, соответствующей второму списку опорных изображений.
[0038] Согласно четвертому аспекту в возможном варианте реализации модуль получения конкретно выполнен с возможностью получения первого предсказанного вектора движения и второго предсказанного вектора движения; модуль определения выполнен с возможностью: определять первый вектор движения на основе первого предсказанного вектора движения и разности первого вектора движения и определять второй вектор движения на основе второго предсказанного вектора движения и разности второго вектора движения; и модуль обработки интер-предсказания выполнен с возможностью предсказания текущего блока на основе индекса первого опорного изображения, индекса второго опорного изображения, первого списка опорных изображений, второго списка опорных изображений, первого вектора движения и второго вектора движения.
[0039] В течение конкретной реализации вышеупомянутые модули (виртуальные модули) включают в себя, на не ограничиваются этим, дискретные вычислительные модули или один и тот же интегрированный вычислительный модуль. Формы реализации не перечислены исчерпывающе. Различные названия используются только для различения функций и не должны создавать ненужных ограничений для структуры.
[0040] Согласно пятому аспекту настоящее изобретение обеспечивает способ двунаправленного интер-предсказания, включающий в себя:
когда вспомогательная информация подлежащего обработке блока удовлетворяет предварительно установленному условию, анализ битового потока для получения информации указания, где информация указания используется для указания способа получения первого вектора движения и способа получения второго вектора движения, первый вектор движения представляет собой вектор движения, который указывает на опорное изображение в первом списке опорных изображений подлежащего обработке блока, а второй вектор движения является вектором движения, который указывает на опорное изображение во втором списке опорных изображений подлежащего обработке блока;
определение первого вектора движения и второго вектора движения на основе способов получения, указанных посредством информации указания; и
определение предиктора подлежащего обработке блока на основе первого вектора движения, второго вектора движения, индекса первого опорного изображения и индекса второго опорного изображения, где индекс первого опорного изображения используется для указания опорного изображения, на которое указывает первый вектор движения в первом списке опорных изображений, а индекс второго опорного изображения используется для указания опорного изображения, на которое указывает второй вектор движения во втором списке опорных изображений.
[0041] Согласно шестому аспекту настоящее изобретение обеспечивает устройство двунаправленного интер-предсказания, включающее в себя: модуль получения, выполненный с возможностью: когда вспомогательная информация подлежащего обработке блока удовлетворяет предварительно установленному условию, анализировать битовый поток для получения информации указания, где информация указания используется для указания способа получения первого вектора движения и способа получения второго вектора движения, первый вектор движения представляет собой вектор движения, который указывает на опорное изображение в первом списке опорных изображений подлежащего обработке блока, а второй вектор движения является вектором движения, который указывает на опорное изображение во втором списке опорных изображений подлежащего обработке блока; и модуль определения, выполненный с возможностью определения первого вектора движения и второго вектора движения на основе способов получения, указанных информацией указания, и определения предиктора подлежащего обработке блока на основе первого вектора движения, второго вектора движения, индекса первого опорного изображения, и индекса второго опорного изображения, где индекс первого опорного изображения используется для указания опорного изображения, на которое указывает первый вектор движения в первом списке опорных изображений, а индекс второго опорного изображения используется для указания опорного изображения, на которое указывает второй вектор движения во втором списке опорных изображений.
[0042] Пятый аспект и шестой аспект описывают способ и устройство, которые соответствуют друг другу. В следующих возможных вариантах реализации только способ используется в качестве примера для описания возможных решений реализации, и подробности на стороне устройства не описываются.
[0043] Согласно пятому аспекту или шестому аспекту в возможном варианте реализации информация указания включает в себя первый идентификатор и пятый идентификатор, и анализ битового потока для получения информации указания включает в себя: анализ битового потока для получения первого идентификатора; и когда первый идентификатор равен 0, анализ битового потока для получения пятого идентификатора. Соответственно, определение первого вектора движения и второго вектора движения на основе способов получения, указанных посредством информации указания, включает в себя:
когда первый идентификатор равен 1, анализ битового потока для получения индекса первого предсказанного вектора движения и/или остатка первого вектора движения; вычисление первого вектора движения на основе индекса первого предсказанного вектора движения и/или остатка первого вектора движения; и выведение второго вектора движения на основе первого вектора движения, где первый вектор движения и второй вектор движения находятся в предварительно установленной математической зависимости;
когда первый идентификатор равен 0, и пятый идентификатор равен 1, анализ битового потока для получения индекса второго предсказанного вектора движения и/или остатка второго вектора движения; вычисление второго вектора движения на основе индекса второго предсказанного вектора движения и/или остатка второго вектора движения; и выведение первого вектора движения на основе второго вектора движения, где первый вектор движения и второй вектор движения находятся в предварительно установленной математической зависимости; или
когда первый идентификатор равен 0, и пятый идентификатор равен 0, анализ битового потока для получения индекса первого предсказанного вектора движения и/или остатка первого вектора движения; вычисление первого вектора движения на основе индекса первого предсказанного вектора движения и/или остатка первого вектора движения; анализ битового потока для получения индекса второго предсказанного вектора движения и/или остатка второго вектора движения; и вычисление второго вектора движения на основе индекса второго предсказанного вектора движения и/или остатка второго вектора движения.
[0044] Согласно пятому аспекту или шестому аспекту в возможном варианте реализации информация указания включает в себя второй идентификатор и третий идентификатор, и анализ битового потока для получения информации указания включает в себя: анализ битового потока для получения второго идентификатора; и когда второй идентификатор равен 1, анализ битового потока для получения третьего идентификатора. Соответственно, определение первого вектора движения и второго вектора движения на основе способов получения, указанных информацией указания, включает в себя: когда второй идентификатор равен 0, анализ битового потока для получения индекса первого предсказанного вектора движения и/или остатка первого вектора движения; вычисление первого вектора движения на основе индекса первого предсказанного вектора движения и/или остатка первого вектора движения; анализ битового потока для получения индекса второго предсказанного вектора движения и/или остатка второго вектора движения; и вычисление второго вектора движения на основе индекса второго предсказанного вектора движения и/или остатка второго вектора движения; или когда второй идентификатор равен 1, и третий идентификатор является первым значением, анализ битового потока для получения индекса первого предсказанного вектора движения и/или остатка первого вектора движения; вычисление первого вектора движения на основе индекса первого предсказанного вектора движения и/или остатка первого вектора движения; и выведение второго вектора движения на основе первого вектора движения, где первый вектор движения и второй вектор движения находятся в предварительно установленной математической зависимости; или когда второй идентификатор равен 1, и третий идентификатор является вторым значением, анализ битового потока для получения индекса второго предсказанного вектора движения и/или остатка второго вектора движения; вычисление второго вектора движения на основе индекса второго предсказанного вектора движения и/или остатка второго вектора движения; и выведение первого вектора движения на основе второго вектора движения, где первый вектор движения и второй вектор движения находятся в предварительно установленной математической зависимости, и первое значение не равно второму значению.
[0045] Согласно пятому аспекту или шестому аспекту в возможном варианте реализации информация указания включает в себя второй идентификатор, и анализ битового потока для получения информации указания включает в себя:
анализ битового потока для получения второго идентификатора.
[0046] Соответственно, определение первого вектора движения и второго вектора движения на основе способов получения, указанных посредством информации указания, включает в себя:
когда второй идентификатор равен 0, анализ битового потока для получения индекса первого предсказанного вектора движения и/или остатка первого вектора движения; вычисление первого вектора движения на основе индекса первого предсказанного вектора движения и/или остатка первого вектора движения; анализ битового потока для получения индекса второго предсказанного вектора движения и/или остатка второго вектора движения; и вычисление второго вектора движения на основе индекса второго предсказанного вектора движения и/или остатка второго вектора движения; или
когда второй идентификатор равен 1, анализ битового потока для получения индекса первого предсказанного вектора движения и/или остатка первого вектора движения; вычисление первого вектора движения на основе индекса первого предсказанного вектора движения и/или остатка первого вектора движения; и выведение второго вектора движения на основе первого вектора движения, где первый вектор движения и второй вектор движения находятся в предварительно установленной математической зависимости.
[0047] Согласно пятому аспекту или шестому аспекту в возможном варианте реализации то, что первый вектор движения и второй вектор движения находятся в предварительно установленном математической зависимости, включает в себя то, что: первый вектор движения и второй вектор движения равны по размеру и противоположны по направлению, и/или остаток первого вектора движения и остаток второго вектора движения равны по размеру и противоположны по направлению.
[0048] Согласно пятому аспекту или шестому аспекту в возможном варианте реализации вспомогательная информация включает в себя количество опорных изображений подлежащего обработке блока, и то, что вспомогательная информация подлежащего обработке блока удовлетворяет предварительно установленному условию, включает в себя: количество опорных изображений подлежащего обработке блока больше или равно 2.
[0049] Согласно пятому аспекту или шестому аспекту, в возможном варианте реализации, вспомогательная информация включает в себя зависимость порядкового номера изображения (POC) между изображением, в котором расположен подлежащий обработке блок, и опорным изображением подлежащего обработке блока, и то, что вспомогательная информация подлежащего обработке блока удовлетворяет предварительно установленному условию, включает в себя:
POC_Cur-POC_listX=POC_listY-POC_Cur.
[0050] При этом, POC_Cur является POC изображения, в котором расположен подлежащий обработке блок, POC_listX является POC опорного изображения подлежащего обработке блока в первом списке опорных изображений, и POC_listY является POC опорного изображения подлежащего обработке блока во втором списке опорных изображений.
[0051] Согласно пятому аспекту или шестому аспекту, в возможном варианте реализации, вспомогательная информация включает в себя зависимость порядкового номера изображения (POC) между изображением, в котором расположен подлежащий обработке блок, и опорным изображением подлежащего обработке блока, и что вспомогательная информация подлежащего обработке блока удовлетворяет предварительно установленному условию, включает в себя:
(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0.
[0052] При этом, POC_Cur является POC изображения, в котором расположен подлежащий обработке блок, POC_listX является POC опорного изображения подлежащего обработке блока в первом списке опорных изображений, и POC_listY является POC опорного изображения подлежащего обработке блока во втором списке опорных изображений.
[0053] Согласно пятому аспекту или шестому аспекту в возможном варианте реализации вспомогательная информация включает в себя временной идентификатор (Temporal ID) изображения, в котором расположен подлежащий обработке блок, и то, что вспомогательная информация подлежащего обработке блока удовлетворяет предварительно установленному условию, включает в себя то, что: временной идентификатор изображения, в котором расположен подлежащий обработке блок, больше или равен предварительно установленному значению.
[0054] Согласно пятому аспекту или шестому аспекту в возможном варианте реализации вспомогательная информация включает в себя идентификатор остатка вектора движения (mvd_l1_zero_flag) подлежащего обработке блока, и то, что вспомогательная информация подлежащего обработке блока удовлетворяет предварительно установленное условию, включает в себя, то что: идентификатор остатка вектора движения подлежащего обработке блока указывает, что остаток вектора движения подлежащего обработке блока равен 0, где остаток вектора движения является остатком первого вектора движения или остатком второго вектора движения.
[0055] Согласно пятому аспекту или шестому аспекту в возможном варианте реализации перед определением предиктора подлежащего обработке блока, способ дополнительно включает в себя:
когда первый вектор движения выводится на основе второго вектора движения, или второй вектор движения выводится на основе первого вектора движения, определение индекса первого опорного изображения и индекса второго опорного изображения на основе предварительно установленного условия, которому удовлетворяет вспомогательная информация; или
когда первый вектор движения не выводится на основе второго вектора движения, и второй вектор движения не выведен на основе первого вектора движения, анализ битового потока для получения индекса первого опорного изображения и индекса второго опорного изображения.
[0056] Согласно пятому аспекту или шестому аспекту, в возможном варианте реализации, определение индекса первого опорного изображения и индекса второго опорного изображения включает в себя: установление каждого из индекса первого опорного изображения и второго индекса опорного изображения в предварительно установленную константу. Предварительно установленная константа может быть 0.
[0057] Согласно пятому аспекту или шестому аспекту, в возможном варианте реализации, когда POC_Cur-POC_listX=POC_listY-POC_Cur, определение индекса первого опорного изображения и индекса второго опорного изображения включает в себя: определение, в качестве первого целевого опорного изображения в первом списке опорных изображений подлежащего обработке блока, изображения, имеющего наименьшую разность POC от изображения, в котором расположен подлежащий обработке блок, где POC первого целевого опорного изображения меньше, чем POC изображения, в котором расположен подлежащий обработке блок; поиск во втором списке опорных изображений подлежащего обработке блока второго целевого опорного изображения, где POC второго целевого опорного изображения удовлетворяет следующему: POC_Cur-POC_1=POC_2-POC_Cur, POC_1 является POC первого целевого опорного изображения, и POC_2 является POC второго целевой опорного изображения; и когда существуют как первое целевое опорное изображение, так и второе целевое опорное изображение, установку индекса первого опорного изображения в идентификатор первого целевого опорного изображения, и установку индекса второго опорного изображения в идентификатор второго целевого опорного изображения.
[0058] Согласно пятому аспекту или шестому аспекту в возможном варианте реализации способ дополнительно включает в себя:
когда первое целевое опорное изображение или второе целевое опорное изображение не существуют, определение, в качестве третьего целевого опорного изображения в первом списке опорных изображений подлежащего обработке блока, изображения, имеющего наименьшее значение POC от изображения, в котором расположен подлежащий обработке блок, где POC третьего целевого опорного изображения больше, чем POC изображения, в котором расположен подлежащий обработке блок; поиск во втором списке опорных изображений подлежащего обработке блока четвертого целевого опорного изображения, где POC четвертого целевого опорного изображения удовлетворяет следующему: POC_Cur-POC_3=POC_4-POC_Cur, POC_3 является POC третьего целевого опорного изображения, и POC_4 является POC четвертого целевого опорного изображения; и установку индекса первого опорного изображения в идентификатор третьего целевого опорного изображения, и установку индекса второго опорного изображения в идентификатор четвертого целевого опорного изображения.
[0059] Согласно пятому аспекту или шестому аспекту, в возможном варианте реализации, когда (POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0, то определение индекса первого опорного изображения и индекса второго опорного изображения включает в себя:
определение, в качестве первого целевого опорного изображения в первом списке опорных изображений подлежащего обработке блока, изображение, имеющее наименьшую разность POC от изображения, в котором расположен подлежащий обработке блок, где POC первого целевого опорного изображения меньше, чем POC изображения, в котором расположен подлежащий обработке блок;
определение, в качестве второго целевого опорного изображения во втором списке опорных изображений подлежащего обработке блока, изображение, имеющее наименьшую разность POC от изображения, в котором расположен подлежащий обработке блок, где POC второго целевого опорного изображения больше, чем POC изображения, в котором расположен подлежащий обработке блок; и
когда существуют как первое целевое опорное изображение, так и второе целевое опорное изображение, установку индекса первого опорного изображения в идентификатор первого целевого опорного изображения, и установку индекса второго опорного изображения в идентификатор второго целевого опорного изображения.
[0060] Согласно пятому аспекту или шестому аспекту в возможном варианте реализации способ дополнительно включает в себя:
когда первое целевое опорное изображение или второе целевое опорное изображение не существуют, определение, в качестве третьего целевого опорного изображения в первом списке опорных изображений подлежащего обработке блока, изображения, имеющего наименьшее значение POC от изображения, в котором расположен подлежащий обработке блок, где POC третьего целевого опорного изображения больше, чем POC изображения, в котором расположен подлежащий обработке блок; определение, в качестве четвертого целевого опорного изображения во втором списке опорных изображений подлежащего обработке блока, изображение, имеющее наименьшую разность POC от изображения, в котором расположен подлежащий обработке блок, где POC четвертого целевого опорного изображения меньше, чем POC изображения, в котором расположен подлежащий обработке блок; и установку индекса первого опорного изображения в идентификатор третьего целевого опорного изображения, и установку индекса второго опорного изображения в идентификатор четвертого целевого опорного изображения.
[0061] Согласно седьмому аспекту настоящее изобретение обеспечивает способ двунаправленного интер-предсказания, включающий в себя:
когда, по меньшей мере, синтаксический элемент в битовом потоке указывает, что разность второго вектора движения текущего изображения должна быть проанализирована, получение первого идентификатора; получение разности первого вектора движения текущего блока; и когда значение первого идентификатора является первым предварительно установленным значением, определение разности второго вектора движения текущего блока на основе разности первого вектора движения, где разность первого вектора движения принадлежит информации о движении текущего блока в первом направлении, разность второго вектора движения принадлежит информации о движении текущего блока во втором направлении, и разность первого вектора движения и разность второго вектора движения используются для предсказания текущего блока.
[0062] Согласно восьмому аспекту предоставляется способ двунаправленного интер-предсказания, включающий в себя: получение информации указания, используемой для указания определить вторую информацию о движении на основе первой информации о движении, где первая информация о движении является информацией о движении текущего блока в первом направление, а вторая информация о движении является информацией о движении текущего блока во втором направлении; получение первой информации о движении; и определение второй информации о движении на основе полученной первой информации о движении. Таким образом, дискретный отсчет предсказания текущего блока может быть определен на основе полученной первой информации о движении и определенной второй информации о движении.
[0063] Согласно способу двунаправленного интер-предсказания, предоставленному в настоящей заявке, после того, как информация указания получена, вторая информация о движении определяется на основе первой информации о движении. Таким образом, битовый поток должен включать в себя только информацию указания и первую информацию о движении и больше не должен включать в себя вторую информацию о движении. По сравнению с предшествующим уровнем техники, в котором битовый поток включает в себя информацию о движении каждого блока изображения в каждом направлении, способ двунаправленного интер-предсказания, предоставляемый в настоящей заявке, эффективно уменьшает информацию о движении, включенную в битовый поток, и улучшает эффективное использование ресурсов передачи, скорость передачи и скорость кодирования.
[0064] В необязательном порядке, в возможном варианте реализации настоящей заявки, способ «определения второй информации о движении на основе первой информации о движении» представляет собой: получение значения индекса первого опорного изображения в первой информации о движении, и определение порядкового номера первого опорного изображения на основе значения индекса первого опорного изображения и первого списка опорных изображений, где первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, а значение индекса первого опорного изображения является номером первого опорного изображения в первом списке опорных изображений; получение значения индекса второго опорного изображения, и определение порядкового номера изображения второго опорного изображения на основе значения индекса второго опорного изображения и второго списка опорных изображений, где второе опорное изображением является опорным изображением текущего блока во втором направлении, а значение индекса второго опорного изображения является номером второго опорного изображения во втором списке опорных изображений; определение первого вектора движения на основе разности первого вектора движения и флага предиктора первого вектора движения, которые находятся в первой информации о движении, где первый вектор движения является вектором движения текущего блока в первом направлении; и определение второго вектора движения во второй информации о движении согласно следующей формуле:
.
[0065] В формуле, представляет собой второй вектор движения, представляет собой порядковый номер изображения текущего изображения, представляет собой порядковый номер изображения первого опорного изображения, представляет собой порядковый номер изображения второго опорного изображения, представляет собой первый вектор движения, а второй вектор движения является вектором движения текущего блока во втором направлении.
[0066] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, способ «определения второй информации о движении на основе первой информации о движении» представляет собой: получение значения индекса первого опорного изображения в первой информации о движении, и определение порядкового номера первого опорного изображения на основе значения индекса первого опорного изображения и первого списка опорных изображений, где первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, а значение индекса первого опорного изображения является номером первого опорного изображения в первом списке опорных изображений; получение значения индекса второго опорного изображения, и определение порядкового номера изображения второго опорного изображения на основе значения индекса второго опорного изображения и второго списка опорных изображений, где второе опорное изображением является опорным изображением текущего блока во втором направлении, а значение индекса второго опорного изображения является номером второго опорного изображения во втором списке опорных изображений; определение первого вектора движения на основе разности первого вектора движения и флага предиктора первого вектора движения, которые находятся в первой информации о движении, где первый вектор движения является вектором движения текущего блока в первом направлении; и когда первое опорное изображение является опорным изображением впереди текущего блока, а второе опорное изображение является опорным изображением позади текущего блока, или когда первое опорное изображение является опорным изображением позади текущего блока, а второе опорное изображение является опорным изображением впереди текущего блока, или когда каждое из первого опорного изображения и второго опорного изображения является опорным изображением впереди текущего блока, или каждое из первого опорного изображения и второго опорного изображения является опорным изображением позади текущего блока, определение второго вектора движения во второй информации о движении в соответствии с формулой mv_lY=-mv_lX, где в этой формуле mv_lY представляет второй вектор движения, mv_lX представляет первый вектор движения, а второй вектор движения представляет собой вектор движения текущего блока во втором направлении.
[0067] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, способ «определения второй информации о движении на основе первой информации о движении» представляет собой: определение второго вектора движения во второй информации о движении в соответствии с формулой mv_lY=-mv_lX, где в этой формуле mv_lY представляет второй вектор движения, mv_lX представляет первый вектор движения, а второй вектор движения представляет собой вектор движения текущего блока во втором направлении.
[0068] Оба случая, когда «первое опорное изображение является опорным изображением впереди текущего блока и второе опорное изображение является опорным изображением позади текущего блока» и «первое опорное изображение является опорным изображением позади текущего блока, а второе опорное изображение является опорным изображением впереди текущего блока», могут быть представлены с использованием формулы (POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0, или могут быть представлены с использованием формулы POC_listY=2*POC_Cur-POC_listX. В настоящей заявке это особым образом не ограничено.
[0069] Кроме того, оба случая, когда «каждое из первого опорного изображения и второго опорного изображения является опорным изображением впереди текущего блока» и «каждое из первого опорного изображения и второго опорного изображения является опорным изображением позади текущего блока», могут быть представлены посредством использования формулы
(POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0.
[0070] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, способ «определения второй информации о движении на основе первой информации о движении» представляет собой: получение значения индекса первого опорного изображения и вектора разности в первом движении, которые находятся в первой информации о движении, и определение порядкового номера изображения первого опорного изображения на основе значения индекса первого опорного изображения и первого списка опорных изображений, где первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, и значение индекса первого опорного изображения является номером первого опорного изображения в первом списке опорных изображений; получение значения индекса второго опорного изображения, определение порядкового номера изображения второго опорного изображения на основе значения индекса второго опорного изображения и второго списка опорных изображений, и определение второго предсказанного вектора движения на основе значения индекса второго опорного изображения и второго списка потенциально подходящих предсказанных векторов движения, где второй предсказанный вектор движения является предсказанным вектором движения текущего блока во втором направлении, второе опорное изображение представляет собой опорное изображение текущего блока во втором направлении, и значение индекса второго опорного изображения является номером второго опорного изображения во втором списке опорных изображений; определение разности второго вектора движения во второй информации о движении согласно следующей формуле:
, где
в формуле, представляет разность второго вектора движения, представляет собой порядковый номер изображения текущего изображения, представляет собой порядковый номер изображения первого опорного изображения, представляет собой порядковый номер изображения второго опорного изображения, и представляет разность первого вектора движения; и определение второго вектора движения на основе второго предсказанного вектора движения и разности второго вектора движения, где второй вектор движения является вектором движения текущего блока во втором направлении.
[0071] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, способ «определения второй информации о движении на основе первой информации о движении» представляет собой: получение значения индекса первого опорного изображения и первого вектора движения, которые находятся в первой информации о движении, и определение порядкового номера изображения первого опорного изображения на основе значения индекса первого опорного изображения и первого списка опорных изображений, где первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, а значение индекса первого опорного изображения является номером первого опорного изображения в первом списке опорных изображений; получение значения индекса второго опорного изображения, определение порядкового номера изображения второго опорного изображения на основе значения индекса второго опорного изображения и второго списка опорных изображений, и определение второго предсказанного вектора движения на основе значения индекса второго опорного изображения и второго списка потенциально подходящих предсказанных векторов движения, где второй предсказанный вектор движения является предсказанным вектором движения текущего блока во втором направлении, второе опорное изображение представляет собой опорное изображение текущего блока во втором направлении, и значение индекса второго опорного изображения является номером второго опорного изображения во втором списке опорных изображений; когда первое опорное изображение является опорным изображением впереди текущего блока и второе опорное изображение является опорным изображением позади текущего блока, или когда первое опорное изображение является опорным изображением позади текущего блока, а второе опорное изображение является опорным изображением впереди текущего блока, или когда каждое из первого опорного изображения и второго опорного изображения является опорным изображением впереди текущего блока, или каждое из первого опорного изображения и второго опорного изображения является опорным изображением позади текущего блока, определение разности второго вектора движения во второй информации о движении согласно формуле mvd_lY = -mvd_lX, где в этой формуле mvd_lY представляет разность второго вектора движения, а mvd_lX представляет разность первого вектора движения; и определение второго вектора движения на основе второго предсказанного вектора движения и разности второго вектора движения, где второй вектор движения является вектором движения текущего блока во втором направлении.
[0072] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, способ «определения второй информации о движении на основе первой информации о движении» представляет собой: определение разности второго вектора движения во второй информации о движении в соответствии с формулой mvd_lY = -mvd_lX, где в этой формуле mvd_lY представляет разность второго вектора движения, а mvd_lX представляет разность первого вектора движения; и определение второго вектора движения на основе второго предсказанного вектора движения и разности второго вектора движения, где второй вектор движения является вектором движения текущего блока во втором направлении.
[0073] Точно так же, оба случая, когда «первое опорное изображение является опорным изображением впереди текущего блока и второе опорное изображение является опорным изображением позади текущего блока» и «первое опорное изображением является опорным изображением позади текущего блока, и второе опорное изображение является опорным изображением впереди текущего блока», могут быть представлены с использованием формулы (POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0, или могут быть представлены с использованием формулы POC_listY=2*POC_Cur-POC_listX. В настоящей заявке это особым образом не ограничено.
[0074] Оба случая, когда «каждое из первого опорного изображения и второго опорного изображения является опорным изображением впереди текущего блока» и «каждое из первого опорного изображения и второго опорного изображения является опорным изображением позади текущего блока», могут быть представлены с использованием формулы (POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0.
[0075] Можно понять, что способ двунаправленного интер-предсказания, предоставляемый в настоящей заявке, может быть следующим: определение второго вектора движения на основе первого вектора движения или может быть следующим: определение разности второго вектора движения на основе разности первого вектора движения, и определение второго вектора движения на основе разности второго вектора движения.
[0076] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, способ «получения значения индекса второго опорного изображения» представляет собой: вычисление первого порядкового номера изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с формулой POC_listY0=2*POC_Cur-POC_listX, где POC_Cur представляет собой порядковый номер изображения текущего изображения, POC_listX представляет собой порядковый номер изображения первого опорного изображения и POC_listY представляет собой первый порядковый номер изображения; и когда второй список опорных изображений включает в себя первый порядковый номер изображения, определение, в качестве значения индекса второго опорного изображения, номера опорного изображения, представленного первым порядковым номером изображения во втором списке опорных изображений.
[0077] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, способ «получения значения индекса второго опорного изображения» представляет собой: вычисление второго порядкового номера изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с формулой (POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0, где POC_listY0' представляет собой второй порядковый номер изображения; и когда второй список опорных изображений включает в себя второй порядковый номер изображения, определение, в качестве значения индекса второго опорного изображения, номера опорного изображения, представленного вторым порядковым номером изображения во втором списке опорных изображений.
[0078] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, способ «получения значения индекса второго опорного изображения» представляет собой: вычисление третьего порядкового номера изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с формулой POC_listX ≠ POC_listY0", где POC_listY0" представляет собой третий порядковый номер изображения; и определение, в качестве значения индекса второго опорного изображения, номера опорного изображения, представленного третьим порядковым номером изображения во втором списке опорных изображений.
[0079] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, способ «получения значения индекса второго опорного изображения» представляет собой: вычисление первого порядкового номера изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с формулой POC_listY0=2*POC_Cur-POC_listX, где POC_Cur представляет порядковый номер изображения текущего изображения, POC_listX представляет собой порядковый номер изображения первого опорного изображения и POC_listY представляет собой первый порядковый номер изображения. Когда второй список опорных изображений включает в себя первый порядковый номер изображения, то номер опорного изображения, представленного первым порядковым номером изображения во втором списке опорных изображений, определяется в качестве значения индекса второго опорного изображения. Когда второй список опорных изображений не включает в себя первый порядковый номер изображения, то второй порядковый номер изображения вычисляется на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с формулой (POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0, где POC_listY0' представляет собой второй порядковый номер изображения. Когда второй список опорных изображений включает в себя второй порядковый номер изображения, номер опорного изображения, представленного вторым порядковым номером изображения во втором списке опорных изображений, определяется как значение индекса второго опорного изображения. Когда второй список опорных изображений не включает в себя второй порядковый номер изображения, то третий порядковый номер изображения вычисляются на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с формулой POC_listX ≠ POC_listY0", где POC_listY0" представляет третий порядковый номер изображения; и номер опорного изображения, представленного третьим порядковым номером изображения во втором списке опорных изображений, определяется в качестве значения индекса второго опорного изображения.
[0080] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, способ «получения значения индекса второго опорного изображения» представляет собой: анализ битового потока, чтобы получить значение индекса второго опорного изображения.
[0081] Может быть понятно, что может быть множество способов «получения значения индекса второго опорного изображения» в данной заявке. Конкретный способ получения значения индекса второго опорного изображения необходимо определять на основе фактических требований или устанавливать заранее.
[0082] Согласно девятому аспекту предоставляется устройство двунаправленного интер-предсказания. Устройство двунаправленного интер-предсказания включает в себя модуль получения и модуль определения.
[0083] В частности, модуль получения выполнен с возможностью: получения информации указания, где информация указания используется для указания определить вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока в первом направлении, и вторая информация о движении является информацией о движении текущего блока во втором направлении; и получения первой информации о движении. Модуль определения выполнен с возможностью: определять вторую информацию о движении на основе первой информации о движении, полученной блоком получения, и определять дискретный отсчет предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[0084] В необязательном порядке, в возможном варианте реализации настоящей заявки, модуль определения конкретно выполнен с возможностью: получения значения индекса первого опорного изображения в первой информации о движении, и определения порядкового номера изображения первого опорного изображения на основе значения индекса первое опорное изображение и первого списка опорных изображений, где первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, и значение индекса первого опорного изображения представляет собой номер первого опорного изображения в первом списке опорных изображений; получения значения индекса второго опорного изображения, и определения порядкового номера изображения второго опорного изображения на основе значения индекса второго опорного изображения и второго списка опорных изображений, где второе опорное изображением является опорным изображением текущего блока во втором направлении, а значение индекса второго опорного изображения является номером второго опорного изображения во втором списке опорных изображений; определения первого вектора движения на основе разности первого вектора движения и флага предиктора первого вектора движения, которые находятся в первой информации о движении, где первый вектор движения является вектором движения текущего блока в первом направлении; и определения второго вектора движения во второй информации о движении согласно следующей формуле:
.
[0085] При этом, представляет второй вектор движения, представляет собой порядковый номер изображения текущего изображения, представляет собой порядковый номер изображения первого опорного изображения, представляет собой порядковый номер изображения второго опорного изображения, представляет собой первый вектор движения, и второй вектор движения является вектором движения текущего блока во втором направлении.
[0086] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, то модуль определения конкретно выполнен с возможностью: получать значение индекса первого опорного изображения в первой информации о движении, и определять порядковый номер изображения первого опорного изображения на основе значения индекса первое опорное изображение и первого списка опорных изображений, где первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, а значение индекса первого опорного изображения представляет собой номер первого опорного изображения в первом списке опорных изображений; получать значение индекса второго опорного изображения, и определять порядковый номер изображения второго опорного изображения на основе значения индекса второго опорного изображения и второго списка опорных изображений, где второе опорное изображением является опорным изображением текущего блока во втором направлении, а значение индекса второго опорного изображения является номером второго опорного изображения во втором списке опорных изображений; определять первый вектор движения на основе разности первого вектора движения и флага предиктора первого вектора движения, которые находятся в первой информации о движении, где первый вектор движения является вектором движения текущего блока в первом направлении; и когда первое опорное изображение является опорным изображением впереди текущего блока, а второе опорное изображение является опорным изображением позади текущего блока, или когда первое опорное изображение является опорным изображением позади текущего блока, а второе опорное изображение является опорным изображением впереди текущего блока, или когда каждое из первого опорного изображения и второго опорного изображения является опорным изображением впереди текущего блока, или когда каждое из первого опорного изображения и второго опорного изображения является опорным изображением позади текущего блока, определять второй вектор движения во второй информации о движении в соответствии с формулой mv_lY=-mv_lX, где в этой формуле mv_lY представляет второй вектор движения, mv_lX представляет первый вектор движения, а второй вектор движения представляет собой вектор движения текущего блока во втором направлении.
[0087] В необязательном порядке, в другом возможном варианте реализации настоящей заявки модуль определения конкретно выполнен с возможностью определения второго вектора движения во второй информации о движении в соответствии с формулой mv_lY=-mv_lX, где в этой формуле mv_lY представляет второй вектор движения, mv_lX представляет первый вектор движения, а второй вектор движения является вектором движения текущего блока во втором направлении.
[0088] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, то модуль определения конкретно выполнен с возможностью: получать значения индекса первого опорного изображения и разность первого вектора движения, которые находятся в первой информации о движении, и определять порядковый номер изображения первого опорного изображения на основе значения индекса первого опорного изображения и первого списка опорных изображений, где первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, а значение индекса первого опорного изображения является номером первого опорного изображения в первом списке опорных изображений; получать значение индекса второго опорного изображения, определять порядковый номер изображения второго опорного изображения на основе значения индекса второго опорного изображения и второго списка опорных изображений и определять второй предсказанный вектор движения на основе значения индекса второго опорного изображения и второго списка потенциально подходящих предсказанных векторов движения, где второй предсказанный вектор движения является предсказанным вектором движения текущего блока во втором направлении, второе опорное изображение представляет собой опорное изображение текущего блока во втором направлении, и значение индекса второго опорного изображения является номером второго опорного изображения во втором списке опорных изображений; определять разность второго вектора движения во второй информации о движении согласно следующей формуле:
, где
представляет разность второго вектора движения, представляет собой порядковый номер изображения текущего изображения, представляет собой порядковый номер изображения первого опорного изображения, представляет собой порядковый номер изображения второго опорного изображения, и представляет собой разность первого вектора движения; и определять второй вектор движения на основе второго предсказанного вектора движения и разности второго вектора движения, где второй вектор движения является вектором движения текущего блока во втором направлении.
[0089] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, то модуль определения конкретно выполнен с возможностью: получать значение индекса первого опорного изображения и первый вектор движения, которые находятся в первой информации о движении, и определять порядковый номер изображения первого опорного изображения на основе значения индекса первого опорного изображения и первого списка опорных изображений, где первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, а значение индекса первого опорного изображения представляет собой номер первого опорного изображения в первом списке опорных изображений; получать значение индекса второго опорного изображения, определять порядковый номер изображения второго опорного изображения на основе значения индекса второго опорного изображения и второго списка опорных изображений и определять второй предсказанный вектор движения на основе значения индекса второго опорного изображения и второго списка потенциально подходящих предсказанных векторов движения, где второй предсказанный вектор движения является предсказанным вектором движения текущего блока во втором направлении, второе опорное изображение представляет собой опорное изображение текущего блока во втором направлении, и значение индекса второго опорного изображения является номером второго опорного изображения во втором списке опорных изображений; когда первое опорное изображение является опорным изображением впереди текущего блока и второе опорное изображение является опорным изображением позади текущего блока, или когда первое опорное изображение является опорным изображением позади текущего блока, а второе опорное изображение является опорным изображением впереди текущего блока, или когда каждое из первого опорного изображения и второго опорного изображения является опорным изображением впереди текущего блока, или каждое из первого опорного изображения и второго опорного изображения является опорным изображением позади текущего блока, определение разности второго вектора движения во второй информации о движении согласно формуле mvd_lY = -mvd_lX, где mvd_lY представляет разность второго вектора движения, а mvd_lX представляет разность первого вектора движения; и определять второй вектор движения на основе второго предсказанного вектора движения и разности второго вектора движения, где второй вектор движения является вектором движения текущего блока во втором направлении.
[0090] В необязательном порядке, в другом возможном варианте реализации настоящей заявки модуль определения конкретно выполнен с возможностью: определять разность второго вектора движения во второй информации о движении в соответствии с формулой mvd_lY = -mvd_lX, где в этой формуле mvd_lY представляет разность второго вектора движения, а mvd_lX представляет разность первого вектора движения; и определять второй вектор движения на основе второго предсказанного вектора движения и разности второго вектора движения, где второй вектор движения является вектором движения текущего блока во втором направлении.
[0091] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, то модуль получения конкретно выполнен с возможностью: вычислять порядковый номер изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с формулой POC_listY0=2*POC_Cur-POC_listX, где POC_Cur представляет собой порядковый номер изображения текущего изображения, POC_listX представляет собой порядковый номер изображения первого опорного изображения и POC_listY представляет собой первый порядковый номер изображения; и когда второй список опорных изображений включает в себя первый порядковый номер изображения, определять, в качестве значения индекса второго опорного изображения, номер опорного изображения, представленного первым порядковым номером изображения во втором списке опорных изображений.
[0092] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, то модуль получения конкретно выполнен с возможностью: вычислять второй порядковый номер изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с формулой (POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0, где POC_listY0' представляет второй порядковый номер изображения; и когда второй список опорных изображений включает в себя второй порядковый номер изображения, определять, в качестве значения индекса второго опорного изображения, номер опорного изображения, представленного вторым порядковым номером изображения во втором списке опорных изображений.
[0093] В необязательном порядке, в другом возможном варианте реализации настоящей заявки, модуль получения конкретно выполнен с возможностью: вычислять третий порядковый номер изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с формулой POC_listX ≠ POC_listY0", где POC_listY0" представляет третий порядковый номер изображения; и определять, в качестве значения индекса второго опорного изображения, номера опорного изображения, представленного третьим порядковым номером изображения во втором списке опорных изображений.
[0094] Согласно десятому аспекту предоставляется способ двунаправленного интер-предсказания. Существует множество вариантов реализации способа двунаправленного интер-предсказания.
[0095] Один вариант реализации включает в себя: анализ битового потока для получения первого идентификатора, где первый идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока в первом направлении, и вторая информация о движении является информацией о движении текущего блока во втором направлении; если значение первого идентификатора является первым предварительно установленным значением, получение первой информации о движении и определение второй информации о движении на основе первой информации о движении; и определение дискретного отсчета предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[0096] Другой вариант реализации включает в себя: анализ битового потока для получения второго идентификатора, где второй идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока посредством использования алгоритма выведения информации о движении; если значение второго идентификатора является вторым предварительно установленным значением, получение третьего идентификатора, где третий идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока в первом направлении, а вторая информация о движении является информацией о движении текущего блока во втором направлении; если значение третьего идентификатора является третьим предварительно установленным значением, получение первой информации о движении и определение второй информации о движении на основе первой информации о движении; и определение дискретного отсчета предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[0097] Другой вариант реализации включает в себя: анализ битового потока для получения второго идентификатора, где второй идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока посредством использования алгоритма выведения информации о движении; если значение второго идентификатора является вторым предварительно установленным значением, получение первой информации о движении и определение второй информации о движении на основе первой информации о движении, где первая информация о движении является информацией о движении текущего блока в первом направлении, и вторая информация о движении является информацией о движении текущего блока во втором направлении; и определение дискретного отсчета предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[0098] Другой вариант реализации включает в себя: анализ битового потока для получения четвертого идентификатора, где четвертый идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока посредством использования алгоритма выведения информации о движении; если значение четвертого идентификатора является четвертым предварительно установленным значением, определение значения индекса первого опорного изображения и значения индекса второго опорного изображения на основе первого списка опорных изображений и второго списка опорных изображений, где первый список опорных изображений представляет собой список опорных изображений текущего блока в первом направлении, второй список опорных изображений представляет собой список опорных изображений текущего блока во втором направлении, первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, а второе опорное изображение представляет собой опорное изображение текущего блока во втором направлении; получение разности первого вектора движения и предиктора флага первого вектора движения, и определение второй информации о движении на основе первой информации о движении, где первая информация о движении включает в себя значение индекса первого опорного изображения, разность первого вектора движения и флаг предиктора первого вектора движения, и вторая информация о движении представляет собой информацию о движении текущего блока во втором направлении; и определение дискретного отсчета предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[0099] Другой вариант реализации включает в себя: анализ битового потока для получения первого идентификатора, где первый идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока в первом направлении, и вторая информация о движении является информацией о движении текущего блока во втором направлении; если значение первого идентификатора является восьмым предварительно установленным значением, получение пятого идентификатора, где пятый идентификатор используется для указания того, следует ли определять первую информацию о движении на основе второй информации о движении; если значение пятого идентификатора является пятым предварительно установленным значением, получение второй информации о движении и определение первой информации о движении на основе второй информации о движении; и определение дискретного отсчета предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[00100] Другой вариант реализации включает в себя: анализ битового потока для получения второго идентификатора, где второй идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока посредством использования алгоритма выведения информации о движении; если значение второго идентификатора является вторым предварительно установленным значением, получение третьего идентификатора, где третий идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока в первом направлении, а вторая информация о движении является информацией о движении текущего блока во втором направлении; если значение третьего идентификатора является шестым предварительно установленным значением, получение второй информации о движении и определение первой информации о движении на основе второй информации о движении; и определение дискретного отсчета предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[00101] За конкретными описаниями с первого идентификатора по четвертый идентификатор следует обратиться в последующее описание.
[00102] В способе двунаправленного интер-предсказания, предусмотренном в настоящей заявке, после того, как идентификатор получен посредством анализа битового потока, определяется, следует ли определять вторую информацию о движении на основе первой информации о движении, на основе значения идентификатора. После того, как определено, что вторая информация о движении должна быть определена на основе первой информации о движении, получается первая информация о движении, а затем определяется вторая информация о движении на основе полученной первой информации о движении. Таким образом, битовый поток должен включать только соответствующий идентификатор и первую информацию о движении и больше не должен включать в себя вторую информацию о движении. По сравнению с предшествующим уровнем техники, в котором битовый поток включает в себя информацию о движении каждого блока изображения в каждом направлении, способ двунаправленного интер-предсказания, предоставляемый в настоящей заявке, эффективно уменьшает информацию о движении, включенную в битовый поток, и улучшает эффективное использование ресурсов передачи, скорость передачи и скорость кодирования.
[00103] Согласно одиннадцатому аспекту предоставляется устройство двунаправленного интер-предсказания. Устройство двунаправленного интер-предсказания включает в себя модуль получения и модуль определения.
[00104] В частности, в одном варианте реализации модуль получения выполнен с возможностью: анализировать битовый поток для получения первого идентификатора, где первый идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока в первом направлении, а вторая информация о движении представляет собой информацию о движении текущего блока во втором направлении; и если значение первого идентификатора является первым предварительно установленным значением, получать первую информацию о движении. Модуль определения выполнен с возможностью: определять вторую информацию о движении на основе первой информации о движении, полученной блоком получения, и определять дискретный отсчет предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[00105] В другом варианте реализации модуль получения выполнен с возможностью: анализировать битовый поток для получения второго идентификатора, где второй идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока посредством использования алгоритма выведения информации о движении; если значение второго идентификатора является вторым предварительно установленным значением, получать третий идентификатор, где третий идентификатор используется для указания того, следует ли определять вторую информацию о движении на основе первой информации о движении, первая информация о движении является информацией о движении текущего блока в первом направлении, а вторая информация о движении является информацией о движении текущего блока во втором направлении; и если значение третьего идентификатора является третьим предварительно установленным значением, получать первую информацию о движении. Модуль определения выполнен с возможностью: определять вторую информацию о движении на основе первой информации о движении, полученной блоком получения, и определять дискретный отсчет предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[00106] В другом варианте реализации модуль получения выполнен с возможностью: анализировать битовый поток для получения второго идентификатора, где второй идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока посредством использования алгоритма выведения информации о движении; и если значение второго идентификатора является вторым предварительно установленным значением, получать первую информацию о движении. Модуль определения выполнен с возможностью: определять вторую информацию о движении на основе первой информации о движении, полученной блоком получения, где первая информация о движении является информацией о движении текущего блока в первом направлении, а вторая информация о движении является информацией о движении текущего блока во втором направлении; и определять дискретный отсчет предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[00107] В другом варианте реализации модуль получения выполнен с возможностью анализировать битовый поток для получения четвертого идентификатора, где четвертый идентификатор используется для указания того, следует ли вычислять информацию о движении текущего блока посредством использования алгоритма выведения информации о движении. Модуль определения выполнен с возможностью: если значением четвертого идентификатора, полученным модулем получения, является четвертое предварительно установленное значение, определять значение индекса первого опорного изображения и значение индекса второго опорного изображения на основе первого списка опорных изображений и второго списка опорных изображений, где первый список опорных изображений представляет собой список опорных изображений текущего блока в первом направлении, второй список опорных изображений представляет собой список опорных изображений текущего блока во втором направлении, первое опорное изображение является опорным изображением текущего блока в первом направлении, а второе опорное изображение представляет собой опорное изображение текущего блока во втором направлении. Модуль получения дополнительно выполнен с возможностью получать разность первого вектора движения и флаг предиктора первого вектора движения. Модуль определения дополнительно выполнен с возможностью: определять вторую информацию о движении на основе первой информации о движении, где первая информация о движении включает в себя значение индекса первого опорного изображения, разность первого вектора движения и флаг предиктора первого вектора движения, а вторая информация о движении является информацией о движении текущего блока во втором направлении; и определять дискретный отсчет предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[00108] Согласно двенадцатому аспекту предоставляется терминал. Терминал включает в себя один или более процессоров, память и интерфейс связи. Память и интерфейс связи связаны с одним или более процессорами. Память приспособлена хранить компьютерный программный код, и компьютерный программный код включает в себя инструкции. Когда один или более процессоров выполняют инструкции, терминал выполняет способ (или способ, соответствующий устройству) согласно любому из вышеупомянутых аспектов и возможных вариантов реализации вышеупомянутых аспектов.
[00109] Согласно тринадцатому аспекту предоставляется видеодекодер, включающий в себя энергонезависимый носитель информации и центральный процессор. На энергонезависимом носителе хранится исполняемая программа. Центральный процессор соединен с энергонезависимым носителем информации и выполняет исполняемую программу для реализации способа (или способа, соответствующего устройству) в соответствии с любым из вышеупомянутых аспектов и возможными вариантами реализации вышеупомянутых аспектов.
[00110] Согласно четырнадцатому аспекту предоставляется декодер. Декодер включает в себя устройство двунаправленного интер-предсказания и модуль восстановления. Модуль восстановления выполнен с возможностью определения значения восстановленного дискретного отсчета текущего блока на основе дискретного отсчета предсказания, полученного устройством двунаправленного интер-предсказания. Устройство двунаправленного интер-предсказания может реализовывать способ (или способ, соответствующий устройству) в соответствии с любым из вышеупомянутых аспектов и возможными вариантами реализации вышеупомянутых аспектов.
[00111] Согласно пятнадцатому аспекту предоставляется кодер, который может реализовывать способ (или способ, соответствующий устройству) согласно любому из вышеупомянутых аспектов и возможным вариантам реализации вышеупомянутых аспектов, который соответствует или связан с вышеизложенным. декодер.
[00112] Согласно шестнадцатому аспекту предоставляется машиночитаемый носитель информации. Машиночитаемый носитель информации хранит инструкции, и когда инструкции выполняются в вышеупомянутом терминале, обеспечивается выполнение терминалом способа (или способа, соответствующего устройству) согласно любому из вышеупомянутых аспектов и возможным вариантам реализации вышеизложенных аспектов.
[00113] Согласно семнадцатому аспекту предоставляется компьютерный программный продукт, включающий в себя инструкции. Когда компьютерный программный продукт выполняется в вышеупомянутом терминале, обеспечивается выполнение терминалом выполнения способа двунаправленного интер-предсказания согласно любому из вышеупомянутых аспектов и возможным вариантам реализации вышеупомянутых аспектов.
[00114] В настоящей заявке название устройства двунаправленного интер-предсказания не накладывает ограничений на устройства или функциональные модули. В реальной реализации устройства или функциональные модули могут иметь другие названия. При условии, что функции устройств или функциональных модулей аналогичны функциям в настоящей заявке, устройства или функциональные модули подпадают под объем формулы изобретения в настоящей заявке и их эквивалентных технологий.
[00115] В конкретных описаниях с первого аспекта по шестнадцатый аспект и различных вариантах реализации с первого аспекта по шестнадцатый аспект в настоящей заявке может реализовываться произвольное сочетание без нарушения законов природы. Кроме того, некоторые выражения и эффекты также могут быть универсальными в разных решениях. Подробности здесь не описаны.
[00116] Эти аспекты или другие аспекты в настоящей заявке более лаконичны и понятны в последующем описании.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[00117] Фиг.1 является принципиальной структурной схемой системы кодирования видео согласно одному варианту осуществления настоящей заявки;
[00118] Фиг.2 является принципиальной структурной схемой видеокодера согласно одному варианту осуществления настоящей заявки;
[00119] Фиг.3 является принципиальной структурной схемой видеодекодера согласно одному варианту осуществления настоящей заявки;
[00120] Фиг.4 является блок-схемой последовательности операций способа двунаправленного интер-предсказания согласно одному варианту осуществления настоящей заявки;
[00121] Фиг.5A является блок-схемой последовательности операций другого способа двунаправленного интер-предсказания согласно одному варианту осуществления настоящей заявки;
[00122] Фиг.5B является принципиальной структурной схемой устройства двунаправленного интер-предсказания согласно одному варианту осуществления настоящей заявки;
[00123] Фиг.5C является принципиальной структурной схемой другого устройства двунаправленного интер-предсказания согласно одному варианту осуществления настоящей заявки;
[00124] Фиг.6A является принципиальной структурной схемой еще одного устройства двунаправленного интер-предсказания согласно одному варианту осуществления настоящей заявки;
[00125] Фиг.6B является принципиальной структурной схемой устройства кодирования согласно одному варианту осуществления настоящей заявки;
[00126] Фиг.7 является блок-схемой примерной структуры системы 3100 поставки контента, которая реализует службу доставки контента; и
[00127] Фиг.8 является блок-схемой примерной структуры терминального устройства.
Описание вариантов осуществления
[00128] В описании, формуле изобретения и сопроводительных чертежах настоящей заявки такие термины, как «первый», «второй», «третий» и «четвертый» предназначены для различения различных объектов, но не указывают конкретный порядок.
[00129] В вариантах осуществления настоящей заявки такое слово, как «пример» или «например», используется для представления примера, иллюстрации или описания. Любой вариант осуществления или схема реализации, описанные как слова «пример» или «например» в вариантах осуществления настоящей заявки, не следует толковать как более предпочтительные или имеющие больше преимуществ, чем другой вариант осуществления или схема реализации. Точнее, использование таких слов, как «пример» или «например», предназначено для представления связанной концепции конкретным образом.
[00130] Чтобы облегчить понимание вариантов осуществления настоящей заявки, сначала здесь описаны связанные элементы в вариантах осуществления настоящей заявки.
[00131] Кодирование изображений (picture encoding): процесс сжатия последовательности изображений в битовый поток.
[00132] Декодирование изображений (picture decoding): процесс воссоздания битового потока в восстановленное изображение в соответствии с определенным правилом синтаксиса и определенным способом обработки.
[00133] В настоящее время процесс кодирования видеоизображения выглядит следующим образом: Сторона кодера сначала разделяет исходное изображение на множество частей, которые не перекрываются, и каждая часть может использоваться как блок изображения. Затем сторона кодера выполняет такие операции, как предсказание (Prediction), преобразование (Transform) и квантование (Quantization) для каждого блока изображения, чтобы получить битовый поток, соответствующий блоку изображения. Предсказание предназначено для получения блока предсказания блока изображения, так что только разность (или называемая остатком или остаточным блоком) между блоком изображения и блоком предсказания блока изображения может быть закодирована и передана, тем самым уменьшая издержки на передачу. Наконец, сторона кодера отправляет битовый поток, соответствующий блоку изображения, на сторону декодера.
[00134] Соответственно, после приема битового потока сторона декодера выполняет процесс декодирования видео. В частности, сторона декодера выполняет такие операции, как предсказание, обратное квантование и обратное преобразование принятого битового потока, чтобы получить восстановленный блок изображения (или называемый блоком изображения после восстановления). Этот процесс называется процессом восстановления изображения (или процессом воссоздания изображения). Затем сторона декодера собирает восстановленные блоки всех блоков изображения в исходном изображении, чтобы получить восстановленное изображение исходного изображения, и воспроизводит восстановленное изображение.
[00135] Существующая технология кодирования видеоизображений включает в себя интра-предсказание (внутрикадровое предсказание) и интер-предсказание (межкадровое предсказание). Интер-предсказание - это предсказание, выполненное посредством кодирования блока изображения/декодирования блока изображения с использованием корреляции между текущим изображением и опорным изображением текущего изображения. Текущее изображение может иметь одно или более опорных изображений. В частности, блок изображения предсказания текущего блока генерируется на основе дискретного отсчета в опорном изображении текущего блока.
[00136] Как правило, блок изображения предсказания текущего блока может быть сгенерирован на основе только одного опорного блока изображения, или блок предсказания изображения текущего блока могут быть сгенерирован на основе по меньшей мере двух опорных блоков изображения. Генерация блока изображения предсказания текущего блока на основе одного опорного блока изображения называется однонаправленным предсказанием, а генерацией блока изображения предсказания текущего блока на основе по меньшей мере двух опорных блоков изображений упоминаются как двунаправленное интер-предсказание. По меньшей мере два опорных блока изображения в двунаправленном интер-предсказании могут быть из одного и того же опорного изображения или различных опорных изображений. Другими словами, «направление» в настоящей заявке - это обобщенное определение. Одно из направлений в настоящей заявке соответствует одному опорному блоку изображения. Следующие первое направление и второе направление соответствуют разным опорным блокам изображения. Два опорных блока изображения могут быть включены в опорном изображения впереди/опорном изображении позади текущего блока; или один опорный блок изображения может быть включен в опорное изображение впереди текущего блока, а другой опорный блок изображения может быть включен в опорное изображение позади текущего блока. Следовательно, можно понять, что первое направление и второе направление соответствуют разным опорным блокам, дополнительно соответствуют разным опорным изображениям и дополнительно соответствуют разным спискам опорных изображений (например, L0 и/или L1). И первое направление, и второе направление могут быть направлениями вперед или направлениями назад, или первое направление и второе направление могут быть, соответственно, направлением вперед и направлением назад или, соответственно, направлением назад и направлением вперед.
[00137] В необязательном порядке, двунаправленное интер-предсказание может быть интер-предсказанием, выполняемым с использованием корреляции между текущим видеоизображением и видеоизображением, которое кодируется и воспроизводится перед текущим видеоизображением, и корреляции между текущим видеоизображением и видеоизображением, которое кодируется перед текущим видеоизображением и воспроизводится после текущего видеоизображения.
[00138] Можно понять, что двунаправленное интер-предсказание включает в себя интер-предсказание в двух направлениях, что обычно называется интер-предсказанием вперед и интер-предсказанием назад. Интер-предсказание вперед может быть интер-предсказанием, выполняемым с использованием корреляции между текущим видеоизображением и видеоизображением, которое кодируется и воспроизводится перед текущим видеоизображением. Интер-предсказание может быть интер-предсказанием, выполняемым с использованием корреляции между текущим видеоизображением и видеоизображением, которое кодируется перед текущим видеоизображением и воспроизводится после текущего видеоизображения.
[00139] Интер-предсказание вперед соответствует списку опорных изображений впереди, например L0 (или L1), а интер-предсказание назад соответствует списку опорных изображений позади, например L1 (или L0). Два списка опорных изображений могут включать в себя одинаковое количество опорных изображений или разное количество опорных изображений.
[00140] Компенсация движения (Motion Compensation, MC) представляет собой процесс предсказания текущего блока с использованием блока опорного изображения.
[00141] В большинстве платформ кодирования видеопоследовательность включает в себя серию изображений (picture), изображение разделяется по меньшей мере на один срез (slice), и каждый срез дополнительно разделяется на блоки изображения (block). Кодирование/декодирование видео выполняется из расчета на блок изображения. Кодирование/декодирование может выполняться слева направо и сверху вниз, строка за строкой, с верхнего левого угла изображения. Здесь блок изображения может быть макроблоком (macroblock, MB) в стандарте кодирования видео H.264 или может быть единицей кодирования (Coding Unit, CU) в стандарте высокоэффективного видеокодирования (High Efficiency Video Coding, HEVC). Это конкретно не ограничено в вариантах осуществления настоящей заявки.
[00142] В настоящей заявке блок изображения, который кодируется/декодируется, называется текущим блоком изображения или текущим блоком (current block), а изображение, в котором расположен текущий блок, называется текущим изображением.
[00143] Обычно текущее изображение может быть изображением с однонаправленным предсказанием (P-изображение) или может быть изображением с двунаправленным предсказанием (B-изображение). Когда текущее изображение является P-изображением, текущее изображение имеет один список опорных изображений. Когда текущее изображение является B-изображением, текущее изображение имеет два списка опорных изображений, и эти два списка обычно называются L0 и L1. Каждый список опорных изображений содержит по меньшей мере одно опорное изображение, используемое для восстановления текущего изображения. Опорное изображение используется для обеспечения опорного дискретного отсчета для интер-предсказания текущего изображения.
[00144] В текущем изображении соседний блок изображения (например, на левой, верхней или правой стороне текущего блока) текущего блока мог быть закодирован/декодирован, и было получено восстановленное изображение. Соседний блок изображения называется восстановленным блоком изображения. Доступна (available) такая информация, как режим кодирования и восстановленный дискретный отсчет восстановленного блока изображения.
[00145] Изображение, которое было закодировано/декодировано перед кодированием/декодированием текущего изображения, называется восстановленным изображением.
[00146] Вектор движения (Motion Vector, MV) является важным параметром в процессе интер-предсказания и представляет пространственное смещение кодированного блока изображения относительно текущего блока. Обычно способ оценки движения (Motion Estimation, ME), такой как поиск движения, может использоваться для получения вектора движения. В технологии предварительного интер-предсказания сторона кодера передает вектор движения текущего блока в битовом потоке, так что сторона декодера воспроизводит дискретный отсчет предсказания текущего блока, чтобы получить восстановленный блок. Для дальнейшего повышения эффективности кодирования, дополнительно предлагается дифференцированно кодировать вектор движения с использованием опорного вектора движения, то есть, кодировать только разность вектора движения (Motion Vector Difference, MVD).
[00147] Чтобы предоставить возможность стороне декодера и стороне кодера использовать один и тот же опорный блок изображения, сторона кодера должна послать информацию о движении каждого блока изображения на сторону декодера через битовый поток. Если сторона кодера непосредственно кодирует вектор движения каждого блока изображения, потребляется большое количество ресурсов передачи. Поскольку векторы движения пространственно соседних блоков изображения сильно коррелированы, вектор движения текущего блока может быть предсказан на основе вектора движения соседнего кодированного блока изображения. Вектор движения, полученный посредством предсказания, называется MVP, а разность между вектором движения текущего блока и MVP называется MVD.
[00148] В стандарте кодирования видео H.264 предсказание с множеством опорных изображений используется в процессе оценки движения для повышения точности предсказания. В частности, создается буфер, в котором хранится множество восстановленных изображений, и во всех восстановленных изображениях в буфере ищется оптимальный опорный блок изображения для компенсации движения, чтобы лучше удалить временную избыточность. В стандарте кодирования видео H.264 для интер-предсказания используются два буфера: список 0 опорных изображений (список 0/L0) и список 1 опорных изображений (список 1/L1). Опорное изображение, в котором расположен оптимальный опорный блок в каждом списке, отмечается значением индекса, то есть, ref_idx_l0 или ref_idx_l1. В каждом списке опорных изображений, информация о движении опорного блока изображения включает в себя значение индекса опорного изображения (ref_idx_l0 или ref_idx_l1), флаг MVP (или MVP), и MVD. Сторона декодера может найти правильный опорный блок изображения в выбранном опорном изображении на основе значения индекса опорного изображения, флага MVP и MVD. Следует понимать, что в конкретном варианте применения, значение индекса опорного изображения, флаг MVP (или MVP), и/или MVD также могут быть совместно называться информацией о движении специалистом в данной области техники. Следовательно, конкретное значение информации о движении необходимо интерпретировать и объяснять со ссылкой на конкретный сценарий применения, и не нужно ограничивать понимание концепции.
[00149] В настоящее время режимы интер-предсказания, часто используемые в стандарте HEVC, представляют собой режим расширенного предсказания вектора движения (Advanced Motion Vector Prediction, AMVP), режим объединения (Merge) и режим предсказания модели непоступательного движения.
[00150] В режиме AMVP сторона кодера создает список потенциально подходящих векторов движения посредством использования информации о движении кодированного блока изображения, который пространственно или временно смежен с текущим блоком, и определяет оптимальный вектор движения в списке векторов потенциально подходящих движения как MVP для текущего блока на основе издержек при искажениях от скорости. Кроме того, сторона кодера выполняет поиск движения в окрестности с центром в MVP, чтобы получить вектор движения текущего блока. Сторона кодера передает значение индекса (а именно, флаг MVP) MVP в списке потенциально подходящих векторов движения, значения индекса опорного изображения и MVD стороне декодера.
[00151] В режиме объединения сторона кодера создает список потенциально подходящей информации о движении посредством использования информации о движении закодированного блока изображения, который является пространственно или временно смежным с текущим блоком, и определяет оптимальную информацию о движении в списке потенциально подходящей информации о движении в качестве информации о движении для текущего блока на основе издержек при искажениях от скорости. Сторона кодера передает значение индекса местоположения оптимальной информации о движении в списке потенциально подходящей информации о движении на сторону декодера.
[00152] В режиме предсказания модели непоступательного движения сторона кодера и сторона декодера получают информацию о движении всех подблоков текущего блока посредством использования одной и той же модели движения, и выполняют компенсацию движения на основе информации о движении всех подблоков, чтобы получить блок изображения предсказания. Это повышает эффективность предсказания. Модель движения, часто используемая стороной кодера и стороной декодера, представляет собой аффинную модель с 4 параметрами, модель аффинного преобразования с 6 параметрами или билинейную модель с 8 параметрами.
[00153] Например, модель аффинного преобразования с 4 параметрами может быть представлена с использованием векторов движения двух дискретных отсчетов и координат двух дискретных отсчетов относительно дискретного отсчета в верхнем левом углу текущего блока. Здесь дискретный отсчет, используемый для представления параметра модели движения, называется контрольной точкой. Если дискретный отсчет в верхнем левом углу (0, 0) текущего блока и дискретный отсчет в верхнем правом углу (, 0) текущего блока являются контрольными точками, а векторы движения в верхнем левом углу и верхнем правом углу текущего блока - это соответственно (vx0,vy0) и (vx1,vy1), информация о движении каждого подблока текущего блока получается согласно следующей формуле (1). В следующей формуле (1) (x, y) координаты подблока относительно дискретного отсчета в верхнем левом углу текущего блока, () вектор движения подблока, а - ширина текущего блока.
[00154] Например, модель аффинного преобразования с 6 параметрами может быть представлена с использованием векторов движения трех дискретных отсчетов и координат этих трех дискретных отсчетов относительно дискретного отсчета в верхнем левом углу текущего блока. Если дискретный отсчет в верхнем левом углу (0, 0) текущего блока, дискретный отсчет в верхнем правом углу (, 0) текущего блока и дискретный отсчет в нижнем левом углу (0, ) текущего блока являются контрольными точками, а векторами движения верхнего левого угла, верхнего правого угла и нижнего левого угла текущего блока являются соответственно (vx0, vy0), (vx1, vy1) и (vx2, vy2), информация о движении каждого подблока текущего блока получается согласно следующей формуле (2). В следующей формуле (2) () - это координаты подблока относительно дискретного отсчета в верхнем левом углу текущего блока, () - это вектор движения подблока, а и соответственно ширина и высота текущего блока.
[00155] Например, билинейная модель с 8 параметрами может быть представлена с использованием векторов движения четырех дискретных отсчетов и координат четырех дискретных отсчетов относительно дискретного отсчета в верхнем левом углу текущего блока. Если дискретный отсчет в верхнем левом углу (0, 0) текущего блока, дискретный отсчет в верхнем правом углу (, 0) текущего блока, дискретный отсчет в нижнем левом углу (0, ) текущего блока, и дискретный отсчет в правом нижнем углу (W, H) текущего блока - это контрольные точки, и векторы движения в верхнем левом углу, верхнем правом углу, нижнем левом углу и нижнем правом углу текущего блока соответственно (vx0, vy0), (vx1, vy1), (vx2, vy2) и (vx3, vy3), то информация о движении каждого подблока текущего блока получается по формуле (3). В следующей формуле (3) (x, y) - это координаты подблока относительно дискретного отсчета в верхнем левом углу текущего блока, (vx, vy) - это вектор движения подблока, и и соответственно ширина и высота текущего блока.
[00156] Можно легко понять, что в любом из вышеупомянутых режимов интер-предсказания, если интер-предсказание является двунаправленным интер-предсказанием, то сторона кодера должна отправить информацию движения каждого блока изображения в каждом направлении на сторону декодера. Следовательно, информация о движении занимает относительно большое количество ресурсов передачи. Это снижает эффективное использование ресурсов передачи, скорость передачи и эффективность сжатия кодирования.
[00157] Чтобы решить вышеупомянутую проблему, в настоящей заявке предложены способ двунаправленного интер-предсказания. При двунаправленном интер-предсказании сторона кодера отправляет информацию о движении текущего блока в первом направлении на сторону декодера, и после приема информации о движении текущего блока в первом направлении сторона декодера вычисляет информацию о движении текущего блока во втором направлении на основе информации о движении текущего блока в первом направлении. Таким образом, дискретный отсчет предсказания текущего блока может быть вычислен на основе информации о движении текущего блока в первом направлении и информации о движении текущего блока во втором направлении.
[00158] Способ двунаправленного интер-предсказания, предусмотренный в настоящей заявке, может выполняться устройством двунаправленного интер-предсказания, устройством кодирования видео, видеокодеком или другим устройством, имеющим функцию кодирования видео.
[00159] Способ двунаправленного интер-предсказания, представленный в настоящей заявке, применим к системе кодирования видео. В системе кодирования видео видеокодер и видеодекодер выполнены с возможностью вычисления информации о движении текущего блока в соответствии с примерами способа двунаправленного интер-предсказания, предоставленного в настоящей заявке. В частности, информация о движении текущего блока во втором направлении может быть вычислена на основе информации о движении текущего блока в первом направлении, так что дискретный отсчет предсказания текущего блока определяется на основе информации о движении текущего блока в первом направлении и информации о движении текущего блока во втором направлении. Таким образом, между видеокодером и видеокодером должна передаваться только информация о движении текущего блока в первом направлении. Это эффективно улучшает использование ресурсов передачи и эффективность сжатия кодирования.
[00160] На Фиг.1 показана структура системы кодирования видео. Как показано на Фиг.1, система 1 кодирования видео включает в себя устройство 10 источника и устройство 20 получателя. Устройство 10 источника генерирует кодированные видеоданные. Устройство 10 источника может называться оборудованием кодирования видео или устройством кодирования видео. Устройство 20 получателя может декодировать кодированные видеоданные, сгенерированные устройством 10 источника. Устройство 20 получателя также может называться оборудованием декодирования видео или устройством декодирования видео. Устройство 10 источника и/или устройство 20 получателя может включать в себя по меньшей мере один процессор и память, соединенные с по меньшей мере одним процессором. Память может включать, но не ограничивается этим, постоянное запоминающее устройство (Read-Only Memory, ROM), запоминающее устройство произвольного доступа (Random Access Memory, RAM), электрически стираемое программируемое постоянное запоминающее устройство (Electrically Erasable Programmable Read-Only Memory, EEPROM), флэш-память или любой другой носитель, который может быть выполнен с возможностью хранения необходимого программного кода в форме инструкций или структур данных, к которой может осуществлять доступ компьютер. В настоящей заявке это особым образом не ограничено.
[00161] Устройство 10 источника и устройство 20 получателя могут включать в себя различные устройства, включающие в себя настольный компьютер, мобильное вычислительное устройство, ноутбук (например, портативный компьютер), планшетный компьютер, телеприставку, портативное телефонное устройство, такое как «умный» телефон, телевизор, фотоустройство, устройство отображения, цифровой медиаплеер, игровая приставка, бортовой компьютер и подобные устройства.
[00162] Устройство 20 получателя может принимать кодированные видеоданные от устройства 10 источника через линия 30 связи. Линия 30 связи может включать в себя один или более носителей и/или устройств, которые могут передавать кодированные видеоданные от устройства 10 источника к устройству 20 получателя. В одном примере линия 30 связи может включать в себя одну или более сред связи, которые позволяют устройству 10 источника напрямую передавать кодированные видеоданные в устройство 20 получателя в реальном времени. В этом примере устройство 10 источника может модулировать кодированные видеоданные в соответствии со стандартом связи (например, протоколом беспроводной связи) и может передавать модулированные видеоданные в устройство 20 получателя. Одна или более сред связи могут включать в себя беспроводную и/или проводную среду связи, например, радиочастотный (Radio Frequency, RF) спектр или одну или более физических линий передачи. Одна или более сред связи могут быть частью сети на основе пакетов (такой как локальная сеть, региональная сеть или глобальная сеть (например, Интернет)). Одна или более сред связи могут включать в себя маршрутизатор, коммутатор, базовую станцию или другое устройство, реализующее связь между устройством 10 источника и устройством 20 получателя.
[00163] В другом примере кодированные видеоданные могут выводиться в устройство 40 хранения через интерфейс 103 вывода. Точно так же к кодированным видеоданным можно осуществлять доступ из устройства 40 хранения через интерфейс 203 ввода. Устройство 40 хранения может включать в себя множество типов локально доступных носителей для хранения данных, таких как диск Blu-ray, цифровой видеодиск высокой плотности (Digital Video Disc, DVD), постоянное запоминающее устройство на компакт-диске (Compact Disc Read-Only Memory, CD-ROM), флэш-память или другой подходящий цифровой носитель информации, выполненный с возможностью хранения закодированных видеоданных.
[00164] В другом примере устройство 40 хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, в котором хранятся кодированные видеоданные, сгенерированные устройством 10 источника. В этом примере устройство 20 получателя может получать сохраненные видеоданные из устройства 40 хранения посредством потоковой передачи или загрузки. Файловый сервер может быть сервером любого типа, который может хранить кодированные видеоданные и передавать закодированные видеоданные на устройство 20 получателя. Например, файловый сервер может включать в себя сервер всемирной сети (World Wide Web, WWW) (например, используемый для веб-сайта), сервер протокола передачи файлов (File Transfer Protocol, FTP), сетевое хранилище (Network Attached Storage, NAS) или локальный диск.
[00165] Устройство 20 получателя может осуществлять доступ к кодированным видеоданным через любое стандартное соединение для передачи данных (например, соединение с Интернетом). Примерный тип соединения для передачи данных включает в себя беспроводной канал или проводное соединение (например, кабельный модем), которое можно использовать для доступа к кодированным видеоданным, хранящимся на файловом сервере, или их сочетанием. Передача закодированных видеоданных с файлового сервера может быть потоковой передачей, загрузкой или их сочетанием.
[00166] Способ двунаправленного интер-предсказания в настоящей заявке не ограничивается сценарием беспроводного применения. Например, способ двунаправленного интер-предсказания в настоящей заявке может использоваться в кодировании видео для поддержки множества мультимедийных приложений, таких как следующие приложения: эфирное телевещание, передача кабельного телевидения, передача спутникового телевидения, передача потокового видео (например, через Интернет), кодирование видеоданных, хранящихся на носителе информации, декодирование видеоданных, хранящихся на носителе информации, или другое применение. В некоторых примерах система 1 кодирования видео может быть выполнена с возможностью поддержки однонаправленной или двунаправленной передачи видео, для поддержки таких приложений, как потоковая передача видео, воспроизведение видео, широковещательная передача видео и/или видеотелефония.
[00167] Следует отметить, что система 1 кодирования видео, показанная на Фиг.1 является просто примером системы кодирования видео и не ограничивает систему кодирования видео в настоящей заявке. Способ двунаправленного интер-предсказания, представленный в настоящей заявке, дополнительно применим к сценарию, в котором нет обмена данными между устройством кодирования и устройством декодирования. В других примерах подлежащие кодированию видеоданные или закодированные видеоданные могут быть извлечены из локальной памяти, могут быть переданы в режиме потоковой передачи по сети и т.п. Устройство кодирования видео может кодировать видеоданные, которые должны быть закодированы, и сохранять закодированные видеоданные в памяти. Устройство декодирования видео может получать кодированные видеоданные из памяти и декодировать кодированные видеоданные.
[00168] На Фиг.1, устройство 10 источника включает в себя источник 101 видео, видеокодер 102 и интерфейс 103 вывода. В некоторых примерах интерфейс 103 вывода может включать в себя модулятор/демодулятор (модем) и/или передатчик. Источник 101 видео может включать в себя устройство захвата видео (например, камеру), видеоархив, включающий в себя ранее захваченные видеоданные, интерфейс ввода видео для приема видеоданных от поставщика видео контента и/или систему компьютерной графики для генерации видеоданных или сочетание вышеупомянутых источников видеоданных.
[00169] Видеокодер 102 может кодировать видеоданные из источника 101 видео. В некоторых примерах устройство 10 источника напрямую передает закодированные видеоданные в устройство 20 получателя через интерфейс 103 вывода. В других примерах кодированные видеоданные могут альтернативно храниться в устройстве 40 хранения, так что устройство 20 получателя впоследствии осуществляет доступ к кодированным видеоданным для декодирования и/или воспроизведения.
[00170] В примере на Фиг.1, устройство 20 получателя включает в себя устройство 201 отображения, видеодекодер 202 и интерфейс 203 ввода. В некоторых примерах интерфейс 203 ввода включает в себя приемник и/или модем. Интерфейс 203 ввода может принимать закодированные видеоданные по линии 30 связи и/или от устройства 40 хранения. Устройство 201 отображения может быть интегрировано с устройством 20 получателя или может быть расположено вне устройства 20 получателя. Обычно устройство 201 отображения отображает декодированные видеоданные. Устройство 201 отображения может включать в себя множество типов устройств отображения, например жидкокристаллический дисплей, плазменный дисплей, дисплей на органических светодиодах или устройство отображения другого типа.
[00171] В необязательном порядке, видеокодер 102 и видеодекодер 202 могут быть соответственно интегрированы с аудиокодером и аудиодекодером и могут включать в себя соответствующий блок мультиплексора-демультиплексора или другое аппаратное и программное обеспечение для кодирования как звука, так и видео в объединенные поток данных или отдельный поток данных.
[00172] Видеокодер 102 и видеодекодер 202 могут включать в себя по меньшей мере один микропроцессор, процессор цифровых сигналов (Digital Signal Processor, DSP), специализированную интегральную схему (Digital Signal Processor, DSP), программируемую пользователем вентильную матрицу (Field Programmable Gate Array, FPGA), дискретная логика, аппаратное обеспечение или любое их сочетание. Если способ двунаправленного интер-предсказания, предусмотренный в настоящей заявке, реализован с использованием программного обеспечения, инструкции, используемые для программного обеспечения, могут быть сохранены на соответствующем энергонезависимом машиночитаемом носителе информации, и по меньшей мере один процессор может использоваться для выполнения инструкций в аппаратном обеспечении для реализации настоящей заявки. Любое из вышеперечисленного содержимого (включая аппаратное обеспечение, программное обеспечение, сочетание аппаратного и программного обеспечения и т.п.) может рассматриваться как по меньшей мере один процессор. Видеокодер 102 может быть включен в кодер, видеодекодер 202 может быть включен в декодер, а кодер или декодер может быть частью объединенного кодера/декодера (кодека) в соответствующем устройстве.
[00173] Видеокодер 102 и видеодекодер 202 в настоящей заявке могут выполнять операции в соответствии со стандартом сжатия видео (например, HEVC или VVC) или могут выполнять операции в соответствии с другим отраслевым стандартом. В настоящей заявке это особым образом не ограничено.
[00174] Видеокодер 102 выполнен с возможностью: выполнять оценку двунаправленного движения в отношении текущего блока, определять информацию о движении текущего блока в первом направлении и вычислять информацию о движении текущего блока во втором направлении на основе информации о движении текущего блока в первом направлении. Таким образом, видеокодер 102 определяет блок изображения предсказания текущего блока на основе информации о движении текущего блока в первом направлении и информации о движении текущего блока во втором направлении. Кроме того, видеокодер 102 выполняет такие операции, как преобразование и квантование остатка между текущим блоком и блоком изображения предсказания текущего блока, чтобы сгенерировать битовый поток, и отправляет битовый поток в видеодекодер 202. Битовый поток включает в себя информацию о движении текущего блока в первом направлении и информацию указания, которая используется для указания определить вторую информацию о движении на основе первой информации о движении. Информация указания может быть представлена с использованием разных идентификаторов. Чтобы узнать о способе представления информации указания, обратитесь к описаниям в следующих примерах.
[00175] В необязательном порядке, способ, в котором «видеокодер 102 вычисляет информацию о движении текущего блока во втором направлении на основе информации о движении текущего блока в первом направлении», может быть следующим: Видеокодер 102 определяет вектор движения текущего блока во втором направлении на основе вектора движения текущего блока в первом направлении; или видеокодер 102 определяет разность вектора движения текущего блока во втором направлении на основе разности вектора движения текущего блока в первом направлении и определяет вектор движения текущего блока во втором направлении на основе разности вектора движения текущего блока во втором направлении и предсказанного вектора движения текущего блока во втором направлении.
[00176] Со ссылкой на Фиг.4 ниже, видеодекодер 202 может быть выполнен с возможностью выполнения следующих этапов:
[00177] S400: Получить битовый поток и проанализировать битовый поток, чтобы получить информацию указания, используемую для указания определить вторую информацию о движении на основе первой информации о движении, то есть определить вывести и вычислить информацию о движении в одном направлении на основе информации о движении в другом направлении, где первая информация о движении включает в себя информацию о движении текущего блока в первом направлении, вторая информация о движении включает в себя информацию о движении текущего блока во втором направлении, и первое направление отличается от второго направления.
[00178] S401: Получить первую информацию о движении.
[00179] S402: Определить вторую информацию о движении на основе полученной первой информации о движении.
[00180] S403: Видеодекодер 202 определяет дискретный отсчет предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[00181] Способ, в котором «видеодекодер 202 вычисляет информацию о движении текущего блока во втором направлении на основе информации о движении текущего блока в первом направлении», может быть следующим: Видеодекодер 202 определяет вектор движения текущего блока во втором направлении на основе вектора движения текущего блока в первом направлении; или видеодекодер 202 определяет разность вектора движения текущего блока во втором направлении на основе разности вектора движения текущего блока в первом направлении и определяет вектор движения текущего блока во втором направлении на основе разности вектора движения текущего блока во втором направлении и предсказанного вектора движения текущего блока во втором направлении.
[00182] Фиг.2 представляет собой схематическую структурную схему видеокодера 102 согласно одному варианту осуществления настоящей заявки. Как показано на Фиг.2, видеокодер 102 выполнен с возможностью вывода видео в средство 41 постобработки. Средство 41 постобработки представляет собой пример средства видео, способного обрабатывать кодированные видеоданные, которые поступают из видеокодера 102, например, сетевой элемент с поддержкой мультимедиа (MANE) или устройство сшивания/устройство редактирования. В некоторых случаях средство 41 постобработки может быть примером сетевого объекта. В некоторых системах кодирования видео средство 41 постобработки и видеокодер 102 могут быть компонентами отдельных устройств, в то время как в других случаях функции, описанные в отношении средства 41 постобработки, могут быть реализованы одним и тем же устройством, включающем в себя видеокодер 102. В одном примере средство 41 постобработки является примером устройства 40 хранения на Фиг.1.
[00183] Видеокодер 102 может выводить и вычислять информацию о движении текущего блока во втором направлении на основе информации о движении текущего блока в первом направлении и дополнительно определять блок изображения предсказания текущего блока на основе информации о движении текущего блока в первом направлении и информации о движении текущего блока во втором направлении, чтобы завершить двунаправленное кодирование с интер-предсказанием.
[00184] Как показано на Фиг.2, видеокодер 102 включает в себя преобразователь 301, квантователь 302, энтропийный кодер 303, фильтр 306, память 307, модуль 308 обработки предсказания и сумматор 312. Модуль 308 обработки предсказания включает в себя модуль 309 интра-предсказания и модуль 310 интер-предсказания. Для восстановления блока изображения видеокодер 102 дополнительно включает в себя обратный квантователь 304, обратный преобразователь 305 и сумматор 311. Фильтр 306 определен для представления одного или более контурных фильтров, например, фильтра удаления блочности, адаптивного контурного фильтра и фильтра адаптивного смещения дискретного отсчета.
[00185] Память 307 может хранить видеоданные, закодированные компонентом видеокодера 102. Видеоданные, хранящиеся в памяти 307, могут быть получены из источника 101 видео. Память 307 может быть памятью опорных изображений, в которой хранятся опорные видеоданные, используемые видеокодером 102 для кодирования видеоданных в режиме интер или интра кодирования. Память 307 может быть динамической памятью с произвольным доступом (dynamic RAM, DRAM), включающей в себя синхронную DRAM (synchronous DRAM, SDRAM), магниторезистивную RAM (magnetoresistive RAM, MRAM), резистивную RAM (resistive RAM, RRAM), или устройство памяти другого типа.
[00186] Видеокодер 102 принимает видеоданные и сохраняет видеоданные в памяти видеоданных. Модуль разделения разделяет видеоданные на несколько блоков изображения, и эти блоки изображения могут быть дополнительно разделены на более мелкие блоки. Например, выполняется разделение блока изображения на основе структуры квадродерева или структуры двоичного дерева. Разделение может дополнительно включать в себя разделение на срезы (slice), фрагменты (tile) или другие более крупные блоки. Видеокодер 102 обычно является компонентом для кодирования блока изображения в срезе (слайсе) видео, который должен быть закодирован. Срез может быть разделен на множество блоков изображения (и может быть разделен на наборы блоков изображения, которые называются мозаичными элементами (фрагментами)).
[00187] Модуль 309 интра-предсказания в блоке 308 обработки предсказания может выполнять кодирование с интра-предсказанием для текущего блока относительно одного или более соседних блоков изображения, которые находятся в том же изображении или срезе, что и текущий блок, для удаления пространственной избыточности. Модуль 310 интер-предсказания в блоке 308 обработки предсказания может выполнять кодирование с интер-предсказанием в текущем блоке относительно одного или более блоков изображения предсказания в одном или более опорных изображениях, чтобы удалить временную избыточность.
[00188] Модуль 308 обработки предсказания может подавать полученные с интра-кодированием и интер-кодированными блоки изображений в сумматор 312 для генерации остаточного блока, и подавать остаточный блок в сумматор 311, чтобы восстановить блок кодирования, используемый в качестве опорного изображения.
[00189] После того, как модуль 308 обработки предсказания сгенерирует блок изображения предсказания текущего блока посредством интер-предсказания и интра-предсказания, видеокодер 102 генерирует остаточный блок изображения посредством вычитания блока изображения предсказания из текущего подлежащего кодированию блока. Сумматор 312 представляет собой один или более компонентов, которые выполняют эту операцию вычитания. Остаточные видеоданные в остаточном блоке могут быть включены в один или более блоков преобразования (transform unit, TU) и использоваться преобразователем 301. Преобразователь 301 преобразует остаточные видеоданные в коэффициент остаточного преобразования посредством преобразования, такого как дискретное косинусное преобразование (discrete cosine transform, DCT) или концептуально аналогичное преобразование. Преобразователь 301 может преобразовывать остаточные видеоданные из области значений дискретного отсчета в область преобразования, например, в частотную область.
[00190] Преобразователь 301 может отправить полученный коэффициент преобразования в квантователь 302. Квантователь 302 квантует коэффициент преобразования, чтобы дополнительно снизить скорость передачи битов. В некоторых примерах квантователь 302 может дополнительно сканировать матрицу, включающую в себя квантованный коэффициент преобразования. В качестве альтернативы энтропийный кодер 303 может выполнять сканирование.
[00191] После квантования энтропийный кодер 303 выполняет энтропийное кодирование квантованного коэффициента преобразования. Например, энтропийный кодер 303 может выполнять контекстно-адаптивное кодирование с переменной длиной (context-adaptive variable-length coding, CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (context-adaptive binary arithmetic coding, CABAC), или другой способ или технологию энтропийного кодирования. После того, как энтропийный кодер 303 выполнит энтропийное кодирование, закодированный битовый поток может быть отправлен в видеодекодер 202 или заархивирован для последующей отправки или последующего поиска видеодекодером 202. Энтропийный кодер 303 может дополнительно выполнять энтропийное кодирование синтаксического элемента текущего подлежащего кодированию блока.
[00192] Обратный квантователь 304 и обратный преобразователь 305, соответственно, выполняют обратное квантование и обратное преобразование, чтобы восстановить остаточный блок в области дискретного отсчета, например, чтобы быть впоследствии использованным в качестве опорного блока опорного изображения. Сумматор 311 добавляет восстановленный остаточный блок к блоку изображения предсказания, сгенерированному модулем 310 интер-предсказания или модулем 309 интра-предсказания, чтобы сгенерировать восстановленный блок изображения. Блок изображения предсказания из блока изображения может быть получен посредством выполнения обработки (например, интерполяции) в отношении опорного блоки изображения блока изображения.
[00193] Следует понимать, что другие структурные варианты видеокодера 102 могут использоваться для кодирования видеопотока. Например, для некоторых блоков изображения или изображений видеокодер 102 может непосредственно квантовать остаточный сигнал, и, соответственно, обработка преобразователем 301 и обратным преобразователем 305 не требуется. В качестве альтернативы, для некоторых блоков изображения или изображений видеокодер 102 не генерирует остаточные данные, и, соответственно, обработка преобразователем 301, квантователем 302, обратным квантователем 304 и обратным преобразователем 305 не требуется. В качестве альтернативы, видеокодер 102 может непосредственно хранить восстановленный блок изображения в качестве опорного блока без обработки посредством фильтра 306. В качестве альтернативы, квантователь 302 и обратный квантователь 304 в видеокодере 102 могут быть объединены.
[00194] Фиг.3 представляет собой схематическую структурную схему видеодекодера 202 согласно одному варианту осуществления настоящей заявки. Как показано на Фиг.3, видеодекодер 202 включает в себя энтропийный декодер 401, обратный квантователь 402, обратный преобразователь 403, фильтр 404, память 405, модуль 406 обработки предсказания и сумматор 409. Модуль 406 обработки предсказания включает в себя модуль 407 интра-предсказания и модуль 408 интер-предсказания. В некоторых примерах видеодекодер 202 может выполнять процесс декодирования, который грубо является обратным процессу кодирования, описанному в отношении видеокодера 102 на Фиг.2.
[00195] В процессе декодирования видеодекодер 202 принимает битовый поток от видеокодера 102. Видеодекодер 202 может принимать видеоданные от сетевого объекта 42 и, в необязательном порядке, может дополнительно сохранять видеоданные в памяти видеоданных (не показано на фигуре). Память видеоданных может хранить видеоданные, которые должны быть декодированы компонентом видеодекодера 202, например, кодированный битовый поток. Видеоданные, хранящиеся в памяти видеоданных, могут быть получены, например, из локального источника видео, такого как устройство 40 хранения или камера, посредством проводной или беспроводной сетевой передачи видеоданных или посредством доступа к физическому носителю информации. Хотя память видеоданных не показана на Фиг.3, память видеоданных и память 405 могут быть одной и той же памятью или могут быть отдельно расположенными блоками памяти. Каждая из памяти для видеоданных и памяти 405 может включать в себя любое из множества типов устройств памяти, например, динамическую память с произвольным доступом (DRAM), включающей в себя синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другой тип запоминающего устройства. В различных примерах память видеоданных может быть интегрирована в микросхему вместе с другими компонентами видеодекодера 202 или может быть расположена вне микросхемы относительно этих компонентов.
[00196] Сетевой объект 42 может быть, например, сервером, MANE, видеоредактором/клипером или другим устройством, выполненным с возможностью реализации одной или более технологий, описанных выше. Сетевой объект 42 может включать или не включать в себя видеокодер, например видеокодер 102. Прежде чем сетевой объект 42 отправит битовый поток в видеодекодер 202, сетевой объект 42 может реализовать часть технологий, описанных в настоящей заявке. В некоторых системах декодирования видео сетевой объект 42 и видеодекодер 202 могут быть компонентами отдельных устройств. В других случаях функции, описанные в отношении сетевого объекта 42, могут быть реализованы тем же устройством, включая видеодекодер 202. В некоторых случаях сетевой объект 42 может быть примером запоминающего устройства 40 на Фиг.1.
[00197] Энтропийный декодер 401 видеодекодера 202 выполняет энтропийное декодирование битового потока, чтобы сгенерировать квантованный коэффициент и некоторые синтаксические элементы. Энтропийный декодер 401 пересылает синтаксические элементы фильтру 404. Видеодекодер 202 может принимать синтаксические элементы/синтаксический элемент на уровне среза видео и/или уровне блока изображения. В настоящей заявке, в примере, синтаксический элемент может включать в себя информацию указания, относящуюся к текущему блоку, и информация указания используется для указания определить вторую информацию о движении на основе первой информации о движении. Кроме того, в некоторых примерах видеокодер 102 может отправлять сигнал для уведомления конкретного синтаксического элемента, указывающего, следует ли определять вторую информацию о движении на основе первой информации о движении.
[00198] Обратный квантователь 402 выполняет обратное квантование, то есть деквантовывает квантованный коэффициент преобразования, предоставленный в битовом потоке и декодированный энтропийным декодером 401. Процесс обратного квантования может включать в себя: определение степени квантования, которая должна применяться, с использованием параметра квантования, вычисленного видеокодером 102 для каждого блока изображения в срезе видео, и аналогичным образом определение степени обратного квантования, которая должна применяться. Обратный преобразователь 403 применяет обратное преобразование, например обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования, к коэффициенту преобразования, чтобы сгенерировать остаточный блок в области дискретного отсчета.
[00199] После того, как модуль 406 обработки предсказания сгенерирует блок изображения предсказания для текущего блока или подблока текущего блока, видеодекодер 202 суммирует остаточный блок из обратного преобразователя 403 и соответствующий блок изображения предсказания, сгенерированный блоком 406 обработки предсказания, для получения восстановленного блока, то есть декодированного блока изображения. Сумматор 409 (который также упоминается как модуль 409 восстановления) представляет собой компонент, который выполняет эту операцию суммирования. При необходимости фильтр (в цикле декодирования или после него) может быть дополнительно использован для сглаживания дискретных отсчетов, или качество видео может быть улучшено другим способом. Фильтр 404 может быть одним или более контурными фильтрами, например фильтром удаления блочности, адаптивным контурным фильтром (ALF) и фильтром с адаптивным смещением дискретного отсчета (SAO).
[00200] Следует понимать, что другие структурные варианты видеодекодера 202 могут использоваться для декодирования битового потока. Например, для некоторых блоков изображения или изображений энтропийный декодер 401 видеодекодера 202 не получает квантованный коэффициент посредством декодирования, и, соответственно, обработка обратным квантователем 402 и обратным преобразователем 403 не требуется. Например, обратный квантователь 402 и обратный преобразователь 403 в видеодекодере 202 могут быть объединены.
[00201] Со ссылкой на систему 1 кодирования видео, показанную на Фиг.1, видеокодер 102, показанный на Фиг.2, и видеодекодер 202, показанный на Фиг.3, ниже подробно описывается способ двунаправленного интер-предсказания, предоставляемый в настоящей заявке.
[00202] Фиг.4 является блок-схемой последовательности операций способа двунаправленного интер-предсказания согласно одному варианту осуществления настоящей заявки. Способ, показанный на Фиг.4, выполняется устройством двунаправленного интер-предсказания. Устройство двунаправленного интер-предсказания может быть видеодекодером 202 на Фиг.1. Фиг.4 описывается с использованием примера, в котором устройством двунаправленного интер-предсказания является видеодекодер 202.
[00203] Как показано на Фиг.4, способ двунаправленного интер-предсказания в этом варианте осуществления настоящей заявки может включать в себя следующие этапы.
[00204] S400: (Видеодекодер 202) анализирует полученный битовый поток и получает информацию указания.
[00205] В необязательном порядке, видеодекодер 202 может анализировать битовый поток и определять на основе значения синтаксического элемента в битовом потоке режим интер-предсказания, используемый для выполнения интер-предсказания для текущего блока в текущем изображении. Когда режим интер-предсказания является режимом двунаправленного интер-предсказания, видеодекодер 202 получает информацию указания.
[00206] Видеодекодер 202 может принимать закодированный битовый поток, отправленный видеокодером 102, или может получать закодированный битовый поток из устройства 40 хранения.
[00207] В необязательном порядке, видеодекодер 202 в этом варианте осуществления настоящей заявки определяет на основе значения синтаксического элемента inter_pred_idc режим интер-предсказания, используемый для выполнения интер-предсказания для текущего блока в текущем изображении. Из вышеприведенного описания можно понять, что интер-предсказание включает в себя однонаправленное интер-предсказание и двунаправленное интер-предсказание. В необязательном порядке, когда значение синтаксического элемента inter_pred_idc равно 0, видеодекодер 202 может определить, что режим интер-предсказания, используемый для выполнения интер-предсказания для текущего блока в текущем изображении, является интер-предсказанием вперед. Когда значение синтаксического элемента inter_pred_idc равно 1, видеодекодер 202 может определить, что режим интер-предсказания, используемый для выполнения интер-предсказания для текущего блока в текущем изображении, является интер-предсказанием назад. Когда значение синтаксического элемента inter_pred_idc равно 2, видеодекодер 202 может определить, что режим интер-предсказания, используемый для выполнения интер-предсказания для текущего блока в текущем изображении, является двунаправленным интер-предсказанием.
[00208] В необязательном порядке, после определения того, что значение синтаксического элемента inter_pred_idc равно 2, видеодекодер 202 получает информацию указания, используемую для указания определить вторую информацию о движении на основе первой информации о движении. Первая информация о движении является информацией о движении текущего блока в первом направлении, вторая информация о движении является информацией о движении текущего блока во втором направлении, и первое направление отличается от второго направления.
[00209] Блок изображения в настоящей заявке может быть базовой единицей для выполнения видеокодирования или декодирования видео, например, единицей кодирования (Coding Unit, CU), или может быть базовой единицей для выполнения операции предсказания, например, единицей предсказания (Prediction Unit, PU). Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00210] В необязательном порядке, текущий блок в этом варианте осуществления настоящей заявки может дополнительно включать в себя по меньшей мере один подблок. Соответственно, первая информация о движении может включать в себя информацию о движении каждого из по меньшей мере одного подблока текущего блока в первом направлении, вторая информация о движении может включать в себя информацию о движении каждого из по меньшей мере одного подблока текущего блока во втором направлении, и информация указания может использоваться для указания определить информацию о движении подблока во втором направлении на основе информации о движении подблока в первом направлении. В необязательном порядке, текущий блок может альтернативно быть подблоком, который не может быть разделен.
[00211] Видеодекодер 202 может получать информацию указания множеством способов, включающую, но не ограничивающуюся этим, следующие реализации.
[00212] В первой реализации видеодекодер 202 анализирует первый идентификатор. Когда значение первого идентификатора является первым предварительно установленным значением, видеодекодер 202 решает проанализировать первую информацию о движении и определяет вторую информацию о движении на основе первой информации о движении. Когда значение первого идентификатора является восьмым предварительно установленным значением, видеодекодер 202 анализирует битовый поток, чтобы получить пятый идентификатор. Когда значение пятого идентификатора является пятым предварительно установленным значением, видеодекодер 202 решает проанализировать вторую информацию о движении и вычисляет первую информацию о движении на основе второй информации о движении. Когда значение пятого идентификатора является девятым предварительно установленным значением, видеодекодер 202 получает первую информацию о движении и вторую информацию о движении. Например, когда первое предварительно установленное значение, восьмое предварительно установленное значение, девятое предварительно установленное значение и пятое предварительно установленное значение представляют истину, каждое из первого предварительно установленного значения, восьмого предварительно установленного значения, девятого предварительно установленного значения и пятого предварительно установленного значения может быть 1. В качестве альтернативы, когда первое предварительно установленное значение, восьмое предварительно установленное значение, девятое предварительно установленное значение и пятое предварительно установленное значение представляют истину, то каждое из первого предварительно установленного значения, восьмого предварительно установленного значения, девятого предварительно установленного значения и пятого предварительно установленного значения может быть равно 0. В настоящей заявке это однозначно не ограничено. Например, первое предварительно установленное значение, восьмое предварительно установленное значение, девятое предварительно установленное значение и пятое предварительно установленное значение могут быть одинаковыми или могут быть разными, и, например, каждое из них может быть либо 0, либо 1. Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки. В частности, сначала получается первый идентификатор. Когда первый идентификатор является первым предварительно установленным значением, это указывает, что вторая информация о движении может быть определена на основе первой информации о движении. Если первый идентификатор является восьмым предварительно установленным значением, это указывает, что вторая информация о движении не может быть определена на основе первой информации о движении. В этом случае необходимо получить пятый идентификатор. Когда пятый идентификатор является пятым предварительно установленным значением, это указывает, что первая информация о движении может быть определена на основе второй информации о движении. Если пятый идентификатор является девятым предварительно установленным значением, это указывает, что первая информация о движении и вторая информация о движении могут быть получены посредством анализа. В этом случае первая информация о движении и вторая информация о движении не могут быть получены друг из друга.
[00213] Например, первым идентификатором может быть mv_derived_flag_l0, пятым идентификатором может быть mv_derived_flag_l1, как первое предварительно установленное значение, так и пятое предварительно установленное значение могут быть равны 1, и как восьмое предварительно установленное значение, так и девятое предварительно установленное значение могут быть равны 0. Видеодекодер 202 сначала анализирует mv_derived_flag_l0. Когда значение mv_derived_flag_l0 равно 1, видеодекодер 202 анализирует первую информацию о движении и определяет вторую информацию о движении на основе первой информации о движении. Когда значение mv_derived_flag_l0 равно 0, видеодекодер 202 анализирует mv_derived_flag_l1. Когда значение mv_derived_flag_l1 равно 1, видеодекодер 202 анализирует вторую информацию о движении и вычисляет первую информацию о движении на основе второй информации о движении. Когда и значение mv_derived_flag_l0, и значение mv_derived_flag_l1 равны 0, видеодекодер 202 анализирует первую информацию о движении и вторую информацию о движении.
[00214] Следует понимать, что идентификаторы и значения в этом варианте осуществления настоящего изобретения являются просто примерами, и разнообразие идентификаторов и значений не является исчерпывающим или ограниченным в настоящем изобретении.
[00215] Во второй реализации видеодекодер 202 анализирует второй идентификатор. Когда значение второго идентификатора является вторым предварительно установленным значением, видеодекодер 202 решает вычислить информацию о движении текущего блока, используя алгоритм выведения информации о движении. Затем видеодекодер 202 анализирует третий идентификатор. Когда значение третьего идентификатора является третьим предварительно установленным значением, видеодекодер 202 решает проанализировать первую информацию о движении и определяет вторую информацию о движении на основе первой информации о движении. Другими словами, видеодекодер 202 получает информацию указания. Когда значение третьего идентификатора является шестым предварительно установленным значением, видеодекодер 202 решает проанализировать вторую информацию о движении и вычисляет первую информацию о движении на основе второй информации о движении.
[00216] В частности, сначала получается второй идентификатор. Когда второй идентификатор является вторым предварительно установленным значением, это указывает, что одна часть информации о движении может быть выведена на основе другой части информации о движении. Далее получается третий идентификатор. Когда значение третьего идентификатора является третьим предварительно установленным значением, это указывает, что вторая информация о движении может быть определена на основе первой информации о движении. Когда значение третьего идентификатора является шестым предварительно установленным значением, это указывает, что первая информация о движении может быть определена на основе второй информации о движении.
[00217] Например, вторым идентификатором является derived_mv_flag, третьим идентификатором является derived_mv_direction, третье предварительно установленное значение равно 1, а шестое предварительно установленное значение равно 0. Видеодекодер 202 сначала анализирует derived_mv_flag. Когда значение derived_mv_flag равно 1, видеодекодер 202 решает вычислить информацию о движении текущего блока, используя алгоритм выведения информации о движении. Когда значение derived_mv_flag равно 0, видеодекодер 202 анализирует первую информацию о движении и вторую информацию о движении. Когда значение derived_mv_direction равно 1, видеодекодер 202 анализирует первую информацию о движении и определяет вторую информацию о движении на основе первой информации о движении. Когда значение derived_mv_direction равно 0, видеодекодер 202 решает проанализировать вторую информацию о движении и вычисляет первую информацию о движении на основе второй информации о движении.
[00218] В третьей реализации видеодекодер 202 анализирует второй идентификатор. Когда значение второго идентификатора является вторым предварительно установленным значением, видеодекодер 202 решает вычислить информацию о движении текущего блока, используя алгоритм выведения информации о движении. Затем видеодекодер 202 решает, на основе предварительно установленного направления получения, проанализировать первую информацию о движении и определяет вторую информацию о движении на основе первой информации о движении. Другими словами, видеодекодер 202 получает информацию указания. Другими словами, в этой реализации предварительно установлено «определение второй информации о движении на основе первой информации о движении». Когда значение второго идентификатора является седьмым предварительно установленным значением, первая информация о движении и вторая информация о движении анализируются. Другими словами, в этом случае первая информация о движении и вторая информация о движении не могут быть получены посредством выведения.
[00219] Например, второй идентификатор - это derived_mv_flag, второе предварительно установленное значение равно 1, а седьмое предварительно установленное значение равно 0. Видеодекодер 202 анализирует derived_mv_flag. Когда значение derived_mv_flag равно 1, видеодекодер 202 решает вычислить информацию о движении текущего блока, используя алгоритм выведения информации о движении. Кроме того, видеодекодер 202 определяет анализ первой информации о движении и определяет вторую информацию о движении на основе первой информации о движении. Когда значение derived_mv_flag равно 0, видеодекодер 202 анализирует первую информацию о движении и вторую информацию о движении.
[00220] В четвертой реализации видеодекодер 202 анализирует четвертый идентификатор (например, mv_derived_flag_l0). Когда значение четвертого идентификатора является четвертым предварительно установленным значением, видеодекодер 202 решает вычислить информацию о движении текущего блока с использованием алгоритма выведения информации о движении, и вычисляет переменную derived_ref_num на основе первого списка опорных изображений и второй списка опорных изображений. Переменная представляет собой количество зеркальных/линейных пар опорных изображений, которые могут быть сформированы на основе первого опорного изображения и второго опорного изображения. Когда количество пар опорных изображений равно 1, видеодекодер 202 непосредственно определяет значения индексов опорных изображений. Затем видеодекодер 202 решает, на основе предварительно установленного направления выведения, проанализировать первую информацию о движении и определяет вторую информацию о движении на основе первой информации о движении. Первый список опорных изображений представляет собой список опорных изображений текущего блока в первом направлении, второй список опорных изображений представляет собой список опорных изображений текущего блока во втором направлении, первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, а второе опорное изображение представляет собой опорное изображение текущего блока во втором направлении. Значение индекса опорного изображения в данном варианте осуществления данного применения может относиться к номеру опорного изображения в соответствующем списке опорных изображений.
[00221] Например, порядковый номер изображения (POC, picture order count) текущего изображения равен 4, первый список опорных изображений представляет собой {2, 0}, а второй список опорных изображений представляет собой {6, 7}. Предполагается, что определено, (например, в соответствии со следующим условием B или условием C), что опорное изображение (которое может быть понято в качестве первого опорного изображения), чей порядковый номер изображения равен 2 в первом списке опорных изображений, и опорное изображение (которое может быть понято как второе опорное изображение), чей порядковый номер изображения равен 6 во втором списке опорных изображений, могут сформировать пару опорных изображений. Таким образом, можно понять, что значение индекса первого опорного изображения в первом списке опорных изображений и значение индекса второго опорного изображения во втором списке опорных изображений равны 0. В частности, когда имеется только одна пара опорных изображений, эта пара опорных изображений может непосредственно использоваться в качестве целевых опорных изображений, и индексы местоположений, соответствующих целевым опорным изображениям в списках опорных изображений, являются индексами опорных изображений. В этом случае значения индексов опорных изображений не нужно получать посредством анализа.
[00222] В возможной конкретной реализации элементы в списке опорных изображений могут быть некоторыми метками, включая, но не ограничиваясь этим, порядковые номера изображений (POC) опорных изображений. Один порядковый номер изображения может соответствовать одному конкретному опорному изображению и/или индексу местоположения опорного изображения в списке опорных изображений, то есть, индексу опорного изображения.
[00223] В возможной конкретной реализации элементы в списке опорных изображений могут быть изображениями (опорными изображениями). Одно изображение может соответствовать одному конкретному POC и индексу местоположения изображения в списке опорных изображений, то есть индексу опорного изображения.
[00224] Предполагается, что порядковый номер текущего изображения равен 4, первый список опорных изображений равен {2, 0}, второй список опорных изображений равен {6, 7}, и определено (согласно следующему условию B или условию с), что опорное изображение (которое может быть понято в качестве первого опорного изображения), чей порядковый номер изображения равен 2 в первом списке опорных изображений, и опорное изображения (которое может быть понято как второе опорное изображение), чей порядковый номер изображения равен 6 во втором списке опорных изображений, могут сформировать пару опорных изображений, и опорное изображение, чей порядковый номер изображения равен 0 в первом списке опорных изображений, и опорное изображение, чей порядковый номер изображения равен 7 во втором списке опорных изображений, могут также образовывать пару опорных изображений. В этом случае, видеодекодеру 202 нужно проанализировать значения индексов опорных изображений. Другими словами, когда существует множество пар опорных изображений, значения индексов опорных изображений могут быть получены посредством анализа.
[00225] Кроме того, при определении того, что режим интер-предсказания является режимом двунаправленного интер-предсказания, видеодекодер 202 может дополнительно определить, удовлетворяет ли информация о характеристиках текущего изображения предварительно установленному условию (включая, но не ограничиваясь этим, следующие условия A, B, C, D и/или E). Таким образом, когда информация о характеристиках текущего изображения удовлетворяет предварительно установленному условию, видеодекодер 202 получает информацию указания. Другими словами, конкретный процесс S400 альтернативно может быть следующим: Видеодекодер 202 получает информацию указания при определении того, что режим интер-предсказания является режимом двунаправленного интер-предсказания, и информация о характеристиках текущего изображения удовлетворяет предварительно установленному условию.
[00226] Информация о характеристиках текущего изображения может включать в себя, но не ограничивается этим по меньшей мере одно из порядкового номера изображения (POC), идентификатора временного уровня (Temporal Level ID, TID) и/или количества опорных изображений. Битовый поток, полученный видеодекодером 202, включает в себя набор параметров последовательности (Sequence Parameter Set, SPS), набор параметров изображения (Picture Parameter Set, PPS), заголовок среза (slice header) или заголовок сегмента слайса (slice segment header), и кодированные данные изображения. Затем видеодекодер 202 анализирует битовый поток, чтобы получить информацию о характеристиках текущего изображения.
[00227] В необязательном порядке, предварительно установленное условие включает в себя по меньшей мере одно из следующих условий:
[00228] Условие А. В текущем блоке есть по меньшей мере два опорных изображения.
[00229] Условие В: Порядковый номер изображения текущего изображения, порядковый номер изображения первого опорного изображения и порядковый номер изображения второго опорного изображения удовлетворяют следующей формуле:
POC_Cur-POC_listX=POC_listY-POC_Cur.
[00230] При этом, представляет собой порядковый номер изображения текущего изображения, представляет собой порядковый номер изображения первого опорного изображения, представляет собой порядковый номер изображения второго опорного изображения, первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, второе опорное изображением является опорным изображением текущего блока во втором направлении, первое опорное изображение может быть в первом списке опорных изображений, а второе опорное изображение может быть во втором списке опорных изображений.
[00231] Условие C: порядковый номер изображения текущего изображения, порядковый номер изображения первого опорного изображения и порядковый номер изображения второго опорного изображения удовлетворяют следующей формуле:
(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0.
[00232] При этом, представляет собой порядковый номер изображения текущего изображения, представляет собой порядковый номер изображения первого опорного изображения, представляет собой порядковый номер изображения второго опорного изображения, первое опорное изображение представляет собой опорное изображение текущего блока в первом направлении, а второе опорное изображение представляет собой опорное изображение текущего блока во втором направлении. Очевидно, что эта формула конкретно указывает на то, что порядковый номер изображения текущего изображения должен быть между порядковым номером изображения первого опорного изображения и порядковым номером изображения второго опорного изображения. Более конкретно, эта формула может означать, что одно из первого опорного изображения и второго опорного изображения находится перед текущим изображением во временной последовательности, а другое после текущего изображения во временной последовательности.
[00233] Условие D: TID текущего изображения больше или равен предварительно установленному значению.
[00234] Предварительно установленное условие в этом варианте осуществления настоящей заявки может быть предварительно установлено или может быть указано в синтаксисе более высокого уровня, например, в наборе параметров, таком как SPS, PPS, заголовок среза (slice header) или заголовок сегмента слайса (slice segment header). Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00235] Условие E: mvd_l1_zero_flag текущего изображения равен 0.
[00236] mvd_l1_zero_flag - это бит флага, полученный видеодекодером 202 посредством анализа. Когда mvd_l1_zero_flag равен 1, это указывает, что MVD списка List1 не нужно анализировать. (mvd_l1_zero_flag, равный 1, указывает, что синтаксическая структура mvd_coding (x0, y0, 1) не анализируется, а MvdL1[x0][y0][compIdx] устанавливается равным 0 для compIdx=0..1. mvd_l1_zero_flag, равный 0, указывает, что синтаксическая структура mvd_coding (x0, y0, 1) анализируется). Более конкретно, mvd_l1_zero_flag=1 может использоваться для указания того, что разность второго вектора движения равна 0, и mvd_l1_zero_flag=0 может использоваться, чтобы указать, нужно ли анализировать или выводить разность второго вектора движения.
[00237] В частности, для условия B (или условия С), видеодекодер 202 получает порядковый номер изображения одного опорного изображения из каждого из первого списка опорных изображений и второго списка опорных изображений, и определяет, удовлетворяют ли полученный порядковый номер изображения опорного изображения и порядковый номер изображения текущего изображения условию B или условию C. Информация указания получается, когда выполняется условие В (или условие С). Следует понимать, что видеодекодер 202 может получить любое опорное изображение из каждого из первого списка опорных изображений и второго списка опорных изображений для выполнения согласования условия.
[00238] В необязательном порядке, для условии А, видеодекодер 202 устанавливает значение индекса опорного изображения (SymRefIdxX) в первом направлении в 0, и устанавливает значение индекса опорного изображения (SymRefIdxY) во втором направлении в 0.
[00239] В необязательном порядке, для условия B, видеодекодер 202 осуществляет в первом списке опорных изображений поиск опорного изображения, которое расположено ближе всего к текущему изображению и порядковый номер изображения которого меньше, чем порядковый номер изображения текущего изображения, в котором опорное изображение или порядковый номер изображения опорного изображения могут быть представлены в виде ; и видеодекодер 202 осуществляет во втором списке опорных изображений поиск опорного изображения, которое удовлетворяет условию POC_Cur-POC_listX=POC_listY-POC_Cur, где опорное изображение или порядковый номер изображения опорного изображения могут быть представлены в виде . Если опорные изображения POC_listX и POC_listY, которые удовлетворяют требования, можно найти поисковым образом, то значение индекса опорного изображения (SymRefIdxX) в первом направлении устанавливается в значение индекса POC_listX в первом списке опорных изображений, и значение индекса опорного изображения (SymRefIdxY) во втором направлении устанавливается равным значению индекса POC_listY во втором списке опорных изображений. В необязательном порядке, если опорные изображения POC_listX и POC_listY, которые удовлетворяют требованиям, не могут быть найдены, то видеодекодера 202 дополнительно осуществляет поиск опорного изображения POC_listX, которое ближе всего к текущему изображению и порядковый номер изображения которого больше порядкового номера изображения текущего изображения; и видеодекодер 202 осуществляет во втором списке опорных изображений поиск опорного изображения POC_listY, которое удовлетворяет POC_listX=POC_listY-POC_Cur. Если опорные изображения POC_listX и POC_listY, которые удовлетворяют требованиям, можно найти поисковым образом, то значение индекса опорного изображения (SymRefIdxX) в первом направлении устанавливается в значение индекса POC_listX в первом списке опорных изображений, и значение индекса опорное изображение (SymRefIdxY) во втором направлении устанавливается равным значению индекса POC_listY во втором списке опорных изображений. Первое направление может соответствовать первому списку опорных изображений, а второе направление может соответствовать второму списку опорных изображений.
[00240] В необязательном порядке, для указанных выше возможных условий, таких как условие С, видеодекодер 202 осуществляет в первом списке опорных изображений поиск опорного изображения, которое находится ближе всего к текущему изображению и порядковый номер изображения которого меньше, чем порядковый номер изображения текущего изображения, где опорное изображение или порядковый номер изображения опорного изображения могут быть представлены в виде , и видеодекодер 202 выполняет во втором списке опорных изображений поиск опорного изображения, которое находится ближе всего к текущему изображению и порядковый номер изображения которого больше порядкового номера изображения текущего изображения, где опорное изображение или порядковый номер изображения опорного изображения могут быть представлены как . Если опорные изображения POC_listX и POC_listY, которые удовлетворяют требованиям, можно найти поисковым образом, то значение индекса опорного изображения (SymRefIdxX) в первом направлении устанавливаются в значение индекса POC_listX (которое также может соответствовать опорному изображению, POC которого представляет собой POC_listX) в первом списке опорных изображений, и значение индекса опорного изображения (SymRefIdxY) во втором направлении устанавливаются равным значению индекса POC_listY (который также может соответствовать опорному изображению, чей POC равен POC_listY) во втором списке изображений. В необязательном порядке, если опорные изображения POC_listX и POC_listY, которые удовлетворяют требованиям, не могут быть найдены, то видеодекодера 202 дополнительно осуществляет поиск опорного изображения POC_listX, которое ближе всего к текущему изображению и порядковый номер изображения которого больше порядкового номера изображения текущего изображения; и видеодекодер 202 выполняет во втором списке опорных изображений поиск опорного изображения POC_listY, которое ближе всего к текущему изображению и порядковый номер изображения которого меньше, чем порядковый номер изображения текущего изображения. Если опорные изображения POC_listX и POC_listY, которые удовлетворяют требованиям, можно найти поисковым образом, то значение индекса опорного изображения (SymRefIdxX) в первом направлении устанавливается в значение индекса POC_listX в первом списке опорных изображений, и значение индекса опорного изображения (SymRefIdxY) во втором направлении устанавливают в значение индекса опорного изображения POC_listY во втором списке опорных изображений. Первое направление может соответствовать первому списку опорных изображений, второе направление может соответствовать второму списку опорных изображений и наоборот.
[00241] Поиск в первом списке опорных изображений (например, L0) опорного изображения, которое находится ближе всего к текущему изображению и порядковый номер изображения которого меньше, чем порядковым номером изображения текущего изображения, может быть синтаксически выражен посредством следующего выражения:
– DiffPicOrderCnt( currPic, RefPicList[0][i] ) > 0,
– DiffPicOrderCnt (currPic, RefPicList[0][i]) <DiffPicOrderCnt(currPic, RefPicList[0][RefIdxSymL0] )
RefIdxSymL0 установлено в i.
[00242] В первом списке опорных изображений, опорное изображение, индекс которого является RefIdxSymL0, является найденным опорным изображением.
[00243] Поиск во втором списке опорных изображений (например, L1) опорного изображения, которое находится ближе всего к текущему изображению и порядковый номер изображения которого больше, чем порядковый номер изображения текущего изображения может быть синтаксически выражен посредством использования следующего выражения:
– DiffPicOrderCnt( currPic, RefPicList[1][i] ) < 0,
– DiffPicOrderCnt( currPic, RefPicList[1][i] ) > DiffPicOrderCnt( currPic, RefPicList[1][ RefIdxSymL1] )
RefIdxSymL1 установлен в i.
[00244] Во втором списке опорных изображений, опорное изображение, индекс которого представляет собой RefIdxSymL1, является обнаруженным опорным изображением.
[00245] Поиск во втором списке опорных изображений (например, L1) опорного изображения, которое находится ближе всего к текущему изображению и порядковый номер изображения которого меньше, чем порядковый номер изображения текущего изображения, может быть синтаксически выражен посредством следующего выражения:
– DiffPicOrderCnt( currPic, RefPicList[ 1 ][ i ] ) > 0,
– DiffPicOrderCnt( currPic, RefPicList[ 1 ][ i ] ) < DiffPicOrderCnt( currPic, RefPicList[ 1 ][ RefIdxSymL1 ] ),
RefIdxSymL1 имеет значение i.
[00246] Во втором списке опорных изображений, опорное изображение, индекс которого представляет собой RefIdxSymL1, является обнаруженным опорным изображением.
[00247] Поиск в первом списке опорных изображений (например, L0) опорного изображения, которое находится ближе всего к текущему изображению и порядковый номер изображения которого больше, чем порядковым номером изображения текущего изображения, может быть синтаксически выражен посредством использования следующего выражения:
– DiffPicOrderCnt( currPic, RefPicList[ 0 ][ i ] ) < 0,
– DiffPicOrderCnt( currPic, RefPicList[ 0 ][ i ] ) > DiffPicOrderCnt( currPic, RefPicList[ 0 ][ RefIdxSymL0 ] )
RefIdxSymL0 имеет значение i.
[00248] В первом списке опорных изображений, опорное изображение, индекс которого представляет собой RefIdxSymL0, является обнаруженным опорным изображением.
[00249] В заключении, обеспечиваются политика для определения опорного изображения (или индекса). Сначала в L0 осуществляется поиск опорного изображения (или индекса) с ближайшим POC впереди, а затем в L1 осуществляется поиск опорного изображения (или индекса) с ближайшим POC позади. Если одно из опорных изображений не найдено или ни одно из опорных изображений не найдено, то тогда сначала в L1 может осуществляться поиск опорного изображения (или индекса) с ближайшим POC впереди, а затем в L0 осуществляется поиск опорного изображения (или индекса) с ближайшим POC позади. «Впереди» может указывать, что POC меньше, чем POC текущего изображения, то есть, может указывать, что конкретное опорное изображение находится перед текущим изображением в последовательности воспроизведения/последовательности отображения, а «позади» может указывать, что POC больше, чем POC текущего изображения, то есть, может указывать на то, что конкретная конкретное опорное изображение находится после текущего изображения в последовательности воспроизведения/последовательности отображения.
[00250] В этом варианте осуществления настоящей заявки, когда определено, что режим интер-предсказания является режимом двунаправленного интер-предсказания и информация о характеристиках текущего изображения удовлетворяет предварительно установленному условию, способ, в котором "видеодекодер 202 получает информацию указания" может быть тем же самым, что используется, когда определено, что режим интер-предсказания является режимом двунаправленного интер-предсказания.
[00251] Со ссылкой на вышеприведенные описания, Таблица 1 является таблицей синтаксиса, используемой видеодекодером 202 для получения информации указания в первой реализации, когда определено, что режим интер-предсказания является режимом двунаправленного интер-предсказания, и информация о характеристиках текущего изображения удовлетворяет предварительно установленному условию. prediction_unit() является синтаксической структурой блока изображения предсказания и может описывать способ определения информации о движении каждого подблока в текущем блоке.
[00252] В Таблице 1 x0 и y0 соответственно представляют смещение по горизонтали и смещение по вертикали подблока в текущем блоке относительно верхнего левого угла текущего блока, nPbW представляет ширину текущего блока, а nPbH представляет собой высоту текущего блока. Когда значение inter_pred_idc[x0][y0] равно PRED_L0, то это указывает, что интер-предсказание для текущего подблока является предсказанием впереди. Когда значение inter_pred_idc[x0][y0] равно PRED_L1, то это указывает, что интер-предсказание для текущего подблока является предсказанием позади. Когда значение inter_pred_idc[x0][y0] равно PRED_BI, это указывает, что интер-предсказание для текущего подблока является двунаправленным предсказанием.
[00253] Для двунаправленного интер-предсказания (то есть inter_pred_idc[x0][y0]==PRED_BI), если предварительно установленное условие (условия) удовлетворяются, то анализируется mv_derived_flag_l0[x0][y0]. Если значение mv_derived_flag_l0 не является первым предварительно установленным значением, то анализируется mv_derived_flag_l1[x0][y0]. Когда значение mv_derived_flag_l0 является первым предварительно установленным значением или значение mv_derived_flag_l1[x0][y0] является пятым предварительно установленным значением, то определяется информация о движении подблока текущего блока. Более конкретно, определяются значение индекса опорного изображения ref_idx_l0[x0][у0], флаг предиктора вектора движения mvp_l0_flag[x0][у0], и разность вектора движения mvd_coding (х0, у0, 0).
Таблица 1.
prediction_unit(x0, y0, nPbW, nPbH) {
…
/* кодирование вектора движения */
if( slice_type==B )
inter_pred_idc[x0][y0]
if( inter_pred_idc[x0][y0]==PRED_L0 ) {
if( num_ref_idx_l0_active_minus1 > 0 )
ref_idx_l0[x0][y0]
mvd_coding( x0, y0, 0 )
mvp_l0_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_L1 ) {
if( num_ref_idx_l1_active_minus1 > 0 )
ref_idx_l1[x0][y0]
mvd_coding( x0, y0, 1)
mvp_l1_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_BI ) {
if( conditions ) {
mv_derived_flag_l0[x0][y0]
if( !mv_derived_flag_l0[x0][y0]) {
mv_derived_flag_l1[x0][y0]
}
if( !mv_derived_flag_l0[x0][y0]) {
if( num_ref_idx_l0_active_minus1 > 0 )
ref_idx_l0[x0][y0]
mvd_coding( x0, y0, 0 )
mvp_l0_flag[x0][y0]
}
if( !mv_derived_flag_l1[x0][y0]) {
if( num_ref_idx_l1_active_minus1 > 0 )
ref_idx_l1[x0][y0]
mvd_coding(x0, y0, 0 )
mvp_l1_flag[x0][y0]
}
}
[00254] Со ссылкой на вышеприведенные описания, Таблица 2 является таблицей синтаксиса, используемой видеодекодером 202 для получения информации указания в третьей реализации, когда определено, что режим интер-предсказания является режимом двунаправленного интер-предсказания, и информация о характеристиках текущего изображения удовлетворяет предварительно установленному условию.
[00255] В Таблице 2 для двунаправленного интер-предсказания (то есть inter_pred_idc[x0][y0]==PRED_BI), если предварительно установленное условие (условия) удовлетворяются, то анализируется derived_mv_flag[x0][y0]. Если значение derived_mv_flag[x0][y0] является вторым предварительно установленным значением, определяется информация о движении подблока текущего блока. Более конкретно, определяются значение индекса опорного изображения ref_idx_lx[x0][у0], флаг предиктора вектора движения mvp_lx_flag[x0][у0], и разность вектора движения mvd_coding (х0, у0, х).
Таблица 2.
prediction_unit(x0, y0, nPbW, nPbH) {
…
/* кодирование вектора движения */
if( slice_type==B )
inter_pred_idc[x0][y0]
if( inter_pred_idc[x0][y0]==PRED_L0 ) {
if( num_ref_idx_l0_active_minus1 > 0 )
ref_idx_l0[x0][y0]
mvd_coding( x0, y0, 0 )
mvp_l0_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_L1 ) {
if( num_ref_idx_l1_active_minus1 > 0 )
ref_idx_l1[x0][y0]
mvd_coding( x0, y0, 1)
mvp_l1_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_BI ) {
if( conditions ) {
derived_mv_flag[ x0 ][ y0 ]
if( derived_mv_flag[x0][y0] ) {
if( num_ref_idx_lx_active_minus1 > 0 )
ref_idx_lx[ x0 ][ y0 ]
mvd_coding( x0, y0, x )
mvp_lx_flag[ x0 ][ y0 ]
} else {
……
}
}
[00256] Со ссылкой на вышеизложенное описание, Таблица 3 является таблицей синтаксиса, используемой видеодекодером 202 для получения информации указания в четвертой реализации, когда определено, что режим интер-предсказания является режимом двунаправленного интер-предсказания, и информация о характеристиках текущего изображения удовлетворяет предварительно установленному условию.
[00257] В Таблице 3 для двунаправленного интер-предсказания (то есть inter_pred_idc[x0][y0] == PRED_BI), если предварительно установленное условие (условия) удовлетворяются, то анализируется derived_mv_flag[x0][y0]. Если значение derived_mv_flag[x0][y0] является четвертым предварительно установленным значением, то определяется derived_ref_num, а когда значение derived_ref_num больше 1, определяется информация о движении подблока текущего блока. Более конкретно, определяются значение индекса опорного изображения ref_idx_lx[x0][у0], флаг предиктора вектора движения mvp_lx_flag[x0][у0], и разность вектора движения mvd_coding(х0, у0, х).
Таблица 3.
prediction_unit(x0, y0, nPbW, nPbH) {
…
/* кодирование вектора движения */
if( slice_type==B )
inter_pred_idc[x0][y0]
if( inter_pred_idc[x0][y0]==PRED_L0 ) {
if( num_ref_idx_l0_active_minus1 > 0 )
ref_idx_l0[x0][y0]
mvd_coding( x0, y0, 0 )
mvp_l0_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_L1 ) {
if( num_ref_idx_l1_active_minus1 > 0 )
ref_idx_l1[x0][y0]
mvd_coding( x0, y0, 1)
mvp_l1_flag[x0][y0]
}
if( inter_pred_idc[x0][y0]==PRED_BI ) {
if( conditions ) {
derived_mv_flag[x0][y0]
if( derived_mv_flag[x0][y0] ) {
if(num_ref_idx_lx_active_minus1>0 && derived_ref_num > 1)
ref_idx_lx[x0][y0]
mvd_coding(x0, y0, x )
mvp_lx_flag[x0][y0]
} else {
……
}
}
[00258] Первый идентификатор, второй идентификатор, третий идентификатор и четвертый идентификатор все могут быть установлены предварительно или могут быть указаны в синтаксисе более высокого уровня, например, в наборе параметров, таком как SPS, PPS, заголовок среза (slice header) или заголовок сегмента слайса (slice segment header).Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00259] Видеодекодер 202 получает информацию указания при определении того, что режим интер-предсказания является режимом двунаправленного интер-предсказания, и информация о характеристиках текущего изображения удовлетворяет предварительно установленному условию. Это эффективно улучшает скорость декодирования видеодекодера 202 и снижает избыточность информации.
[00260] S401: Видеодекодер 202 получает первую информацию о движении.
[00261] В необязательном порядке, видеодекодер 202 анализирует битовый поток, чтобы получить значение индекса первого опорного изображения, флаг предиктора первого вектора движения и разность первого вектора движения, то есть, чтобы получить первую информацию о движении. Флаг предиктора первого вектора движения используется для указания значения индекса первого предсказанного вектора движения в первом списке предсказанных потенциально подходящих векторов движения, первый предсказанный вектор движения является предсказанным вектором движения текущего блока в первом направлении, разность первого вектора движения - это разность между первым предсказанным вектором движения и первым вектором движения, и первый вектор движения является вектором движения текущего блока в первом направлении.
[00262] В необязательном порядке, опорное изображение на первом месте в списке опорных изображений, как правило, является изображением, которое ближе всего к текущему изображению. Таким образом, значение индекса ref_lX_idx первого опорного изображения может быть непосредственно установлено в 0.
[00263] В необязательном порядке, если видеодекодер 202 решает, в соответствии с предварительно установленным условием В или С, получить информацию указания, то видеодекодер 202 может установить значение индекса ref_lX_idx первого опорного изображения в предварительно установленное значение SymRefIdxX. Например, когда предварительно установленное условие В или С удовлетворено, может быть получена информация указания, и значение индекса ref_lX_idx первого опорного изображения может быть установлено в предварительно установленное значение SymRefIdxX. X может быть 0 или 1.
[00264] В необязательном порядке, первый список предсказанных потенциально подходящих векторов движения строится на основе значения индекса первого опорного изображения. В частности, в процессе построения первого списка предсказанных потенциально подходящих векторов движения получается вектор движения соседнего блока декодированного изображения текущего блока. Порядковый номер изображения первого опорного изображения определяется на основе значения индекса первого опорного изображения и первого списка опорных изображений. Если порядковый номер изображения опорного изображения соседнего декодированного блока изображения отличается от порядкового номера изображения первого опорного изображения, то вектор движения соседнего декодированного блока изображения должен быть отмасштабирован, чтобы указывать на первое опорное изображение, и затем добавляется в первый список предсказанных потенциально подходящих векторов движения.
[00265] В каждой из таблиц синтаксиса, показанных в Таблицах с 1 по 3, видеодекодер 202 определяет информацию о движении подблока текущего блока в первом направлении.
[00266] S402: Видеодекодер 202 определяет вторую информацию о движении на основе первой информации о движении.
[00267] В первой реализации способ, используемый видеодекодером 202 для определения второй информации о движении, выглядит следующим образом: Видеодекодер 202 выбирает значение индекса (который также может быть кратко упоминается в качестве индекса) первого опорного изображения из первой информации о движении, и определяет порядковый номер изображения первого опорного изображения на основе значения индекса первого опорного изображения и списка первого опорного изображения; вычисляет порядковый номер изображения второго опорного изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с предварительно установленной формулой; определяет значение индекса второго опорного изображения на основе порядкового номера изображения второго опорного изображения и второго списка опорных изображений; и определяет вторую информацию о движении на основе первой информации о движении и индекса второго опорного изображения.
[00268] Здесь предварительно установленная формула может иметь вид POC_listY=2 * POC_Cur-POC_listX. POC_Cur представляет собой порядковый номер изображения текущего изображения, POC_listX представляет собой порядковый номер изображения первого опорного изображения и POC_listY представляет собой порядковый номер изображения второго опорного изображения.
[00269] Например, если порядковый номер изображения текущего изображения составляет 4, порядковый номер изображения первого опорного изображения равен 2, второй список опорных изображений представляет собой {6, 8}, и определено, в соответствии с формулой POC_listY=2 * POC_Cur-POC_listX, что порядковый номер изображения второго опорного изображения равен 6, то видеодекодер 202 определяет, что значение индекса ref_lY_idx второго опорного изображения равно 0.
[00270] В необязательном порядке, предварительно установленная формула может альтернативно быть (POC_Cur-POC_listX) * (POC_listY-POC_Cur)>0. Следует отметить, что, если порядковый номер изображения из множества опорных изображений во втором списке опорных изображений удовлетворяет формуле, то видеодекодер 202 сначала выбирает опорное изображение с минимальным abs((POC_listY-POC_Cur) - (POC_Cur-POC_listX )), а затем выбирает опорное изображение с минимальным abs(POC_listY-POC_Cur), чтобы определить значение индекса второго опорного изображения. Здесь abs - это функция абсолютного значения.
[00271] Например, если порядковый номер изображения текущего изображения составляет 4, порядковый номер изображения первого опорного изображения равен 2, второй список опорных изображений представляет собой {5, 7, 8}, и определено, в соответствии с формулой (POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0, что порядковый номер изображения второго опорного изображения равен 5, то видеодекодер 202 определяет, что значение индекса ref_lY_idx второго опорного изображения равно 0.
[00272] В необязательном порядке, предварительно установленная формула может альтернативно иметь вид POC_listX ≠ POC_listY. Следует отметить, что, если порядковый номер изображения из множества опорных изображений во втором списке опорных изображений удовлетворяет формуле, то видеодекодер 202 сначала выбирает опорное изображение с минимальным abs((POC_listY-POC_Cur) - (POC_Cur-POC_listX)), а затем выбирает опорное изображение с минимальным abs(POC_listY-POC_Cur), чтобы определить значение индекса второго опорного изображения. Здесь abs - это функция абсолютного значения.
[00273] Например, если порядковый номер изображения текущего изображения составляет 4, порядковый номер изображения первого опорного изображения равен 2, второй список опорных изображений представляет собой {3, 2, 1, 0}, и определено, согласно формуле POC_listX ≠ POC_listY, что порядковый номер изображения второго опорного изображения равен 3, то видеодекодер 202 определяет, что значение индекса ref_lY_idx второго опорного изображения равно 0.
[00274] В необязательном порядке, предварительно установленная формула или условие может альтернативно иметь вид POC_listY0=2*POC_Cur-POC_listX, (POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0 и POClistX ≠ POClistY0". Необязательный случай: должны быть выполнены все три условия. В этом случае способ, используемый видеодекодером 202, чтобы определить значение индекса второго опорного изображения конкретно представляет собой: вычисление первого порядкового номера изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с формулой POC_listY0=2 * POC_Cur-POC_listX, где POC_Cur представляет порядковый номер изображения текущего изображения, POC_listX представляет собой порядковый номер изображения первого опорного изображения и POC_listY0 представляет собой первый порядковый номер изображения; и когда второй список опорных изображений включает в себя первый порядковый номер изображения, определение, в качестве значения индекса второго опорного изображения, номера опорного изображения, представленного первым порядковым номером изображения во втором списке опорных изображений; или когда второй список опорных изображений не включает в себя первый порядковый номер изображения, вычисление второго порядкового номера изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с (POC_Cur-POC_listX)* (POC_listY0'-POC_Cur)>0, где POC_listY0' представляет собой второй порядковый номер изображения, а когда второй список опорных изображений включает в себя второй порядковый номер изображения, определение, в качестве значения индекса второго опорного изображения, порядкового номера изображения, представленного вторым порядковым номером изображения во втором списке опорных изображений, или когда второй список опорных изображений не включает в себя второй порядковый номер изображения, вычисление третьего порядкового номера изображения на основе порядкового номера изображения текущего изображения и порядкового номера изображения первого опорного изображения в соответствии с условием POC_listX ≠ POC_listY0", где POC_listY0" представляет собой третий порядковый номер изображения, и определение, в качестве значения индекса второго опорного изображения, номера опорного изображения, представленный третьим порядковым номером изображения во втором списке опорных изображений.
[00275] В необязательном порядке, опорное изображение на первом месте в списке опорных изображений, как правило, является изображением, которое ближе всего к текущему изображению. Таким образом, значение индекса ref_lY_idx второго опорного изображения может быть непосредственно установлено в 0. Установка в 0 означает указание на первое место в списке опорных изображений.
[00276] В необязательном порядке, если видеодекодер 202 определяет, в соответствии с предварительно установленным условием В или С, получать ли информацию указания, видеодекодер 202 может установить значение индекса ref_lY_idx второго опорного изображения в предварительно установленное значение SymRefIdxY. Например, когда предварительно установленное условие В или С удовлетворено, информация указания может быть получена, и значение индекса ref_lY_idx второго опорного изображения может быть установлено в предварительно установленное значение SymRefIdxY.
[00277] Во второй реализации способ, используемый видеодекодером 202 для определения второй информации о движении, выглядит следующим образом: Видеодекодер 202 анализирует битовый бит, чтобы получить значение индекса второго опорного изображения, и определяет вторую информацию движения на основе первой информации о движении и значении индекса второго опорного изображения. Значение индекса второго опорного изображения может быть заранее, или может быть задано в наборе параметров, таком как SPS, PPS, заголовок среза (slice header) или заголовок сегмента слайса (slice segment header). Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00278] Может быть понятно, что, как в первом варианте осуществления и втором варианте осуществления, видеодекодер 202 определяет вторую информацию движения на основе первой информации о движении и значение индекса второго опорного изображения.
[00279] В необязательном порядке, видеодекодер 202 может вычислить всю информацию о движении текущего блока во втором направлении или может вычислить некоторую информацию о движении текущего блока во втором направлении.
[00280] Ниже описан процесс, в котором видеодекодер 202 определяет вторую информацию движения на основе первой информации о движении и значении индекса второго опорного изображения.
[00281] В необязательном порядке, способ, в котором «видеодекодер 202 определяет вторую информацию движения на основе первой информации о движении и значении индекса второго опорного изображения» может представлять собой: получение значения индекса первого опорного изображения в первой информации о движении и определение порядкового номера изображения первого опорного изображения на основе значения индекса первого опорного изображения и первого списка опорных изображений; получение значения индекса второго опорного изображения и определение порядкового номера изображения второго опорного изображения на основе значения индекса второго опорного изображения и второго списка опорных изображений; определение первого вектора движения (вектора движения текущего блока в первом направлении) на основе разности первого вектора движения и флага предиктора первого вектора движения, которые находятся в первой информации о движении; и определение второго вектора движения во второй информации о движении согласно следующей формуле:
.
[00282] При этом, представляет второй вектор движения, представляет собой порядковый номер изображения текущего изображения, представляет собой порядковый номер изображения первого опорного изображения, представляет собой порядковый номер изображения второго опорного изображения, представляет собой первый вектор движения, и второй вектор движения является вектором движения текущего блока во втором направлении.
[00283] Видеодекодер 202 создает список потенциально подходящей информации о движении таким же образом, как и способ, которым сторона кодера создает список потенциально подходящей информации о движении в режиме AMVP или режиме объединения, и определяет первый предсказанный вектор движения в списке потенциально подходящей информации о движении на основе флага предиктора первого вектора движения. Таким образом, видеодекодер 202 может определять сумму первого предсказанного вектора движения и разности первого вектора движения в качестве первого вектора движения.
[00284] В необязательном порядке, когда первое опорное изображение является опорным изображением впереди текущего блока, а второе опорное изображение является опорным изображением позади текущего блока, или когда первое опорное изображение является опорным изображением позади текущего блока, а второе опорное изображение является опорным изображением впереди текущего блока, или когда каждое из первого опорного изображения и второго опорного изображения является опорным изображением впереди текущего блока, или когда каждое из первого опорного изображения и второго опорного изображения является опорным изображением позади текущего блока, видеодекодер 202 может напрямую установить mv_lY = -mv_lX.
[00285] В необязательном порядке, видеодекодер 202 не может определить вышеприведенную ситуацию касаемо опорного изображения впереди и опорного изображения позади, но может непосредственно установить mv_lY = -mv_lX.
[00286] Так, например, оба случая, когда «первое опорное изображение является опорным изображением впереди текущего блока и второе опорное изображение является опорным изображением позади текущего блока» и «первое опорное изображением является опорным изображением позади текущего блока и второе опорное изображение является опорным изображением впереди текущего блока», могут быть представлены с использованием формулы (POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0, или могут быть представлены с использованием формулы POC_listY=2*POC_Cur-POC_listX. Другими словами, обе формулы могут указывать, что один из первого опорного изображения и второго опорного изображения находится перед текущим изображением во временной последовательности, а другой находится после текущего изображения во временной последовательности.
[00287] Оба случая, когда «каждое из первого опорного изображения и второго опорного изображения является опорным изображением впереди текущего блока» и «каждое из первого опорного изображения и второго опорного изображения является опорным изображением позади текущего блока», могут быть представлены с использованием формулы (POC_Cur-POC_listX) * (POC_listY-POC_Cur)<0.
[00288] В необязательном порядке, способ, в котором «видеодекодер 202 определяет вторую информацию движения на основе первой информации о движении и значении индекса второго опорного изображения» может представлять собой: получение значения индекса первого опорного изображения и разности первого вектора движения, которые находятся в первой информации о движении, и определения порядкового номера изображения первого опорного изображения на основе значения индекса первого опорного изображения и первого списка опорных изображений; получение значения индекса второго опорного изображения, определение порядкового номера изображения второго опорного изображения на основе значения индекса второго опорного изображения и второго списка опорных изображений, и определение второго предсказанного вектора движения на основе значения индекса второго опорного изображения и второго списка потенциально подходящих предсказанных векторов движения, где второй предсказанный вектор движения является предсказанным вектором движения текущего блока во втором направлении; определение разности второго вектора движения во второй информации о движении согласно следующей формуле:
, где
представляет разность второго вектора движения, представляет собой порядковый номер изображения текущего изображения, представляет собой порядковый номер изображения первого опорного изображения, представляет собой порядковый номер изображения второго опорного изображения, и представляет собой разность первого вектора движения; и определение второго вектора движения на основе второго предсказанного вектора движения и разности второго вектора движения, где второй вектор движения является вектором движения текущего блока во втором направлении.
[00289] В необязательном порядке, второй список потенциально подходящих предсказанных векторов движения создается на основе значения индекса второго опорного изображения. В частности, в процессе построения второго списка предсказанных потенциально подходящих векторов движения получается вектор движения соседнего декодированного блока изображения текущего блока. Порядковый номер изображения второго опорного изображения определяется на основе значения индекса второго опорного изображения и второго списка опорных изображений. Если порядковый номер изображения опорного изображения соседнего декодированного блока изображения отличается от порядкового номера изображения второго опорного изображения, то вектор движения соседнего декодированного блока изображения должен быть отмасштабирован для указания на второе опорное изображение, и затем добавлен во второй список предсказанных потенциально подходящих векторов движения.
[00290] В необязательном порядке, когда первое опорное изображение является опорным изображением впереди текущего блока, а второе опорное изображение является опорным изображением позади текущего блока, или когда первое опорное изображение является опорным изображением позади текущего блока, а второе опорное изображение является опорным изображением впереди текущего блока, или когда каждое из первого опорного изображения и второго опорного изображения является опорным изображением впереди текущего блока, или когда каждое из первого опорного изображения и второго опорного изображения является опорным изображением позади текущего блока, видеодекодер 202 может напрямую установить mvd_lY = -mvd_lX. Например, если (POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0, POC_listY=2*POC_Cur-POC_listX или (POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0, видеодекодер 202 напрямую устанавливает mvd_lY = -mvd_lX.
[00291] В необязательном порядке, видеодекодер 202 не может определить вышеприведенную ситуацию касаемо опорного изображения впереди и опорного изображения позади, но может непосредственно установить mvd_lY = -mvd_lX.
[00292] Получается , и затем второй вектор движения может быть определен на основе второго предсказанного вектора движения и разности второго вектора движения. В этом способе, выведение разности второго вектора движения не связано с порядковым номером изображения опорного изображения.
[00293] В заключение, в этом варианте осуществления настоящего изобретения второй вектор движения может быть выведен на основе первого вектора движения, или разность второго вектора движения может быть выведена на основе разности первого вектора движения, так что могут быть получены первый вектор движения и второй вектор движения. Следует понимать, что как получение предиктора вектора движения, так и вычисление вектора движения относятся к уровню техники, и подробности здесь не описываются.
[00294] S403: Видеодекодер 202 определяет дискретный отсчет предсказания текущего блока на основе первой информации о движении и второй информации о движении.
[00295] В необязательном порядке, видеодекодер 202 определяет первый вектор движения и второй вектор движения на этапе S402. Таким образом, видеодекодер 202 может определить первый опорный блок изображения на основе первого вектора движения, значения индекса первого опорного изображения и первого списка опорных изображений, и определить второй опорный блок изображения на основе второго вектора движения, значения индекса второго опорного изображения и второго списка опорных изображений. Кроме того, видеодекодер 202 определяет дискретный отсчет предсказания текущего блока на основе первого блока опорного изображения и второго блока опорного изображения. Другими словами, видеодекодер 202 завершает процесс компенсации движения.
[00296] Для способа, используемого видеодекодера 202, чтобы определить дискретный отсчет предсказания текущего блока на основе первого блока опорного изображения и второго блока опорного изображения, относятся к любому существующему способу. Это не является конкретно ограниченным в этом варианте осуществления настоящей заявки.
[00297] В способе двунаправленного интер-предсказания, предусмотренном в этом варианте осуществления настоящей заявки, видеодекодер 202 может получать только первую информацию о движении из кодированного битового потока. После получения первой информации о движении видеодекодер 202 вычисляет вторую информацию о движении на основе первой информации о движении и дополнительно определяет дискретный отсчет предсказания текущего блока на основе первой информации о движении и второй информации о движении. По сравнению с предшествующим уровнем техники в способе, представленном в настоящей заявке, больше не требуется передавать информацию о движении всех блоков изображения во всех направлениях. Это эффективно уменьшает объем передаваемой информации о движении и улучшает эффективное использование ресурсов передачи, скорость передачи и эффективность сжатия кодирования.
[00298] Способ двунаправленного интер-предсказания, показанный на Фиг.4 описывается для текущего блока, то есть может пониматься как выполнение интер-предсказания для текущего блока на основе режима AMVP.
[00299] Легко понять, что способ двунаправленного интер-предсказания, представленный в настоящей заявке, также применим к режиму предсказания модели непоступательной движения, например, 4-параметрической модели движения с аффинным преобразованием, 6-параметрической модели движения с аффинным преобразованием или 8-параметрической модели билинейного движения. В этом сценарии текущий блок включает в себя по меньшей мере один подблок, а информация о движении текущего блока включает в себя информацию о движении каждого из всех подблоков текущего блока. Способ, используемый видеодекодером 202 для определения информации о движении (информации о движении в первом направлении и информация о движении во втором направлении) каждого подблока, аналогичен способу, используемому видеодекодером 202 для определения информации о движении текущего блока.
[00300] В режиме предсказания модели непоступательного движения видеодекодер 202 вычисляет вектор движения i-й контрольной точки во втором направлении на основе вектора движения i-й контрольной точки в первом направлении согласно следующей формуле:
.
[00301] В этой формуле представляет вектор движения i-й контрольной точки во втором направлении, представляет вектор движения i-й контрольной точки в первом направлении, представляет порядковый номер изображения текущего изображения, представляет порядковый номер изображения второго опорного изображения, и представляет порядковый номер изображения первого опорного изображения.
[00302] Соответственно, видеодекодер 202 вычисляет разность вектора движения i-й контрольной точки во втором направлении на основе разности вектора движения i-й контрольной точки в первом направлении согласно следующей формуле:
.
[00303] В этой формуле представляет разность вектора движения i-й контрольной точки во втором направлении, представляет разность вектора движения i-й контрольной точки в первом направлении, представляет собой порядковый номер изображения текущего изображения, порядковый номер изображения второго опорного изображения, и представляет порядковый номер изображения первого опорного изображения.
[00304] В соответствии с видеодекодером 202, в этом варианте осуществления настоящей заявки, видеокодер 102 выполняет оценку двунаправленного движения для текущего блока, чтобы определить информацию о движении текущего блока в первом направлении, и вычисляет информацию о движении для текущего блока во втором направлении на основе информации о движении текущего блока в первом направлении. Таким образом, видеокодер 102 определяет блок изображения предсказания текущего блока на основе информации о движении текущего блока в первом направлении и информации о движении текущего блока во втором направлении. Затем видеокодер 102 выполняет такие операции, как преобразование и квантование остатка между текущим блоком и блоком изображения предсказания текущего блока, чтобы сгенерировать битовый поток, и отправляет битовый поток в видеодекодер 202. Битовый поток включает в себя информацию о движении текущего блока в первом направлении. Кроме того, битовый поток может включать в себя информацию указания, используемую для указания вычислить информацию о движении во втором направлении на основе информации о движении в первом направлении.
[00305] Для способа, в котором «видеокодер 102 вычисляет информацию о движении текущего блока во втором направлении на основе информации о движении текущего блока в первом направлении», обратитесь к вышеизложенному способу, в котором «видеодекодер 202 определяет вторую информацию о движении на основе первой информации о движении», то есть см. описание этапа S402. Подробности не описаны в настоящей заявке.
[00306] Согласно содержимому, описанному выше, может быть получен способ двунаправленного интер-предсказания в настоящем изобретении. Со ссылкой на Фиг.5A, способ включает в себя следующие этапы.
[00307] S500: Получение первого идентификатора из битового потока, где значение первого идентификатора является первым предварительно установленным значением (включая, но не ограничиваясь, 1 или 0).
[00308] Когда значение первого идентификатора является первым предварительно установленным значением, первый идентификатор может быть использован для указания определить индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, и определить индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений.
[00309] В этом случае декодер может получить индекс опорного изображения без анализа битового потока, и индекс опорного изображения даже не должен быть передан в битовом потоке. Следует понимать, что S500 может происходить раньше S501. В некоторых примерах S500 не может использоваться как необходимое условие S501. Это не ограничено в настоящем изобретении.
[00310] S501: Определение индекса i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, где POC, соответствующий индексу i1 опорного изображения, меньше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i1 опорного изображения, из POC текущего изображения, меньше разности, полученной посредством вычитания POC, соответствующего индексу ix опорного изображения, из POC текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, кроме индекса i1 опорного изображения из индексов опорных изображений в первом списке опорных изображений, и POC, соответствующий индексу ix опорного изображения, меньше, чем POC текущего изображения. Конкретно, POC, соответствующий индексу i1 опорного изображения является POC, ближе к POC текущего изображения, во всех POC, которые находятся в первом списке опорных изображений и которые меньше, чем POC текущего изображения.
[00311] Вот примеры:
[00312] Пример А:
[00313] POC текущего изображения, в котором расположен текущий блок, равен 8, b текущее изображение имеет два списка опорных изображений: L0 {2, 3, 5, 6} (где 2, 3, 5 и 6 могут представлять POC опорных изображений в L0) и L1 {9, 10, 11} (где 9, 10 и 11 могут представлять POC опорных изображений в L1).
[00314] Для L0, 2, 3, 5 и 6 все меньше 8, но 6 ближе к 8, чем 2, 3 и 5. Индекс опорного изображения, соответствующего 6 в L0, составляет 3 (то есть, четвертый элемент в списке). Следовательно, i1=3.
[00315] Пример B:
[00316] POC текущего изображения, в котором расположен текущий блок, равен 7, b текущее изображение имеет два списка опорных изображений: L0 {9, 10, 12} (где 9, 10 и 12 могут представлять POC опорных изображений в L0) и L1 {2, 4, 5} (где 2, 4 и 5 могут представлять POC опорных изображений в L1 ).
[00317] В необязательном порядке, в L0 не обнаруживается POC меньше 7. В этом случае в L1 может искаться POC, который меньше 7 и ближе всего к 7, а в L0 ищется POC, который больше 7 и ближе всего к 7 (подробности см. в примере B в S502).
[00318] Для L1, 2, 4 и 5 все меньше 7, но 5 ближе к 7, чем 2 и 4. Индекс опорного изображения, соответствующий 5 в L0, равен 2 (то есть, третий элемент в списке). Следовательно, i1=2.
[00319] Пример С:
[00320] POC текущего изображения, в котором расположен текущий блок, равен 7, и текущее изображение имеет два списка опорных изображений: L0 {2, 4, 5, 8} (где 2, 4, 5 и 8 могут представлять POC опорных изображений в L0) и L1 {6, 9, 10} (где 6, 9 и 10 могут представлять POC опорных изображений в L1).
[00321] Для L0, 2, 4 и 5 все меньше 7, но 5 ближе к 7, чем 2 и 4. Индекс опорного изображения, соответствующий 5 в L0, равен 2 (то есть, третий элемент в списке). Следовательно, i1=2.
[00322] S502: Определение индекса i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, где POC, соответствующий индексу i2 опорного изображения, больше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i2 опорного изображения, из POC текущего изображения, больше разности, полученной посредством вычитания POC, соответствующего индексу iy опорного изображения, из POC текущего изображения, индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из первого списка опорных изображений и POC, Соответствующий индексу iy опорного изображения, больше, чем POC текущего изображения. Конкретно, POC, соответствующий индексу i2 опорного изображения является POC, который ближе к POC текущего изображения, во всех POC, которые во втором списке опорных изображений и которые больше, чем POC текущего изображения.
[00323] Списки опорных изображений в S501 все еще используются в качестве примера.
[00324] Пример А:
[00325] Для L1 все 9, 10 и 11 больше 8, но 9 ближе к 8, чем 10 и 11. Индекс опорного изображения, соответствующий 9 в L1, равен 0 (то есть, первый элемент в списке). Следовательно, i2=0.
[00326] Пример B:
[00327] Для L0 все 9, 10 и 12 больше 7, но 9 ближе к 7, чем 10 и 12. Индекс опорного изображения, соответствующий 9 в L0, равен 0 (то есть, первый элемент в списке). Следовательно, i2=0.
[00328] Пример С:
[00329] POC текущего изображения, в котором расположен текущий блок, равен 7, и текущее изображение имеет два списка опорных изображений: L0 {2, 4, 5, 8} (где 2, 4, 5 и 8 могут представлять POC опорных изображений в L0) и L1 {6, 9, 10} (где 6, 9 и 10 могут представлять POC опорных изображений в L1).
[00330] Для L1 значения 9 и 10 больше 7, но 9 ближе к 7, чем 10. Индекс опорного изображения, соответствующий 9 в L1, равен 1 (то есть, второй элемент в списке). Следовательно, i2=1.
[00331] Следует понимать, что последовательность выполнения S501 и S502 не ограничена в настоящей заявке, и взаимосвязь временной последовательности на чертеже является просто примером.
[00332] Следует понимать, что в возможной конкретной реализации элементы в списке опорных изображений могут быть некоторыми метками, включающими в себя, но не ограничиваясь этим, порядковые номера изображений (POC) опорных изображений. Один порядковый номер изображения может соответствовать одному конкретному опорному изображению и/или индексу местоположения опорного изображения в списке опорных изображений, то есть, индексу опорного изображения. В возможной конкретной реализации элементы в списке опорных изображений могут быть изображениями (опорными изображениями). Одно изображение может соответствовать одному конкретному POC и индексу местоположения изображения в списке опорных изображений, то есть индексу опорных изображений.
[00333] Следует понимать, что S501 и S502 обеспечивают способ определения индекса опорного изображения текущего блока. Более конкретно, битовый поток не нужно анализировать, но индекс опорного изображения текущего блока определяется в соответствии с условиями некоторых ограничений. Условия ограничения, предусмотренные в настоящем изобретении, являются просто примером для описания и не составляют ограничения. В конкретном процессе реализации могут быть вариации условий ограничения или могут быть другие условия ограничения, например, некоторые условия ограничения в стандартном развитии, которые не исчерпывающе перечислены в настоящем изобретении.
[00334] Следует понимать, что последовательность L0 и L1 не составляет ограничения, то есть взаимосвязь последовательностей между первым списком опорных изображений и вторым списком опорных изображений не должна составлять ограничение. Первый список опорных изображений может соответствовать первому направлению, а второй список опорных изображений может соответствовать второму направлению. Первое направление и второе направление могут быть, соответственно, направлением вперед и направлением назад, или направлением назад и направлением вперед, или и первое направление, и второе направление могут быть направлениями вперед или направлениями назад. Направление также может пониматься как временная последовательность и не ограничивается в настоящем изобретении.
[00335] Настоящее изобретение также обеспечивает политику для определения опорного изображения (или индекса). В L0 сначала ищется опорное изображение (или индекс i1 опорного изображения) с ближайшим POC впереди, а затем в L1 ищется опорное изображение (или индекс i2 опорного изображения) с ближайшим POC позади. Если одно из опорных изображений не найдено или ни одно из опорных изображений не найдено, то сначала в L1 может искаться опорное изображение (или индекс i2 опорного изображения) с ближайшим POC впереди, а затем в L0 ищется опорное изображение (или индекс i1 опорного изображения) с ближайшим POC позади.
[00336] Индекс первого опорного изображения и индекс второго опорного изображение соответствуют опорным изображениям, в которых расположены оптимальные опорных блоки текущего блока, то есть, ref_idx_l0 и ref_idx_l1 или ref_idx_l1 и ref_idx_l0.
[00337] В необязательном порядке, для другой реализации, следует обратиться к способом определения индекса опорного изображения в S400. Подробности не описаны здесь снова.
[00338] S503: Предсказание текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения, где текущее изображение включает в себя текущий блок.
[00339] В необязательном порядке, способ дополнительно включает в себя:
получение первого предсказанного вектора движения и второго предсказанного вектора движения;
определение первого вектора движения на основе первого предсказанного вектора движения и разности первого вектора движения; и
определение второго вектора движения на основе второго предсказанного вектора движения и разности второго вектора движения.
[00340] Соответственно, предсказание текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения может включать в себя: предсказание текущего блока на основе индекса первого опорного изображения, индекса второго опорного изображения, первого списка опорных изображений, второго списка опорных изображений, первого вектора движения и второго вектора движения. На этом этапе может использоваться общий способ предсказания из предшествующего уровня техники.
[00341] В возможном варианте реализации, когда первый идентификатор является первым предварительно установленным значением, первый идентификатор дополнительно используется для указания определить разность второго вектора движения текущего блока на основе разности первого вектора движения текущего блока. В этом случае разность второго вектора движения может быть выведена на основе разности первого вектора движения, и разность второго вектора движения не требуется передавать в битовом потоке, тем самым уменьшая битовый поток. В этом случае разность первого вектора движения текущего блока может быть получена первой, а разность второго вектора движения текущего блока получается на основе разности первого вектора движения согласно следующей формуле:
mvd_lY = -mvd_lX.
[00342] Здесь mvd_lY представляет разность второго вектора движения, mvd_lX представляет разность первого вектора движения, одна из разности первого вектора движения и разности второго вектора движения принадлежит информации о движении, соответствующей первому списку опорных изображений, а другая из разности первого вектора движения и разности второго вектора движения принадлежит информации о движении, соответствующей второму списку опорных изображений.
[00343] В заключении, согласно способу двунаправленного интер-предсказания, предоставленному в настоящей заявке, в течение двунаправленного интер-предсказания не требуется передавать информацию о движении всех блоков изображения во всех направлениях, а необходимо передавать только информацию о движении в конкретном направлении. Это эффективно уменьшает объем передаваемой информации о движении и улучшает эффективное использование ресурсов передачи, скорость передачи и эффективность сжатия кодирования.
[00344] Вариант осуществления настоящей заявки обеспечивает устройство двунаправленного интер-предсказания. Устройство двунаправленного интер-предсказания может быть видеодекодером. В частности, устройство двунаправленного интер-предсказания выполнено с возможностью выполнения этапов, выполняемых видеодекодером 202 в вышеупомянутом способе двунаправленного интер-предсказания. Устройство двунаправленного интер-предсказания, представленное в этом варианте осуществления настоящей заявки, может включать в себя модули для соответствующих этапов.
[00345] В вариантах осуществления настоящей заявки устройство двунаправленного интер-предсказания может быть разделено на функциональные модули на основе приведенных выше примеров способов. Например, каждый функциональный модуль может быть получен посредством разделения на основе соответствующей функции, или две или более функций могут быть интегрированы в один модуль обработки. Интегрированный модуль может быть реализован в виде аппаратного обеспечения или может быть реализован в виде программного функционального. В вариантах осуществления настоящей заявки разделение на модули является примером и представляет собой просто логическое разделение функций. В реальной реализации может быть другой способ разделения.
[00346] Когда каждый функциональный модуль получается посредством разделения на основе соответствующей функции, то на Фиг.5B показана возможная схематическая структурная схема устройства двунаправленного интер-предсказания в вышеупомянутых вариантах осуществления. Как показано на Фиг.5B, устройство 5 двунаправленного интер-предсказания включает в себя модуль 50 получения и модуль 51 определения.
[00347] Модуль 50 получения выполнен с возможностью поддержки устройства двунаправленного интер-предсказания при выполнении S400, S401 и т.п. в вышеупомянутом варианте осуществления и/или другом процессе технологии, описанной в этом описании.
[00348] Модуль 51 определения выполнен с возможностью поддержки устройства двунаправленного интер-предсказания при выполнении S402, S403 и т.п. в вышеупомянутом варианте осуществления и/или другом процессе технологии, описанной в этом описании.
[00349] Все связанное содержание этапов в вышеупомянутых вариантах осуществления способа может быть процитировано в описаниях функций соответствующих функциональных модулей, и подробности здесь снова не описываются.
[00350] Конечно, устройство двунаправленного интер-предсказания, предоставленное в этом варианте осуществления настоящей заявки, включает в себя, но не ограничивается этим, вышеупомянутые модули. Например, устройство двунаправленного интер-предсказания может дополнительно включать в себя модуль 52 хранения.
[00351] Модуль 52 хранения может быть выполнен с возможностью хранения программного кода и данных устройства двунаправленного интер-предсказания.
[00352] В соответствии со способом, показанным на Фиг.5A, в дополнительном примере настоящее изобретение может дополнительно предоставить устройство 5000 двунаправленного интер-предсказания. Со ссылкой на Фиг.5С, устройство включает в себя:
модуль 5002 определения, выполненный с возможностью определения индекса i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, где POC, соответствующий индексу i1 опорного изображения, меньше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i1 опорного изображения, из POC текущего изображения, меньше разности, полученной посредством вычитания POC, соответствующего индексу ix опорного изображения, из POC текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу ix опорного изображения, меньше, чем POC текущего изображения, где
модуль 5002 определения дополнительно выполнен с возможностью определения индекса i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, где POC, соответствующий индекс i2 опорного изображения, больше, чем POC текущего изображения, разность, полученная посредством вычитания POC соответствующего индекс i2 опорного изображения, из POC текущего изображения, больше разности, полученной посредством вычитания POC, соответствующего индексу iy опорного изображения, из POC текущего изображения, индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу iy опорного изображения, больше, чем POC текущего изображения; и
модуль 5003 обработки интер-предсказания, выполненный с возможностью предсказания текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения, где текущее изображение включает в себя текущий блок.
[00353] В необязательном порядке, устройство дополнительно включает в себя модуль 5001 получения, выполненный с возможностью получения первого идентификатора, где значение первого идентификатора является первым предварительно установленным значением, и когда значение первого идентификатора является первым предварительно установленным значением, первый идентификатор используется для указания определить индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, и определить индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений.
[00354] В необязательном порядке, когда первый идентификатор является первым предварительно установленным значением, первый идентификатор дополнительно используется для указания определить разность второго вектора движения текущего блока на основе разности первого вектора движения текущего блока; модуль получения дополнительно выполнен с возможностью получения разности первого вектора движения текущего блока; и модуль определения дополнительно выполнен с возможностью получения разности второго вектора движения текущего блока на основе разности первого вектора движения согласно следующей формуле:
mvd_lY = -mvd_lX.
[00355] Здесь mvd_lY представляет разность второго вектора движения, mvd_lX представляет разность первого вектора движения, одна из разности первого вектора движения и разности второго вектора движения соответствует первому списку опорных изображений, а другая из разности первого вектора движения и разности второго вектора движения соответствует второму списку опорных изображений.
[00356] В необязательном порядке, модуль 5001 получения конкретно выполнен с возможностью получения первого предсказанного вектора движения и второго предсказанного вектора движения; модуль 5002 определения дополнительно выполнен с возможностью: определения первого вектора движения на основе первого предсказанного вектора движения и разности первого вектора движения и определения второго вектора движения на основе второго предсказанного вектора движения и разности второго вектора движения; и, соответственно, модуль 5003 обработки интер-предсказания конкретно выполнен с возможностью предсказания текущего блока на основе индекса первого опорного изображения, индекса второго опорного изображения, первого списка опорных изображений, второго списка опорных изображений, первого вектора движения и второго вектора движения.
[00357] Модуль 5001 получения может быть выполнен с возможностью выполнения связанного способа, упомянутого в S500 в вышеприведенном примере, и способа, который может использоваться для эквивалентной замены. Модуль 5002 определения может быть выполнен с возможностью выполнения связанного способа, упомянутого в S501 и/или S502 в вышеприведенном примере, и способа, который может использоваться для эквивалентной замены. Модуль 5001 получения, модуль 5002 определения и модуль 5003 обработки интер-предсказания могут быть выполнены с возможностью выполнения связанного способа, упомянутого в S503 в вышеприведенном примере, и способа, который может использоваться для эквивалентной замены. Модуль 5001 получения, модуль 5002 определения и модуль 5003 обработки интер-предсказания могут быть реализованы процессором посредством вызова соответствующих программных инструкций в памяти.
[00358] Следует понимать, что приведенные выше конкретные примеры способов, пояснения и описания технических характеристик в вариантах осуществления и расширения множества реализаций также применимы к соответствующему выполнению способа в устройстве, и детали не описаны в вариантах осуществления устройства.
[00359] Когда используется интегрированный модуль, то Фиг.6A является принципиальной структурной схемой устройства двунаправленного интер-предсказания согласно одному варианту осуществления настоящей заявки. На Фиг.6A, устройство 6 двунаправленного интер-предсказания включает в себя модуль 60 обработки и модуль 61 связи. Модуль 60 обработки выполнен с возможностью управления и администрирования действием устройства двунаправленного интер-предсказания, например, выполнения способов или этапов, выполняемых модулем 50 получения и модулем 51 определения, и способов или этапов, выполняемых модулем 5001 получения, модулем 5002 определения и модулем 5003 обработки интер-предсказания, и/или другого процесса технологии, описанной в этом описании. Модуль 61 связи выполнен с возможностью поддержки взаимодействия между устройством двунаправленного интер-предсказания и другим устройством. Как показано на Фиг.6A, устройство двунаправленного интер-предсказания может дополнительно включать в себя модуль 62 хранения. Модуль 62 хранения выполнен с возможностью хранения программного кода и данных устройства двунаправленного интер-предсказания, например, для хранения контента, хранящегося в модуле 52 хранения.
[00360] Модуль 60 обработки может быть процессором или контроллером, например, может быть центральным процессором (Central Processing Unit, CPU), процессором общего назначения, процессором цифровых сигналов (Digital Signal Processor, DSP), ASIC, FPGA или другим программируемым логическим устройством, транзисторным логическим устройством, аппаратным компонентом или любым их сочетанием. Процессор или контроллер могут реализовывать или выполнять различные примерные логические блоки, модули и схемы, описанные со ссылкой на содержимое, раскрытое в настоящей заявке. В качестве альтернативы, процессор может быть сочетанием процессоров, реализующих вычислительную функцию, например, сочетанием одного или более микропроцессоров или сочетанием DSP и микропроцессора. Модуль 61 связи может быть приемопередатчиком, радиочастотной схемой, интерфейсом связи и т.п. Модуль 62 хранения может быть памятью.
[00361] Все связанное содержимое сценариев в вышеупомянутых вариантах осуществления способа может быть процитировано в описании функций соответствующих функциональных модулей. Подробности не описаны здесь снова.
[00362] Как устройство 5 двунаправленного интер-предсказания, так и устройство 6 двунаправленного интер-предсказания могут выполнять вышеупомянутый способ (например, но не ограничиваясь этим, способ двунаправленного интер-предсказания, показанный на Фиг.4). Устройство 5 двунаправленного интер-предсказания и устройство 6 двунаправленного интер-предсказания могут быть, в частности, устройствами декодирования видео или другими устройствами с функцией кодирования видео. Устройство 5 двунаправленного интер-предсказания и устройство 6 двунаправленного интер-предсказания могут быть выполнены с возможностью выполнения предсказания изображения в процессе декодирования.
[00363] В настоящей заявке дополнительно предоставляется терминал. Терминал включает в себя один или более процессоров, память и интерфейс связи. Память и интерфейс связи связаны с одним или более процессорами. Память приспособлена хранить компьютерный программный код. Код компьютерной программы включает в себя инструкции. Когда один или более процессоров выполняют инструкции, терминал выполняет способ двунаправленного интер-предсказания в вариантах осуществления настоящей заявки.
[00364] Терминал здесь может быть устройством отображения видео, смартфоном, портативным компьютером или другим устройством, которое может обрабатывать или воспроизводить видео.
[00365] В настоящей заявке дополнительно предоставляется видеодекодер, включающий в себя энергонезависимый носитель информации и центральный процессор. На энергонезависимом носителе хранится исполняемая программа. Центральный процессор соединен с энергонезависимым носителем информации и выполняет исполняемую программу для выполнения способа двунаправленного интер-предсказания в вариантах осуществления настоящей заявки.
[00366] В настоящей заявке дополнительно предоставляется декодер. Декодер включает в себя устройство двунаправленного интер-предсказания (устройство 5 двунаправленного интер-предсказания или устройство 6 двунаправленного интер-предсказания) в вариантах осуществления настоящей заявки и модуль восстановления. Модуль восстановления выполнен с возможностью определения значения восстановленного дискретного отсчета текущего блока на основе дискретного отсчета предсказания, полученного устройством двунаправленного интер-предсказания.
[00367] Другой вариант осуществления настоящей заявки дополнительно предоставляет машиночитаемый носитель информации. Машиночитаемый носитель информации включает в себя один или более фрагментов программного кода. Одна или более программ включают в себя инструкции. Когда процессор терминала выполняет программный код, терминал выполняет способ двунаправленного интер-предсказания, показанный в вышеприведенных примерах способов (например, но не ограничиваясь ими, Фиг.4 или 5A).
[00368] В другом варианте осуществления настоящей заявки дополнительно предоставляется компьютерный программный продукт. Компьютерный программный продукт включает в себя инструкции, исполняемые компьютером. Машиноисполняемые инструкции хранятся на машиночитаемом носителе информации. По меньшей мере один процессор терминала может считывать машиноисполняемые инструкции с машиночитаемого носителя информации. По меньшей мере один процессор выполняет машиноисполняемые инструкции, чтобы позволить терминалу выполнять вышеупомянутые способы (такие как, но не ограничиваясь этим, способ двунаправленного интер-предсказания, показанный на Фиг.4 или 5A), и способы или этапы, которые могут быть реализованы видеодекодером 202.
[00369] Фиг.6B является упрощенной блок-схемой устройства, которое может использоваться как одно или два из устройства 10 источника и устройства 20 получателя на Фиг.1 согласно примерному варианту осуществления. Устройство 555 может реализовывать технологии настоящей заявки. Другими словами, Фиг.6B является схематической блок-схемой реализации устройства кодирования или устройства декодирования (кратко называемого устройством 555 кодирования) согласно одному варианту осуществления настоящей заявки. Устройство 555 кодирования может включать в себя процессор 510, память 530 и систему 550 шин. Процессор и память соединены через систему шин. Память приспособлена хранить инструкции. Процессор выполнен с возможностью выполнения инструкций, хранящихся в памяти. В памяти устройства кодирования хранится программный код, и процессор может вызывать программный код, хранящийся в памяти, для выполнения различных способов кодирования или декодирования видеоизображений, описанных в настоящей заявке, особенно способов кодирования или декодирования видео в различных режимах интер-предсказания или режимах интра-предсказания. Чтобы избежать повторов, подробности здесь снова не приводятся.
[00370] Нижеследующее описывает применение способа кодирования и способа декодирования, показанных в вышеупомянутых вариантах осуществления, и систему, использующую способ кодирования и способ декодирования.
[00371] Фиг.7 является блок-схемой системы 3100 доставки контента, которая реализует службу доставки контента. Система 3100 доставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и, в необязательном порядке, дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 через линию 3104 связи. Линия связи может включать в себя канал 13 связи. Линия 3104 связи включает в себя, но не ограничивается этим, Wi-Fi, Ethernet, проводное соединение, беспроводное (3G/4G/5G) соединение, USB или любое их сочетание.
[00372] Устройство 3102 захвата генерирует данные и может кодировать данные согласно способу кодирования, показанному в вышеупомянутых вариантах осуществления. В качестве альтернативы устройство 3102 захвата может отправлять данные на сервер потоковой передачи (не показан на фигуре), и сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но не ограничивается этим, камеру, смартфон или планшетный компьютер, компьютер или портативный компьютер, систему видеоконференцсвязи, PDA, установленное на транспортном средстве устройство или любое их сочетание. Например, устройство 3102 захвата может включать в себя устройство 10 источника, описанное выше. Когда данные включают в себя видео, видеокодер 102, включенный в устройство 3102 захвата, может фактически кодировать видео. Когда данные включают в себя звук (то есть голос), аудиокодер, включенный в устройство 3102 захвата, может фактически кодировать звук. В некоторых реальных сценариях устройство 3102 захвата отправляет закодированные видеоданные и закодированные аудиоданные посредством мультиплексирования закодированных видеоданных и закодированных аудиоданных. В другом фактическом сценарии, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата отдельно отправляет закодированные аудиоданные и закодированные видеоданные в терминальное устройство 3106.
[00373] В системе 3100 доставки контента терминальное устройство 3106 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и восстановления данных, например, смартфоном или планшетным компьютером 3108, компьютером или портативным компьютером 3110, сетевым устройством видео записи (network video recorder, NVR)/ цифровым устройством видео записи (digital video recorder, DVR) 3112, телевизором 3114, телеприставкой (set top box, STB) 3116, системой 3118 видеоконференцсвязи, системой 3120 видеонаблюдения, персональным цифровым помощником (personal digital assistant, PDA) 3122, установленным в транспортном средстве устройством 3124 или любым сочетанием вышеупомянутых устройств, которые могут декодировать закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство 20 получателя, описанное выше. Когда кодированные данные включают в себя видео, видеодекодеру 202, включенному в терминальное устройство, отдается приоритет для выполнения декодирования видео. Когда кодированные данные включают в себя звук, аудиодекодер, включенный в терминальное устройство, получает приоритет для выполнения декодирования звука.
[00374] Для терминального устройства с дисплеем, например смартфона или планшетного компьютера 3108, компьютера или портативного компьютера 3110, сетевого устройства видео записи (network video recorder, NVR)/цифрового устройства видео записи (digital video recorder, DVR) 3112, телевизора 3114, персонального цифрового помощника (personal digital assistant, PDA) 3122 или установленного на транспортном средстве устройства 3124, терминальное устройство может передавать декодированные данные на дисплей терминального устройства. Для терминального устройства без дисплея, например STB 3116, системы 3118 видеоконференцсвязи или системы 3120 видеонаблюдения, внешний дисплей 3126 подключается к терминальному устройству для приема и отображения декодированных данных.
[00375] Когда каждое устройство в системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, показанные в вышеупомянутых вариантах осуществления.
[00376] Фиг.8 является схемой примерной структуры терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, модуль 3202 обработки протокола анализирует транспортный протокол потока. Протокол включает в себя, но не ограничивается этим, протокол потоковой передачи в реальном времени (Real-Time Streaming Protocol, RTSP), протокол передачи гипертекста (Hypertext Transfer Protocol, HTTP), протокол потоковой передачи в реальном времени HTTP (HTTP Live streaming protocol, HLS), MPEG-DASH, транспортный протокол реального времени (Real-time Transport protocol, RTP), протокол обмена сообщениями в реальном времени (Real-Time Messaging Protocol, RTMP) или любое их сочетание.
[00377] После обработки потока модуль 3202 обработки протокола генерирует файл потока. Файл выводится в модуль 3204 демультиплексирования. Модуль 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, в другом фактическом сценарии, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этом случае закодированные данные передаются в видеодекодер 3206 и аудиодекодер 3208 без передачи через модуль 3204 демультиплексирования.
[00378] Демультиплексирование выполняется для генерации элементарного потока (elementary stream, ES) видео, ES аудио и необязательных субтитров. Видеодекодер 3206 включает в себя видеодекодер 202, описанный в вышеупомянутых вариантах осуществления, декодирует ES видео согласно способу декодирования, показанному в вышеупомянутых вариантах осуществления, чтобы сгенерировать видеоизображение, и подает такие данные в модуль 3212 синхронизации. Аудиодекодер 3208 декодирует ES аудио, чтобы сформировать аудио кадр, и подает такие данные в модуль 3212 синхронизации. В качестве альтернативы видеоизображение может быть сохранено в буфере (не показан на Фиг.8) до того, как видеоизображение будет подано в модуль 3212 синхронизации. Точно так же звуковой кадр может быть сохранен в буфере (не показан на Фиг.8) до того, как звуковой кадр будет подан в модуль 3212 синхронизации.
[00379] Модуль 3212 синхронизации синхронизирует видеоизображение и аудиокадр и предоставляет видео/аудио для видео/аудио дисплея 3214. Например, модуль 3212 синхронизации синхронизирует представление видеоинформации и аудиоинформации. Информация может быть закодирована синтаксически с использованием метки времени, относящейся к представлению закодированных аудио и визуальных данных, и метки времени, относящейся к передаче потока данных.
[00380] Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры, чтобы синхронизировать субтитры с видеоизображением и звуковым кадром, и предоставляет видео/аудио/субтитры в дисплей 3216 видео/аудио/субтитров.
[00381] Настоящее изобретение не ограничивается вышеупомянутой системой, и устройство кодирования изображения или устройство декодирования изображения в вышеупомянутых вариантах осуществления может быть объединено в другую систему, например автомобильную систему.
[00382] Все или некоторые из вышеупомянутых вариантов осуществления могут быть реализованы с использованием программного обеспечения, аппаратного обеспечения, микропрограммного обеспечения или их любой комбинации. Когда программное обеспечение используется для реализации вариантов осуществления, варианты осуществления могут быть реализованы полностью или частично в форме компьютерного программного продукта. Компьютерный программный продукт включает в себя одну или более компьютерных инструкций. Когда инструкции компьютерной программы загружаются и выполняются на компьютере, процедуры или функции согласно вариантам осуществления настоящей заявки генерируются полностью или частично.
[00383] Компьютер может быть компьютером общего назначения, специализированным компьютером, компьютерной сетью или другим программируемым устройством. Компьютерные инструкции могут храниться на машиночитаемом носителе или могут передаваться с одного машиночитаемого носителя на другой машиночитаемый носитель. Например, компьютерные инструкции могут быть переданы с веб-сайта, компьютера, сервера или центра обработки и хранения данных на другой веб-сайт, компьютер, сервер или центр обработки и хранения данных проводным образом (например, посредством коаксиального кабеля, оптоволокна или цифровой абонентской линии (DSL)) или беспроводным (например, инфракрасным, радио и микроволновым или подобным) образом. Машиночитаемый носитель может быть любым используемым носителем, доступным для компьютера, или устройством хранения данных, таким как сервер или центр обработки данных, объединяющим один или более используемых носителей. Используемый носитель может быть магнитным носителем (например, гибким диском, жестким диском или магнитной лентой), оптическим носителем (например, DVD), полупроводниковым носителем (например, твердотельным накопителем Solid-State Drive (SSD)) и т.п.
[00384] Приведенное выше описание реализаций позволяет специалисту в данной области техники ясно понять, что в целях удобного и краткого описания разделение только на вышеупомянутые функциональные модули используется в качестве примера для иллюстрации. В реальном приложении вышеупомянутые функции могут быть назначены различным функциональным модулям для реализации на основе требования, то есть внутренняя структура устройства разделена на разные функциональные модули для реализации всех или некоторых функций, описанных выше.
[00385] В нескольких вариантах осуществления, представленных в настоящей заявке, следует понимать, что раскрытые устройство и способ могут быть реализованы другими способами. Например, описанные варианты осуществления устройства является лишь примерами. Например, разделение на модули или блоки - это просто логическое функциональное разделение. В реальной реализации может быть другой способ разделения. Например, множество блоков или компонентов могут быть объединены или могут быть интегрированы в другое устройство, или некоторые функции могут игнорироваться или не выполняться. Кроме того, отображаемые или обсуждаемые взаимные связи или прямые связи или коммуникационные соединения могут быть реализованы с использованием некоторых интерфейсов. Непрямые соединения или коммуникационные соединения между устройствами или блоками могут быть реализованы в электронной, механической или другой форме.
[00386] Блоки, описанные как отдельные компоненты, могут быть или не могут быть физически отдельными, а компоненты, отображаемые как блоки, могут быть одним или более физическими блоками, то есть могут быть расположены в одном месте или могут быть распределены во множестве разных мест. Некоторые или все блоки могут быть выбраны на основе фактических требований для достижения целей решений в упомянутых вариантах осуществления.
[00387] Кроме того, функциональные модули в вариантах осуществления настоящей заявки могут быть интегрированы в один модуль обработки, или каждый из модулей может существовать отдельно физически, или два или более модуля могут быть интегрированы в один модуль. Интегрированный модуль может быть реализован в виде аппаратных средств или может быть реализован в виде функционального блока программного обеспечения.
[00388] Когда интегрированный модуль реализован в виде функционального модуля программного обеспечения и продается или используется как независимый продукт, интегрированный модуль может храниться на читаемом носителе информации. Основываясь на таком понимании, технические решения в вариантах осуществления настоящей заявки по существу или часть, вносящая вклад в предшествующий уровень техники, или все или некоторые из технических решений могут быть реализованы в форме программного продукта. Программный продукт хранится на носителе информации и включает в себя несколько инструкций для указания устройству (которое может быть однокристальным микрокомпьютером, микросхемой и т.п.) или процессору (processor) выполнять все или некоторые из этапов способы, описанные в вариантах осуществления настоящей заявки. Вышеупомянутый носитель информации включает в себя любой носитель, на котором может храниться программный код, такой как флэш-накопитель USB, съемный жесткий диск, постоянное запоминающее устройство (Read-Only Memory, ROM), запоминающее устройство с произвольным доступом (Random Access Memory, RAM), магнитный диск или оптический диск.
[00389] Вышеприведенное описание представляет собой лишь конкретные реализации настоящей заявки, но оно не предназначено для ограничения объема охраны настоящей заявки. Любые изменения или замены в пределах технического объема, раскрытого в настоящей заявке, попадают в объем охраны настоящей заявки. Следовательно, объем охраны настоящей заявки определяется формулой изобретения.
Положение 1. Способ двунаправленного интер-предсказания, содержащий этапы, на которых:
определяют индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, при этом порядковый номер изображения (POC), соответствующий индексу i1 опорного изображения, меньше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i1 опорного изображения, из POC текущего изображения, меньше разности, полученной посредством вычитания POC, соответствующего индексу ix опорного изображения, из POC текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу ix опорного изображения, меньше, чем POC текущего изображения;
определяют индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, при этом POC, соответствующий индексу i2 опорного изображения, больше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i2 опорного изображения, из POC текущего изображения, больше разности, полученной посредством вычитания POC, соответствующего индексу iy опорного изображения, из POC текущего изображения, индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу iy опорного изображения, больше, чем POC текущего изображения; и
предсказывают текущий блок на основе индекса первого опорного изображения и индекса второго опорного изображения, при этом текущее изображение содержит текущий блок.
Положение 2. Способ согласно Положению 1, при этом способ используется в устройстве декодирования и, соответственно, способ дополнительно содержит этапы, на которых:
получают первый идентификатор, при этом значение первого идентификатора является первым предварительно установленным значением, при этом
когда значение первого идентификатора является первым предварительно установленным значением, первый идентификатор используется для указания определить индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, и определить индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений.
Положение 3. Способ согласно Положению 2, в котором, когда первый идентификатор является первым предварительно установленным значением, первый идентификатор дополнительно используется для указания определить разность второго вектора движения текущего блока на основе разности первого вектора движения текущего блока, и способ дополнительно содержит этапы, на которых:
получают разность первого вектора движения текущего блока; и
получают разность второго вектора движения текущего блока на основе разности первого вектора движения согласно следующей формуле:
mvd_lY = -mvd_lX,
где mvd_lY представляет разность второго вектора движения, mvd_lX представляет разность первого вектора движения, одна из разности первого вектора движения и разности второго вектора движения соответствует первому списку опорных изображений, а другая из разности первого вектора движения и разности второго вектора движения соответствует второму списку опорных изображений.
Положение 4. Способ согласно Положению 3, при этом способ дополнительно содержит этапы, на которых:
получают первый предсказанный вектор движения и второй предсказанный вектор движения;
определяют первый вектор движения на основе первого предсказанного вектора движения и разности первого вектора движения; и
определяют второй вектор движения на основе второго предсказанного вектора движения и разности второго вектора движения; и
при предсказании текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения предсказывают текущий блок на основе индекса первого опорного изображения, индекса второго опорного изображения, первого списка опорных изображений, второго списка опорных изображений, первого вектора движения и второго вектора движения.
Положение 5. Устройство двунаправленного интер-предсказания, при этом устройство содержит:
модуль определения, выполненный с возможностью: определять индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, при этом POC, соответствующий индексу i1 опорного изображения, меньше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i1 опорного изображения, из POC текущего изображения, меньше разности, полученной посредством вычитания POC, соответствующего индексу ix опорного изображения, из POC текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу ix опорного изображения, меньше, чем POC текущего изображения; и
определять индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, при этом POC, соответствующий индексу i2 опорного изображения, больше, чем POC текущего изображения, разность, полученная посредством вычитания POC, соответствующего индексу i2 опорного изображения, из POC текущего изображения, больше разности, полученной посредством вычитания POC, соответствующего индексу iy опорного изображения, из POC текущего изображения, индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и POC, соответствующий индексу iy опорного изображения, больше, чем POC текущего изображения; и
модуль обработки интер-предсказания, выполненный с возможностью предсказывать текущий блок на основе индекса первого опорного изображения и индекса второго опорного изображения, при этом текущее изображение содержит текущий блок.
Положение 6. Устройство согласно Положению 5, при этом устройство содержится в устройстве декодирования и, соответственно, дополнительно содержит:
модуль получения, выполненный с возможностью получать первый идентификатор, при этом значение первого идентификатора является первым предварительно установленным значением, при этом
когда значение первого идентификатора является первым предварительно установленным значением, первый идентификатор используется для указания определить индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, и определять индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений.
Положение 7. Устройство согласно Положению 6, в котором, когда первый идентификатор является первым предварительно установленным значением, первый идентификатор дополнительно используется для указания определить разность второго вектора движения текущего блока на основе разности первого вектора движения текущего блока, и модуль получения дополнительно выполнен с возможностью:
получать разность первого вектора движения текущего блока; и
модуль определения дополнительно выполнен с возможностью получать разность второго вектора движения текущего блока на основе разности первого вектора движения согласно следующей формуле:
mvd_lY = -mvd_lX,
где mvd_lY представляет разность второго вектора движения, mvd_lX представляет разность первого вектора движения, одна из разности первого вектора движения и разности второго вектора движения соответствует первому списку опорных изображений, а другая из разности первого вектора движения и разности второго вектора движения соответствует второму списку опорных изображений.
Положение 8. Устройство согласно Положению 7, в котором модуль получения дополнительно выполнен с возможностью:
получать первый предсказанный вектор движения и второй предсказанный вектор движения;
модуль определения дополнительно конкретно выполнен с возможностью:
определять первый вектор движения на основе первого предсказанного вектора движения и разности первого вектора движения; и
определять второй вектор движения на основе второго предсказанного вектора движения и разности второго вектора движения; и
модуль обработки интер-предсказания конкретно выполнен с возможностью предсказывать текущий блок на основе индекса первого опорного изображения, индекса второго опорного изображения, первого списка опорных изображений, второго списка опорных изображений, первого вектора движения и второго вектора движения.
Положение 9. Устройство кодирования видео, содержащее:
модуль интер-предсказания, выполненный с возможностью выполнять способ согласно любому из Положений 1-4; и
модуль восстановления, выполненный с возможностью восстанавливать текущий блок на основе предсказанного значения дискретного отсчета, полученного модулем интер-предсказания.
Положение 10. Устройство декодирования видео, содержащее:
модуль интер-предсказания, выполненный с возможностью выполнять способ согласно любому из Положений 1-4; и
модуль восстановления, выполненный с возможностью восстанавливать текущий блок на основе предсказанного значения дискретного отсчета, полученного модулем интер-предсказания.
Положение 11. Устройство кодирования видео, содержащее энергонезависимую память и процессор, которые связаны друг с другом, причем процессор вызывает программный код, хранящийся в памяти, для выполнения способа согласно любому из Положений 1-4.
Положение 12. Устройство декодирования видео, содержащее энергонезависимую память и процессор, которые связаны друг с другом, причем процессор вызывает программный код, хранящийся в памяти, для выполнения способа согласно любому из Положений 1-4.
Положение 13. Машиночитаемый носитель информации, при этом машиночитаемый носитель информации хранит компьютерную программу, и когда компьютерная программа выполняется в процессоре, реализуется способ согласно любому из Положений 1-4.
Положение 14. Терминал, при этом терминал содержит один или более процессоров, память и интерфейс связи; и
память и интерфейс связи соединены с одним или более процессорами, терминал осуществляет связь с другим устройством через интерфейс связи, память приспособлена хранить компьютерный программный код, при этом компьютерный программный код содержит инструкции, и когда один или более процессоров выполняют инструкции, терминал выполняет способ двунаправленного интер-предсказания согласно любому из Положений 1-4.
название | год | авторы | номер документа |
---|---|---|---|
СПОСОБ И УСТРОЙСТВО ДВУНАПРАВЛЕННОГО ИНТЕР-ПРЕДСКАЗАНИЯ | 2019 |
|
RU2795934C2 |
СПОСОБ И УСТРОЙСТВО ДВУНАПРАВЛЕННОГО МЕЖКАДРОВОГО ПРЕДСКАЗАНИЯ | 2019 |
|
RU2762262C1 |
МНОГОРАКУРСНОЕ ВИДЕОКОДИРОВАНИЕ | 2012 |
|
RU2589347C2 |
ВИДЕОКОДЕР, ВИДЕОДЕКОДЕР И СООТВЕТСТВУЮЩИЙ СПОСОБ | 2020 |
|
RU2819065C2 |
УСТРОЙСТВО И СПОСОБ КОДИРОВАНИЯ ВИДЕО | 2018 |
|
RU2767993C1 |
СИГНАЛИЗАЦИЯ ДОЛГОСРОЧНЫХ ОПОРНЫХ ИЗОБРАЖЕНИЙ ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2013 |
|
RU2642361C2 |
СИГНАЛИЗАЦИЯ ДАННЫХ ДЛЯ ДОЛГОСРОЧНЫХ ЭТАЛОННЫХ ИЗОБРАЖЕНИЙ ДЛЯ КОДИРОВАНИЯ ВИДЕО | 2013 |
|
RU2635248C2 |
ПОСТРОЕНИЕ СПИСКА ОПОРНЫХ ИЗОБРАЖЕНИЙ ДЛЯ ВИДЕОКОДИРОВАНИЯ | 2012 |
|
RU2580098C2 |
ВЫВЕДЕНИЕ ВЕКТОРА ДВИЖЕНИЯ ПРИ ВИДЕОКОДИРОВАНИИ | 2016 |
|
RU2742298C2 |
ВЫВОД ИНФОРМАЦИИ ДВИЖЕНИЯ ДЛЯ ПОДБЛОКОВ ПРИ ВИДЕОКОДИРОВАНИИ | 2016 |
|
RU2705428C2 |
Изобретение относится к области технологий кодирования видеоизображений и, в частности, к способам и устройствам двунаправленного интер-предсказания. Техническим результатом является повышение эффективности кодирования. Результат достигается тем, что двунаправленное интер-предсказание включает в себя: определение индекса i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений; определение индекса i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений; и предсказание текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения. POC, соответствующий индексу i1 опорного изображения, является POC, который ближе к POC текущего изображения, во всех POC, которые находятся в первом списке опорных изображений и которые меньше, чем POC текущего изображения, POC, соответствующий индексу i2 опорного изображения, является POC, ближе к POC текущего изображения, во всех POC, которые во втором списке опорных изображений и которые больше, чем POC текущего изображения, и текущее изображение включает в себя текущий блок. 10 н. и 6 з.п. ф-лы, 11 ил., 3 табл.
1. Способ двунаправленного интер-предсказания, содержащий этапы, на которых:
определяют индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, при этом порядковый номер изображения (РОС), соответствующий индексу опорного изображения, меньше, чем РОС текущего изображения, разность, полученная посредством вычитания РОС, соответствующего индексу i1 опорного изображения, из РОС текущего изображения, меньше разности, полученной посредством вычитания РОС, соответствующего индексу ix опорного изображения, из РОС текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и РОС, соответствующий индексу ix опорного изображения, меньше, чем РОС текущего изображения;
определяют индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, при этом РОС, соответствующий индексу i2 опорного изображения, больше, чем РОС текущего изображения, разность, полученная посредством вычитания РОС, соответствующего индексу i2 опорного изображения, из РОС текущего изображения, больше разности, полученной посредством вычитания РОС, соответствующего индексу iy опорного изображения, из РОС текущего изображения, индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из второго списка опорных изображений, и РОС, соответствующий индексу iy опорного изображения, больше, чем РОС текущего изображения; и
предсказывают текущий блок на основе индекса первого опорного изображения и индекса второго опорного изображения, при этом текущее изображение содержит текущий блок,
при этом по первому списку опорных изображений выполняют поиск индекса i1 опорного изображения, а по второму списку опорных изображений выполняют поиск индекса i2 опорного изображения и, если один из этих индексов опорного изображения не будет найден либо ни один из этих индексов опорного изображения не будет найден, по второму списку опорных изображений выполняют поиск индекса i1 опорного изображения, а по первому списку опорных изображений выполняют поиск индекса i2 опорного изображения.
2. Способ по п. 1, при этом способ дополнительно содержит этап, на котором получают первый идентификатор, причем значение первого идентификатора является первым предварительно установленным значением, при этом, когда значение первого идентификатора является первым предварительно установленным значением, первый идентификатор используется для указания определить индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, и определить индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений.
3. Способ по п. 2, в котором, когда первый идентификатор является первым предварительно установленным значением, первый идентификатор дополнительно используется для указания определить разность второго вектора движения текущего блока на основе разности первого вектора движения текущего блока, при этом способ дополнительно содержит этапы, на которых:
получают разность первого вектора движения текущего блока; и
получают разность второго вектора движения текущего блока на основе разности первого вектора движения согласно следующей формуле:
mvd_1Y=-mvd_1X,
где mvd_1Y представляет разность второго вектора движения, mvd_1X представляет разность первого вектора движения, одна из разности первого вектора движения и разности второго вектора движения соответствует первому списку опорных изображений, а другая из разности первого вектора движения и разности второго вектора движения соответствует второму списку опорных изображений.
4. Способ по п. 3, при этом способ дополнительно содержит этапы, на которых:
получают первый предсказанный вектор движения и второй предсказанный вектор движения;
определяют первый вектор движения на основе первого предсказанного вектора движения и разности первого вектора движения; и
определяют второй вектор движения на основе второго предсказанного вектора движения и разности второго вектора движения; и
при предсказании текущего блока на основе индекса первого опорного изображения и индекса второго опорного изображения предсказывают текущий блок на основе индекса первого опорного изображения, индекса второго опорного изображения, первого списка опорных изображений, второго списка опорных изображений, первого вектора движения и второго вектора движения.
5. Устройство двунаправленного интер-предсказания, содержащее:
модуль определения, выполненный с возможностью:
определять индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, при этом РОС, соответствующий индексу i1 опорного изображения, меньше, чем РОС текущего изображения, разность, полученная посредством вычитания РОС, соответствующего индексу i1 опорного изображения, из РОС текущего изображения, меньше разности, полученной посредством вычитания РОС, соответствующего индексу ix опорного изображения, из РОС текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и РОС, соответствующий индексу ix опорного изображения, меньше, чем РОС текущего изображения, и
определять индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, при этом РОС, соответствующий индексу i2 опорного изображения, больше, чем РОС текущего изображения, разность, полученная посредством вычитания РОС, соответствующего индексу i2 опорного изображения, из РОС текущего изображения, больше разности, полученной посредством вычитания РОС, соответствующего индексу iy опорного изображения, из РОС текущего изображения, индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из второго списка опорных изображений, и РОС, соответствующий индексу iy опорного изображения, больше, чем РОС текущего изображения; и
модуль обработки интер-предсказания, выполненный с возможностью предсказывать текущий блок на основе индекса первого опорного изображения и индекса второго опорного изображения, при этом текущее изображение содержит текущий блок,
при этом по первому списку опорных изображений выполняется поиск индекса i1 опорного изображения, а по второму списку опорных изображений выполняется поиск индекса i2 опорного изображения и, если один из этих индексов опорного изображения не будет найден либо ни один из этих индексов опорного изображения не будет найден, по второму списку опорных изображений выполняется поиск индекса i1 опорного изображения, а по первому списку опорных изображений выполняется поиск индекса i2 опорного изображения.
6. Устройство по п. 5, при этом устройство дополнительно содержит модуль получения, выполненный с возможностью получать первый идентификатор, причем значение первого идентификатора является первым предварительно установленным значением, при этом, когда значение первого идентификатора является первым предварительно установленным значением, первый идентификатор используется для указания определить индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, и определить индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений.
7. Устройство по п. 6, при этом, когда первый идентификатор является первым предварительно установленным значением, первый идентификатор дополнительно используется для указания определить разность второго вектора движения текущего блока на основе разности первого вектора движения текущего блока и модуль получения дополнительно выполнен с возможностью получать разность первого вектора движения текущего блока; и
модуль определения дополнительно выполнен с возможностью получать разность второго вектора движения текущего блока на основе разности первого вектора движения согласно следующей формуле:
mvd_1Y=-mvd_1X,
где mvd_1Y представляет разность второго вектора движения, mvd_1X представляет разность первого вектора движения, одна из разности первого вектора движения и разности второго вектора движения соответствует первому списку опорных изображений, а другая из разности первого вектора движения и разности второго вектора движения соответствует второму списку опорных изображений.
8. Устройство по п. 7, в котором
модуль получения дополнительно выполнен с возможностью получать первый предсказанный вектор движения и второй предсказанный вектор движения;
модуль определения дополнительно конкретно выполнен с возможностью:
определять первый вектор движения на основе первого предсказанного вектора движения и разности первого вектора движения и
определять второй вектор движения на основе второго предсказанного вектора движения и разности второго вектора движения; и
модуль обработки интер-предсказания конкретно выполнен с возможностью предсказывать текущий блок на основе индекса первого опорного изображения, индекса второго опорного изображения, первого списка опорных изображений, второго списка опорных изображений, первого вектора движения и второго вектора движения.
9. Способ двунаправленного интер-предсказания, содержащий этапы, на которых:
определяют индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, когда (РОС_Cur - РОС_1istX) * (РОС_listX - РОС_Cur)>0, mvd_11_zero_flag равен 0 и первый идентификатор является первым заранее заданным значением, при этом порядковый номер изображения (РОС), соответствующий индексу i1 опорного изображения, меньше, чем РОС текущего изображения, разность, полученная посредством вычитания РОС, соответствующего индексу i1 опорного изображения, из РОС текущего изображения, меньше разности, полученной посредством вычитания РОС, соответствующего индексу ix опорного изображения, из РОС текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и РОС, соответствующий индексу ix опорного изображения, меньше, чем РОС текущего изображения;
определяют индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, когда (РОС_Cur - РОС_listX) * (РОС_listX - РОС_Cur)>0, mvd_11_zero flag равен 0 и первый идентификатор является первым заранее заданным значением, при этом РОС, соответствующий индексу i2 опорного изображения, больше, чем РОС текущего изображения, разность, полученная посредством вычитания РОС, соответствующего индексу i2 опорного изображения, из РОС текущего изображения, больше разности, полученной посредством вычитания РОС, соответствующего индексу iy опорного изображения, из РОС текущего изображения, индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из второго списка опорных изображений, и РОС, соответствующий индексу iy опорного изображения, больше, чем РОС текущего изображения; и
предсказывают текущий блок на основе индекса первого опорного изображения и индекса второго опорного изображения, при этом текущее изображение содержит текущий блок.
10. Устройство двунаправленного интер-предсказания, содержащее:
модуль определения, выполненный с возможностью:
определять индекс i1 опорного изображения первого списка опорных изображений в качестве индекса первого опорного изображения, который соответствует текущему блоку и который из первого списка опорных изображений, когда (POC_Cur - POC_listX) * (POC_listX - POC_Cur)>0, mvd_11_zero_flag равен 0 и первый идентификатор является первым заранее заданным значением, при этом РОС, соответствующий индексу i1 опорного изображения, меньше, чем РОС текущего изображения, разность, полученная посредством вычитания РОС, соответствующего индексу i1 опорного изображения, из РОС текущего изображения, меньше разности, полученной посредством вычитания РОС, соответствующего индексу ix опорного изображения, из РОС текущего изображения, индекс ix опорного изображения является индексом любого опорного изображения, отличным от индекса i1 опорного изображения среди индексов опорных изображений из первого списка опорных изображений, и РОС, соответствующий индексу ix опорного изображения, меньше, чем РОС текущего изображения, и
определять индекс i2 опорного изображения второго списка опорных изображений в качестве индекса второго опорного изображения, который соответствует текущему блоку и который из второго списка опорных изображений, когда (POC_Cur - POC_listX) * (POC_listX - POC_Cur)>0, mvd_11_zero flag равен 0 и первый идентификатор является первым заранее заданным значением, при этом РОС, соответствующий индексу i2 опорного изображения, больше, чем РОС текущего изображения, разность, полученная посредством вычитания РОС, соответствующего индексу i2 опорного изображения, из РОС текущего изображения, больше разности, полученной посредством вычитания РОС, соответствующего индексу iy опорного изображения, из РОС текущего изображения, индекс iy опорного изображения является индексом любого опорного изображения, отличным от индекса i2 опорного изображения среди индексов опорных изображений из второго списка опорных изображений, и РОС, соответствующий индексу iy опорного изображения, больше, чем РОС текущего изображения; и
модуль обработки интер-предсказания, выполненный с возможностью предсказывать текущий блок на основе индекса первого опорного изображения и индекса второго опорного изображения, при этом текущее изображение содержит текущий блок,
при этом по первому списку опорных изображений выполняется поиск индекса i1 опорного изображения, а по второму списку опорных изображений выполняется поиск индекса i2 опорного изображения и, если один из этих индексов опорного изображения не будет найден либо ни один из этих индексов опорного изображения не будет найден, по второму списку опорных изображений выполняется поиск индекса i1 опорного изображения, а по первому списку опорных изображений выполняется поиск индекса i2 опорного изображения.
11. Устройство кодирования видео, содержащее:
модуль интер-предсказания, выполненный с возможностью осуществлять способ по любому одному из пп. 1-4 и 9; и
модуль восстановления, выполненный с возможностью кодировать текущий блок на основе предсказанного значения дискретного отсчета, полученного модулем интер-предсказания.
12. Устройство декодирования видео, содержащее:
модуль интер-предсказания, выполненный с возможностью осуществлять способ по любому одному из пп. 1-4 и 9; и
модуль восстановления, выполненный с возможностью декодировать текущий блок на основе предсказанного значения дискретного отсчета, полученного модулем интер-предсказания.
13. Устройство кодирования видео, содержащее энергонезависимую память и процессор, которые связаны друг с другом, причем процессор вызывает программный код, хранящийся в памяти, для выполнения способа по любому одному из пп. 1-4 и 9.
14. Устройство декодирования видео, содержащее энергонезависимую память и процессор, которые связаны друг с другом, причем процессор вызывает программный код, хранящийся в памяти, для выполнения способа по любому одному из пп. 1-4 и 9.
15. Машиночитаемый носитель информации, при этом машиночитаемый носитель информации хранит компьютерную программу и, когда компьютерная программа исполняется в процессоре, реализуется способ по любому одному из пп. 1-4 и 9.
16. Терминал связи, при этом терминал связи содержит один или более процессоров, память и интерфейс связи; и
память и интерфейс связи соединены с одним или более процессорами, память приспособлена хранить компьютерный программный код, при этом компьютерный программный код содержит инструкции и, когда один или более процессоров исполняют инструкции, терминал связи выполняет способ двунаправленного интер-предсказания по любому одному из пп. 1-4 и 9.
EP 2840793 A1, 2015.02.25 | |||
WO 2018058526 A1, 2018.04.05 | |||
КОДИРОВАНИЕ ВЕКТОРА ДВИЖЕНИЯ И БИ-ПРЕДСКАЗАНИЕ В HEVC И ЕГО РАСШИРЕНИЯХ | 2013 |
|
RU2624560C2 |
US 2015172708 A1, 2015.06.18 | |||
WO 2018058622 A1, 2018.04.05 | |||
US 2007047649 A1, 2007.03.01 | |||
CN 104717513 A, 2015.06.17 | |||
US 7295612 B2, 2007.11.13. |
Авторы
Даты
2024-05-02—Публикация
2019-09-04—Подача