Куда применить CUDA. Часть 3 - качество.

17.12.2010 20:00 MaxOblivion
Печать
Нравится

CUDA

В предыдущих двух частях было наглядно показано преимущество технологии CUDA в кодировании видео. Однако существует множество сторонников того, что видео, сконвертированное такими конвертерами, имеет низкое качество в сравнении с тем, что сконвертировано традиционными программами, использующими CPU. Настало время проверить так ли это.

 

 

 

 

 

 

Дабы проверить качество кодирования, то нужен какой-то эталон, а так же начальный материал. В качестве эталона был выбран MediaCoder, который использует x264 энкодер с его многочисленными настройками. А вот в качестве исходного видео будет использоваться видеоролик, снятый программой fraps из игры Mafia 2. Видео пишется с битрейтом 30 мбит/с и максимальным качеством. Далее оно подверглось перекодировки с помощью MediaCoder (профиль High10, Level 5.1, Preset Placebo, остальные настройки оптимальны для высококачественного видео), MediaShow (максимальные настройки качества), Movavi (также максимальные настройки) и Xilisoft (максимальные настройки, кодирование в 2 прохода). Во всех случаях битрейт был равен 10 мбит/с. Сразу же хочу отметить, что LoiloScope показал идентичный с MediaShow результат. CudaEncoder из MediaCoder не позволяет кодировать в 2 прохода и показал результат, аналогичный Movavi. Более того, работает с видео из fraps'а крайне нестабильно.

 

Mafia 2 frame

 

Из данного кадра было вырезано 3 фрагмента: кусок кирпичной стены и часть окон, колесный диск для оценки передачи детализации, а также фрагмент автомобиля, дабы оценить плавность перехода от темного к светлому, ведь именно там вылезают «блоки».

Для начала посмотрим на первый фрагмент:

 

Cuda quality

 

Изображения разместились в порядке убывания – от наиболее качественного к наименее. Скажу сразу, что такой порядок сохранится и дальше. Сразу же хочется отметить, что видео, скодированное на процессоре, действительно наиболее качественное и почти сравнимо с оригиналом. С другой стороны, оно кодировалось на разогнанном 4-ех ядерном процессоре более 20 минут, а тот же Xilisoft скодировал в 2 прохода на GPU всего за 50 секунд. При этом результат несомненно хуже, чем у MediaCoder, но в целом трагедии нет. Вот MediaShow – это да, разница уже попросту громадная. Отмечу, что Xilisoft и Movavi несколько повышали контраст видео, но только снятого fraps’ом. С обычными фильмами такого не происходит.

Теперь перейдем ко второму фрагменту:

 

Cuda quality

 

А вот тут уже не все так однозначно. Разница между оригиналом и видео из MediaCoder более существенна, а Xilisoft приблизился к MediaCoder, хоть это и мешает разглядеть несколько повысившийся уровень контрастности. MediaShow и тут показывает неутешительные результаты.

Теперь перейдем к третьему фрагменту:

 

Cuda quality

 

Да, Xilisoft немного проиграл, но незначительно. А вот у Movavi уже поползли ощутимые квадраты. MediaShow попросту размыл все, хотя полосы тоже заметны.

Стоит отметить, что все это – сравнение для практически идеального качества начального видео. В большинстве случаев оно будет уже сжато, а, следовательно, и качество будет совсем иным. В таких случаях разница между конвертерами будет значительно ниже.

Далее рассмотрим более динамичный кадр.

 

Mafia 2 frame

 

И опять же 3 фрагмента – кирпичная стена, внутренняя стороны крышки багажника и область номерного знака.

Для начала рассмотрим стену:

 

Cuda quality

 

Результат MediaShow кроме как провалом и не назвать. Xilisoft подмыливает изображение, но в целом показал терпимый результат.

Перейдем ко второму фрагменту:

 

Cuda quality

Ничего нового, разве что на результате Movavi ребра жесткости на крышке видны чуть лучше. У MediaShow опять каша.

И третий фрагмент:

 

Cuda quality

 

Первые 3 результата в целом схожи, Movavi чуть отстал, а вот результат MediaShow опять удручает.

Т.к. картина повторяется на всех кадрах, а основные моменты я разобрал, то мучить читателей десятками схожих кадров я не стану, все и так видно. А видно, что качество кодирования конвертеров под CPU выше, чем конвертеров на GPU. Именно так, а не «CPU кодирует видео лучше, чем GPU». А упирается это все именно в программную реализацию, а не в возможности центральных процессоров и видеоадаптеров (а в данном случае в технологию CUDA).

 


 

 

Кодирование фильмов


Как я уже говорил ранее, в случае с менее качественным контентом разница куда меньше. Например,  два кадра из видеоролика (1920х1080, 9 мбит/с). Первый оригинальный, а второй сконвертирован Xilisoft:

 

Cuda quality

 

Разницу кто видит? Нет? Но она ведь должна быть, да?

 

Cuda quality

 

Вот так выглядит разница между двумя кадрами (в данном случае 2 кадра в Photoshop с типом смешивания Difference). Уверяю вас, если сделать инверсию (т.е. черное станет белым, а белое – черным), то найти что-то все равно будет проблематично. Возьмем Magic Wand Tool (волшебная палочка) с отклонением 1 и выделим все черное. Таким образом сразу станет видно пиксели, которые не соответствуют идеальному черному цвету (0,0,0 в представлении RGB).

 

Cuda quality

 

Ага, разница все же есть. А теперь поставим отклонение 2 и сделаем все то же самое:

 

Cuda quality

 

Т.е. вся разница между 2 кадрами минимальна, а уловить ее глазом попросту нереально. И чем меньшего качества исходное видео, тем меньше эта разница.

Перейдем к выводам. Да, действительно на данный момент при кодировании на CPU можно получить более качественный результат, чем на GPU. Однако тот же Xilisoft весьма близко подбирается к тому, чтобы эту разницу нивелировать. Справедливости ради, вся эта разница максимально наблюдается только при максимальном качестве исходного видео. Если вы кодируете SD видео, то Movavi и MediaShow будет с головой для подобного рода задач. Для рядового HD видео можно использовать Xilisoft с кодированием в 2 прохода или Movavi, если нужно побыстрее.

Что же касается скорости, то 34 секунды видеоролика кодировались MediaCoder’ом более 20 минут. На GPU эта же операция заняла около 30-50 секунд в зависимости от конвертера. Если же снизить настройки качества в MediaCoder, то выходит около 5-7 минут. Однако качество на уровне Xilisoft.

По сути, сейчас от разработчиков требуется попросту расширить возможности по настройки энкодера, добавив возможность кодировать в 2 прохода (как это сделано в Xilisoft). С этим предложением я обращусь к разработчикам Movavi.

 

       

Теги:
 
Последние материалы на сайте: