Основная задача настоящего тестирования - сравнить результаты работы нового поколения MPEG4-кодеков (называемых MPEG-4 AVC или H.264) при записи домашнего видео простыми пользователями. Такие пользователи, как правило, используют простые известные программы для того, чтобы считывать DVD или оцифровывать сигнал с тюнера и редко изменяют настройки кодеков. Мы прекрасно понимаем, что писать кодеки так, чтобы они хорошо работали в разных ситуациях без специальной настройки (автоматически подстраиваясь под тип видео) сложнее, но тем больше чести авторам, если их кодеки хорошо справляются с такой задачей. DivX Pro 5 использовался для сравнения, как один из лучших кодеков предыдущего поколения, стандарта MPEG-4 ASP. Подробнее о разновидностях MPEG-4 можно прочитать здесь.
Использованные кодеки
КОДЕК | ПРОИЗВОДИТЕЛЬ | ВЕРСИЯ | ОБОЗНАЧЕНЫ НА ГРАФИКАХ |
Mpegable AVC | dicas | 0.10 | AVC |
MoonLight H.264 | MoonLight | 0.1.2546 | MoonLight |
Main Concept H.264 | Main Concept | 1.04.02.00 | MainConcept |
MPEG-4 / AVC | Fraunhofer IIS | от 25.11.2004 | Fraunhofer |
Ateme MPEG-4 AVC / H.264 | Ateme | 1.0.3.2 | Ateme |
Videosoft H.264 codec main | Videosoft | 2.1.0.2 | VSS_main |
DivX Pro™ | DivXNetworks | 5.1.1 | DivX 5.1.1 |
Учитывая специфику H.264 (очень большое время работы при включении "по максимуму" всех опций и возможностей), мы в дальнейшем введем два набора настроек, получаемых от производителей кодеков (и только от них). Первый набор - "tuned" - настройки, дающие максимальное качество, но долгую работу и "fast" - настройки, обеспечивающие быструю работу, но с меньшим качеством. Причем и время, и качество будут измеряться в обоих случаях. Это позволит кодекам продемонстрировать, на что они способны по качеству и даст возможность более корректно сравнивать скорость, чем в варианте сравнения настроек по умолчанию. Часть 1: Методика тестирования
Метрика PSNR
Описание метрики
В рамках данного тестирования критерием качества сжатия служит метрика PSNR (peak signal to noise ratio/пиковое отношение сигнала к шуму, измеряется в дБ). Использование именно этой метрики обусловлено ее популярностью. Ее используют в большинстве научных статей и сравнений в качестве меры потерь качества. Как и все существующие метрики, она не идеальна и имеет свои достоинства и недостатки. Для понимания приведенных ниже цифр, необходимо знать лишь то, что значение метрики тем больше, чем больше разница между сравниваемыми изображениями.
Примечание: PSNR – это наиболее общепринятая метрика для оценки различий между двумя последовательностями. Несомненно, у неё есть множество недостатков. Можно придумать огромное количество последовательностей, на которых эта метрика не совсем адекватно себя ведёт. Например, два кадра, яркость одного из которых подняли на одну единицу (из, скажем, 255). Или два кадра, отличающихся одним пикселем – на первом пиксель белый, а на втором – чёрный. В обоих примерах вы с трудом сможете уловить различия в кадрах на глаз, но с точки зрения PSNR кадры будут значительно отличаться! Однако, несмотря на все недостатки, именно метрикой PSNR до сих пор пользуется большинство разработчиков кодеков для анализа своих результатов. Эта метрика понимается и признаётся всеми профессионалами в области кодирования видео. Именно по этой причине мы выбрали PSNR в качестве основной метрики.
Смысл графиков PSNR/Frame size
На графике изображена зависимость показателя метрики от среднего размера кадра. Каждая ветвь соответствует определенному кодеку. Ветви построены на опорных точках, каждая из которых соответствует конкретному битрейту. Хорошо видно, что на каждой ветви находится по десять точек (каждая последовательность сжимается на 10 настройках битрейта). Бывает, что кодек не удерживает битрейт и с разными настройками битрейта сжимает одинаково. В таких случаях, очевидно, на ветви кодека расположено менее десяти опорных точек. Для сравнения кодеков на этих графиках следует обращать внимание на то, как высоко расположены ветви кодеков. Чем выше находится ветвь – тем выше в среднем качество последовательности, сжатой данным кодеком. На вышеприведенном в качестве примера рисунке видно, что на высоком битрейте Videosoft сжал последовательность с меньшими потерями качества по сравнению с другими кодеками.
Методика тестирования
Последовательность действий
В тестировании участвует девять фильмов (см. ниже). Каждый фильм сжимается десять раз с разными битрейтами (кбит/с): 100, 225, 340, 460, 700, 938, 1140, 1340, 1840, 2340. Таким образом, для каждого кодека генерируется 50 фильмов. Затем для каждого фильма вычисляется метрика PSNR. Причем указанная метрика вычисляется для каждого кадра. Далее для построения графика используются соответствующие числа, в зависимости от типа графика.
Задачи и правила тестирования
- Подсчет PSNR производился с помощью программы luv_avi.
- Размер кадра считался как частное размера фильма и количества кадров.
- Значение ординаты на графиках Delta вычисляется как разница PSNR для этих кодеков и кодека DivX.
- При тестировании кодеков, которые накладывают свой логотип на сжатый фильм, логотип заменялся на черный прямоугольник и на исходный несжатый фильм накладывался такой же прямоугольник. Далее производилось сравнение
- Для кодеков, являющихся VfW (Video for Windows), сжатие проводилось при помощи программы VirtualDub 1.5.4.
- Для кодеков, работающих по интерфейсу DirectShow, сжатие проводилось при помощи программы GraphEdit (build 011008).
- Для кодеков, которые устанавливались как отдельные приложения для сжатия, сжатие проводилось при помощи этого приложения.
- Для кодеков, которые сжимали фильм не в формат avi, а в свой внутренний формат, для получения avi использовалась программа GraphEdit (build 011008) и декодер, поставляемый с кодеком.
- Кодек MainConcept вставлял лишние кадры в декодированную последовательность. Для покадрового сравнения приходилось удалять эти кадры вручную при помощи программы VirtualDub. При этом файл считался пригодным для сравнения, если в исправленном фильме последний кадр визуально совпадал с последним кадром в исходным фильме.
Основной задачей ставилась сравнительная оценка качества кодеков при их непрофессиональном использовании для сжатия фильмов. Соответственно оценка проводилась на последовательностях, обработанных простым распространенным фильтром деинтерлейсинга, а параметры кодека брались по умолчанию. Правила тестирования:
Самый распространённый вопрос по поводу этого тестирования – «А с какими настройками тестировались кодеки?». В полном тексте документа, в разных местах мы ответили на него 8 раз – с настройками по умолчанию! Это означает следующее. Мы брали чистую операционную систему и инсталлировали на неё кодек. Настройки, которые он выставил при этом, мы считали настройками по умолчанию. В процессе тестирования мы меняли только один параметр – битрейт. Таким образом, чтобы посмотреть все параметры, вам надо всего лишь заново проинсталлировать интересующий вас кодек.
Последовательности
Фильм | Число кадров | Разрешение и цветовое пространство |
bankomatdi | 376 | 704 x 352 (RGB) |
battle | 1599 | 704 x 288 (RGB) |
bbc3di | 374 | 704 x 576 (RGB) |
foreman | 300 | 352 x 288 (RGB) |
susidi | 374 | 704 x 576 (RGB) |
На разных последовательностях кодеки показывают разные результаты. Например, эффективно сжать последовательность из одинаковых кадров намного легче, чем последовательность, состоящую из существенно различающихся картинок. Есть и другие характеристики последовательностей – размер кадров, зашумлённость, длина последовательности, тип движения камеры и т.д. Для нашего тестирования мы выбрали стандартные последовательности. Многими из них пользуются производители кодеков для тестирования своих продуктов. Конечно, эти последовательности не покрывают всего множества фильмов – тут нет ни мультфильмов, ни видео с тюнера. В дальнейшем мы планируем расширить число последовательностей.Часть 2: Графики по PSNR для всех кодеков
Графики Y-PSNR - Frame Size
На этих графиках хорошо видна динамика зависимости качества сжатого фильма от его размера. Координатами опорных точек диаграммы являются средние по фильму значения метрики и размера кадра. Таким образом, каждая ветвь имеет по десять точек, соответствующих разным битрейтам.
Delta Y-PSNR – это графики относительного PSNR. В качестве референсного кодека выбран DivX 5.1.1. Для каждого замера на графике конкретного кодека бралась разница этого замера и значения PSNR для референсного кодека с тем же битрейтом. При отсутствии значения, PSNR референсного кодека получался линейной интерполяцией.
Выводы
- На низких битрейтах DivX сильно уступает кодекам VSS_main, Fraunhofer, Ateme.
- На средних и высоких битрейтах кодек от Ateme опережает все остальные кодеки.
В полной версии сравнения представлены другие типы графиков для различных последовательностей и видеокодеков: V-PSNR, U-PSNR , Y-difference и bitrate-handling.
Часть 3: Покадровое сравнение видеокодеков
На этих графиках хорошо видно, как изменяется качество сжатия отдельных кадров кодеками. По оси X отложены номера соответствующих кадров, а по оси Y – PSNR кодеков при сравнении с оригиналом.
Sequence bankomatdi. Bitrate 100 kb/sec
Sequence bankomatdi. Bitrate 2340 kb/sec
Часть 4: Визуальное сравнение видеокодековВ сжатых последовательностях разные кадры имеют различное качество, зависящее от многих параметров, как самой последовательности, так и настроек кодека. Например, на качество кадра влияет такой параметр, как тип этого кадра – сжатый независимо, с учётом одного предыдущего или нескольких кадров (I, P и B кадры). Для разных кодеков один и тот же кадр последовательности может иметь различное качество. Например, если мы найдём кадр, который первый кодек закодировал независимо, а второй – с использованием предыдущего, то, скорее всего, кадр первого кодека будет смотреться лучше. Таким образом, для любых двух кодеков в последовательности можно найти кадры, на которых один из кодеков смотрится лучше другого. Для визуального сравнения мы выбирали кадры, на которых разница между кодеками максимальна. Сравнение проводилось между кодеками от компании Ateme и компании DivXNetworks, Inc.
- Битрейт 700 Кбит/с.
- Последовательности для сравнения: bbc3di и foreman.
Последовательность bbc3di, кадр 280
Последовательность foreman, кадр 282
Выводы
- При одинаковом значении метрики PSNR кодеки стандарта H.264 показывают заметно лучшее визуальное качество.
- Большинство кодеков явно оптимизированы для достижения максимальной скорости кодирования на сегодняшних конфигурациях и не используют всех возможностей, предоставляемых форматом H.264.
При сравнении кодеков всегда хочется узнать, кто же в итоге лучший. Часто при ответе на подобные вопросы возникают заключения вроде «H.264 лучше DivX на 45%!». Однако кодеки можно сравнивать по многим параметрам – качеству сжатых последовательностей, способности держать заданный битрейт, быстродействию, удобству использованию, размеру инсталлятора, красоте логотипа и т.д. Причём для разных задач отдельные параметры могут быть неодинаково важны. Например, если вы хотите сжимать телевизионный сигнал, для вас важна скорость работы кодека, если записывать сжатые фильмы на CD – то немаловажна точность соблюдения битрейта, а если решили сделать архив оцифрованного видео – то, скорее всего, определяющим фактором является качество сжатых последовательностей.
Как было сказано выше, данный текст является сильно сокращенным и откомментированным вариантом сравнения видеокодеков, предназначенного в первую очередь для профессиональных пользователей и производителей кодеков. Полный вариант этого тестирования имеет объем 70 pdf-страниц, содержит сравнения всех указанных в начале статьи видеокодеков, множество графиков и рисунков, не приведенных в данной статье.
Мы выражаем благодарность компаниям Moonlight Cordless LTD, Fraunhofer Institute for Integrated Circuits IIS и Ateme за любезно предоставленные для данного тестирования кодеки, недоступные публично.