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