2016-01-28 9 views
2

Я использую кодировщик x265 для HEVC.x265: Почему кадры P и B имеют различное время кодирования?

У меня есть 3 разных конфигурации. У

  1. 4 B кадры (B4)
  2. 2 B кадры (B2)
  3. 0 B кадры (B0 - все кадры P)

Их время кодирования различны.

B4 и B2 требуют гораздо меньше времени кодирования, чем B0, который содержит только P кадров. Вы знаете, почему?

Оба кадра P и B имеют одинаковый QP, используя параметр --pbratio 1.0.

Здесь вы можете увидеть три разных выходных файла, используя QP 36: B4, B2 и B0.

+0

Вы неоднократно сталкивались с этими различиями? – damjeux

+0

@damjeux Да! Кроме того, я попробовал то же самое в справочном программном обеспечении HM 15.0 и получил обратные результаты ... – zinon

+1

Да, вы ожидали бы, что B-кадры займет больше времени из-за двунаправленного предсказания. И я вижу, что ваши B-кадры имеют до 3 опорных кадров [L0] и [L1], тогда как P-кадры имеют только 1 опорный кадр [L0] ... – damjeux

ответ

0

Вы можете утверждать, что кодирование B-кадров проще, поскольку интерполяция проще, чем экстраполяция (как в случае P-кадров). Интерполяция имеет тенденцию давать более мелкие ошибки, чем экстраполяция, что уменьшает количество бит, которые необходимо закодировать.

enter image description here

Что касается результатов с использованием эталонного программного обеспечения НМ 15,0, это справочное программное обеспечение поэтому производительность не является основным приоритетом. Цитата из HM software manual:

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

+0

Спасибо за ваш ответ. Это может быть возможным объяснением, и, поскольку доступных кодеров HEVC недостаточно, мы не проводим дальнейших сравнений. Но можем ли мы оправдать результат, например, в журнале, используя этот аргумент как оправдание? – zinon

+0

Я думаю, что «проще» здесь неверно. Если вы посмотрите на оценку движения (ME), B-кадры потребуют запустить ME на не менее 2 кадрах, тогда как P-кадры требуют только запуска ME на 1 кадре. И ME - одна из наиболее вычислительно сложных частей кодировщика. График выше может дать интуицию, почему вам нужно меньше бит для B-кадров, но не почему вам нужно меньше времени. Вам нужно будет посмотреть время, затрачиваемое на энтропийное кодирование в обоих случаях, чтобы увидеть, есть ли существенная разница. – damjeux