Для чего используется lib Swscale программистами ffmpeg? - PullRequest
4 голосов
/ 30 июля 2010

Что такое lib Swscale, используемая программистами ffmpeg?

  • Какие преимущества это дает для кодирования / декодирования AV?
  • Какова его позиция относительно av * libs?

Ответы [ 2 ]

16 голосов
/ 30 июля 2010

Swscale в основном используется для игроков, а не для кодирования / декодирования. Это необходимо, если вы хотите отобразить видео с другим размером пикселя / соотношением сторон, чем оно было закодировано, и у вас нет поддержки аппаратного масштабирования видео. Swscale также выполняет преобразование цветового пространства между различными цветовыми форматами RGB и YUV и преобразование между упакованным (все каналы в одном буфере) и планарным (каждый канал имеет свой собственный буфер) форматами. Все эти процедуры высоко оптимизированы; Насколько я знаю, в настоящее время не существует более быстрой реализации программного обеспечения для любого из них, по крайней мере для x86 и x86_64.

Swscale также может понадобиться для кодирования видео, если исходное видео уже не в формате, необходимом для кодера. Например, если исходное видео имеет формат RGB, вам, вероятно, потребуется преобразовать его в соответствующий планарный формат YUV, поскольку большинство кодеков работают на YUV. Это влечет за собой как преобразование цветового пространства (аффинное преобразование векторов R, G, B), так и фактическое масштабирование (повторную выборку), поскольку в большинстве форматов YUV используются плоскости U и V (цветовые плоскости) с половинным разрешением по сравнению с плоскостью Y (яркость, т.е. данные интенсивности).

2 голосов
/ 25 апреля 2012

swscale также может выполнять высококачественную передискретизацию, например, с использованием алгоритма Ланцоша.Так что в основном он конвертирует между цветовыми пространствами, между «количеством битов», а также выполняет изменение размера.Он также имеет опции для использования MMX и т. Д., Поэтому может быть быстрым.

...