LINUX.ORG.RU

XVideo PIP


0

0

Есть необходимость выводить видео в окно через XVideo Extension, а также в окне надо размещать PIP (уменьшеное изображение другого видеопотока). Кадры видеопотоков ко мне приходят в формате UYVY422. Пока пробую так от PIP видеопоток я масштабирую используя sws_scale (уменьшаю его), далее планирую соединить PIP с главной картинкой и отобразить буфер через XvShmPutImage. Минус в том что для масштабирования PIP я использую sws_scale (софтварный). А хочется чтобы всю работу по масштабированию и желательно склеиванию двух картинок делала видюха аппаратно. Еще может кто подскажет способ или библиотеку которой можно было бы эффективно склеивать YUV изображения желательно с прозрачностью :)

anonymous

С помощью XVideo это вряд ли получится. Во-первых, оверлей в Xv часто присутствует в единственном экземпляре. Во-вторых, о полупрозрачности с оверлеями придется забыть. В Xv, в отличие от старого API DirectDraw под Windows, нет даже возможности для задания colorkey для оверлея - то есть даже просто рисование, скажем, иконки поверх оверлея является проблемой.

С другой стороны, с размерами картинок порядка CIF4, если требуется обработать один-два канала видео, можно спокойно делать downscale одной картинки в область на другой картинке "руками", прямо на Си. Просадка по производительности по сравнению с использованием, к примеру, IPP, будет незаметна, да и сама операция - относительно дешева. Это, конечно, если коэффициент уменьшения - не дробный и если можно обойтись просто децимацией вместо усреднения.

Наконец, опыт показывает (т.е. реально проводились замеры), что заливать изображение на видеокарту, чтобы отобразить его в уменьшенном виде - выйдет дороже, чем сделать downscale на CPU, и затем уже уменьшенную картинку передавать на видеокарту. Поэтому подумайте, - если Вас устроит ограниченное число вариантов размера уменьшенной картинки (скажем, вдвое, втрое и вчетверо по каждой из размерностей), - то не бойтесь программного масштабирования.

gzh
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.