Сравнение производительности sws_scale с изменением размера медиаплееров в реальном времени

Во время воспроизведения 4K-видео пользователь может изменять размер окна плеера, и результирующее изображение будет плавно масштабироваться во время воспроизведения.

С другой стороны, программа, написанная с помощью libav, которая считывает видеофайл 4k кадр за кадром и уменьшает его с помощью функции sws_scale, делает это менее эффективно: для изменения размера требовалось больше времени, чем длительность видео.

Почему это так? Может из-за того, что фпс у плеера меньше и некоторые кадры пропускаются - но видео все равно выглядит плавно?


person Andrey Katkov    schedule 13.07.2018    source источник


Ответы (1)


Это связано с тем, что большинство видеоплееров выполняют масштабирование на аппаратном уровне видеокарты. С GL, например, масштабирование (или даже преобразование формата из YUV в RGB) бесплатно.

person Ronald S. Bultje    schedule 14.07.2018
comment
Спасибо за разъяснения! Интересно, почему sws_scale не использует GL для таких целей. - person Andrey Katkov; 14.07.2018
comment
потому что swscale — это программный конвертер. Он предназначен не для отображения (вы бы использовали для этого GL), а для масштабирования и повторного использования масштабированных буферов для кодирования. Подумайте о центрах обработки данных, которые кодируют видео для потоковых сервисов. - person Ronald S. Bultje; 14.07.2018