Официальный сайт студ.городка НГТУ
Hardware » Аппаратная акселерация видео 

#1  28.02.12 13:03

Max
Профиль

Аппаратная акселерация видео

Гуглил, гуглил.. толком ничего не нарыл.
Может кто сталкивался....
Есть технологии PureVideo (nvidia) и Avivo (AMD).
С помощью ни можно переложить работу по декодированию видео с CPU на GPU.
Это понятно.
Непонятно, можно ли это делать "многопоточно", т.е. декодировать с помощью видеокарты несколько потоков HD-видео одновременно.
На сайте нвидии есть что-то на эту тему, но относится, как я понял к 3Д-видео (там в одном потоке идут фактически 2 потока, и нвидия заявляет что может декодировать 2xfullhd со всеми фильтрами в реальном времени)
И что будет, если производительности видеопроцессора не будет хватать для декодирования потока? Все "отменяется" и переложится на CPU или просто будет подтормаживать с потерей кадров?


Собственно, задача простая: пару десятков  HD-видеокамер и система мониторинга (без записи, только отображение). Так вот, тормозит. Если включить 5 камер загрузка проца 50%, если 10 - то 80%, если 20 - то в потолок и получается слайдшоу. Я так понимаю, декодирование и скалирование картинок (уменьшение, чтобы втиснуть все в один экран) выполняет проц. Я хочется переложить эту задачу на видеокарту, тем более уж она-то заточена под параллельные вычисления.
Менять проц не интересно, так как придется менять всю платформу (рабочая станция НР со своей настандартной материнкой, корпусом и проч), хочется вставить видюшку, благо слоты есть.

Так же влияет ли на "скорость декодирования" видео не поколение технологии PureVideo (сейчас VP5) а так называемая "производительность" видеокарты, грубо говоря частоты GPU или количество ядер?

Сильно смущает еще то, что рядом с рабочей станцией мониторинга стоит видеосервер, который выполняет запись на диск и детектацию движения. Так вот, для выполнения детектации он же ДОЛЖЕН ДЕКОДИРОВАТЬ видео, и еще применять какие-то фильтры про сличению кадров. Но при этом загрузка сервера всего на уровне 3-5%. Правда там и проц помощнее заметно. А система мониторинга которая просто "картинку показывает" в полку 100% лупит даже с половиной отображаемых камер. И у меня такое чувство, что затык собственно не в декодировании потока, а в выводе его на экран. Но блин, оно через оверлей выводится, чего еще можно сделать?

Offline

#2  29.02.12 00:09

$up
Профиль

Re: Аппаратная акселерация видео

Если видюха рассчитана на аппаратное декодирование 2 потоков hd (UVD 2) то остальные будут декодится софтово и проц будет загружен под завязку. Я не спец в этом вопросе, но предполагаю, что многое зависит от кодека, через какое API задействовано ускорение и насколько оно масштабируется. Сейчас просто попробовал запустить одновременно проигрывание несколько hd фильмов - 4 штуки идут вообще без тормозов загрузка проца 9%, как только запускаешь 5, начинается слайдшоу на всех, загрузка проца вырастает до 16-20% (может, конечно, это диск не справляется).

Offline

#3  29.02.12 01:04

Max
Профиль

Re: Аппаратная акселерация видео

сам провел кое-какие тесты

http://hostel.nstu.ru/uploaded/gallery/433_1330452229.jpg



Процессор практически не нагружен, при этом он аудио декодирует (Intel E8200)
Битрейт у видео нормальный, видно по мониторингу чтения диска.

Я запустил 6 фильмов, тормоза есть, некоторые "замирают" и не отвисают, пока не ткнешь "перемотку", потом опять показывают какое-то время.

Offline

#4  29.02.12 01:26

Max
Профиль

Re: Аппаратная акселерация видео

и еще тест, с 10 потоками

http://hostel.nstu.ru/uploaded/gallery/433_1330453515.jpg


Нагрузка на проц растет, но не сильно. Ведь аудиопотоки он декодирует (кажется)

смущает низкая скорость дискового ввода-вывода.
у каждого фильма видеопоток 5-5.5 мбит (а некоторые были по 10 мбит видеопоток, я потом заметил), у 10 фильмов должен быть 50 мегабит, или ~7 мб/сек. Плюс еще аудиопотоки по полмегабита. А показывает всего 3Мбайт/сек ввод/вывод. Диск в принципе выдает до 220мб/сек при линейном чтении (у меня страйп из двух спинпоинтов F1), так что даже при фрагментированном большими блоками должно быть больше 3Мб/сек по любому.
Причем на 6 фильмах был поток 3Мб\сек, и на 10 фильмах тоже
Значит видеокарта не тянет поток больше, чем ~25 мегабит. Видимо те, что для 3Д могут до 50 мбит тянуть без тормозов, что дает нам 10 потоков в 5 мегабит или 20 потоков с половинным битрейтом.

Offline

#5  29.02.12 01:46

$up
Профиль

Re: Аппаратная акселерация видео

у меня карточка hd4850, но тормоза, думаю начинаются из-за диска, сильно он тарахтеть начинает. Я вообще один и тот же фильм запускал в пяти окнах 8)

Offline

#6  29.02.12 02:41

Max
Профиль

Re: Аппаратная акселерация видео

по ATI нарыл
http://www.amd.com/us/products/desktop/ … 750.aspx#2

Full-fixed mode: 1080p @ 60 FPS encoding
что согласно http://ru.wikipedia.org/wiki/H.264 может быть от 50 до 200 мбит (я в профилях кодирования плохо понимаю)

по NVidia-картам инофрмации вообще нет, одна промо-вода

и как бы вообще не нашел ответа на вопрос: для карт одной линейки количество ядер/конвейеров/текстурных блоков/частота ядра/памяти влияют ли как-то на работу декодера, или он "сам по себе"

Offline

#7  29.02.12 11:50

$up
Профиль

Re: Аппаратная акселерация видео

Offline

#8  29.02.12 11:55

Max
Профиль

Re: Аппаратная акселерация видео

$up, зачем это?
эту статью я читал, там нет нужной инфы.

"Декодер UVD соответствует требованиям производительности и спецификациям Blu-Ray и HD DVD, он способен декодировать видеопотоки H.264 с битрейтом вплоть до 40 Мбит/сек" -  у меня получилось 25Мбит на карте UVD 2.2

"UVD 3 поддерживает аппаратное декодирование Blu-ray 3D — стереопотока видеоданных, который содержит два раздельных видеопотока для достижения эффекта стереоизображения" - не сказано, какой битрейт у этого "каждого отдельного видоепотока"

И больше интересует инфа по nvidia-картам, так как в ПО заявлено, что оно только PureVideo поддерживает

Offline

#9  29.02.12 14:36

$up
Профиль

Re: Аппаратная акселерация видео

просто по твоей ссылке не особо понятно было, что именно в каких версиях поддерживается. По нвидиа картам тоже есть.
http://en.wikipedia.org/wiki/Nvidia_PureVideo
Но могу сказать, что все они заточены под 2 потока hd
Для многопоточного декодинга есть специализированные решения http://www.jupiter.com/products.php?c_id=12&p_id=18

Исправлено $up (29.02.12 15:02)

Offline

#10  29.02.12 21:02

Re: Аппаратная акселерация видео

вот в процах для мобильных устройств ставят специально блоки для аппаратного декодирования видео, а вот в видюхе такого нету что ли? или наверное там их только для 2 потоков. а может этим все же занимается основной проц видюхи, PureVideo похоже появилось вместе с CUDA, хотя может это совпадение.
ну то есть если декодингом занимаются отдельные специальные блоки, тогда крутость видеокарты ничего не даст (за исключением частоты GPU, но думаю не сильно повлияет). А если основной проц GPU то тогда крутость видеокарты сильно повлияет.

http://ru.wikipedia.org/wiki/Unified_Video_Decoder:

Однако постобработка видео выполняется не блоком UVD, а шейдерами GPU. MPEG-2 также не поддерживается UVD и выполняется на шейдерах.

Постобработка видео, к которой относятся устранение шума, деинтерлейсинг, масштабирование и изменение размера, выполняется на шейдерах.

и основное:

AMD заявляла, что аппаратный блок UVD полностью интегрирован в графический процессор и занимает на нём площадь в 4,7 мм  при техпроцессе 65 нм.

это говорит о отдельном декодере, то есть скорее всего влияет только частота проца GPU (не сильно) и шейдеры.
у нвидео тоже самое, аппаратный блок декодирования.

Offline

#11  29.02.12 21:06

Re: Аппаратная акселерация видео

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

Исправлено Fire Stream (29.02.12 21:08)

Offline

#12  29.02.12 22:20

Re: Аппаратная акселерация видео

и еще вопрос в том, как перенаправить поток с камер на видюху, вполне возможно это не такая простая задача.

Offline

Hardware » Аппаратная акселерация видео 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.057 сек.
Выполнено 11 запросов.