#1 28.02.12 13:03
Аппаратная акселерация видео
Гуглил, гуглил.. толком ничего не нарыл.
Может кто сталкивался....
Есть технологии 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
Re: Аппаратная акселерация видео
Если видюха рассчитана на аппаратное декодирование 2 потоков hd (UVD 2) то остальные будут декодится софтово и проц будет загружен под завязку. Я не спец в этом вопросе, но предполагаю, что многое зависит от кодека, через какое API задействовано ускорение и насколько оно масштабируется. Сейчас просто попробовал запустить одновременно проигрывание несколько hd фильмов - 4 штуки идут вообще без тормозов загрузка проца 9%, как только запускаешь 5, начинается слайдшоу на всех, загрузка проца вырастает до 16-20% (может, конечно, это диск не справляется).
Offline
#3 29.02.12 01:04
Re: Аппаратная акселерация видео
сам провел кое-какие тесты

Процессор практически не нагружен, при этом он аудио декодирует (Intel E8200)
Битрейт у видео нормальный, видно по мониторингу чтения диска.
Я запустил 6 фильмов, тормоза есть, некоторые "замирают" и не отвисают, пока не ткнешь "перемотку", потом опять показывают какое-то время.
Offline
#4 29.02.12 01:26
Re: Аппаратная акселерация видео
и еще тест, с 10 потоками

Нагрузка на проц растет, но не сильно. Ведь аудиопотоки он декодирует (кажется)
смущает низкая скорость дискового ввода-вывода.
у каждого фильма видеопоток 5-5.5 мбит (а некоторые были по 10 мбит видеопоток, я потом заметил), у 10 фильмов должен быть 50 мегабит, или ~7 мб/сек. Плюс еще аудиопотоки по полмегабита. А показывает всего 3Мбайт/сек ввод/вывод. Диск в принципе выдает до 220мб/сек при линейном чтении (у меня страйп из двух спинпоинтов F1), так что даже при фрагментированном большими блоками должно быть больше 3Мб/сек по любому.
Причем на 6 фильмах был поток 3Мб\сек, и на 10 фильмах тоже
Значит видеокарта не тянет поток больше, чем ~25 мегабит. Видимо те, что для 3Д могут до 50 мбит тянуть без тормозов, что дает нам 10 потоков в 5 мегабит или 20 потоков с половинным битрейтом.
Offline
#6 29.02.12 02:41
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
Re: Аппаратная акселерация видео
Offline
#8 29.02.12 11:55
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
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

