2015-04-20 2 views
2
/* values for the flags, the stuff on the command line is different */ 
#define SWS_FAST_BILINEAR  1 
#define SWS_BILINEAR   2 
#define SWS_BICUBIC   4 
#define SWS_X     8 
#define SWS_POINT   0x10 
#define SWS_AREA   0x20 
#define SWS_BICUBLIN  0x40 
#define SWS_GAUSS   0x80 
#define SWS_SINC   0x100 
#define SWS_LANCZOS  0x200 
#define SWS_SPLINE  0x400 

Какой из них лучше для качества изображения? Каковы различия? Все ли они потеряны? Я пытаюсь преобразовать RGB24 в YUV420P.Какой флаг использовать для лучшего качества с помощью sws_scale?

ответ

0

Разговор RGB24 - YUV420 сам по себе является убыточным. Алгоритм масштабирования, вероятно, используется для уменьшения масштаба информации о цвете. Я бы сказал, что качество: < < bilinear < bicubic < lanczos/sinc/сплайн Я действительно не знаю других. В редких случаях sinc является идеальным скалером и без потерь, но эти условия обычно не выполняются. Вы также масштабируете видео? В противном случае я бы стал бикубическим.

+0

Я готовлю кадры для кодирования, у меня есть кадры RGB24 и AFAIU. Мне нужно, чтобы они были преобразованы в YUV420p, прежде чем перейти в avcodec_encode_video2. Что касается масштабирования: размер не изменяется при масштабировании. Означает ли это, что я могу использовать 0 с флагом? – Sergey

+0

Преобразование из RGB в YUV не требует масштабирования. Преобразование из YUV444 в YUV420 уменьшает разрешение цветных плоскостей и, следовательно, включает масштабирование. Вы должны попробовать разные значения и посмотреть, сможете ли вы увидеть разницу и что лучше всего подходит для ваших глаз. В противном случае я бы просто отправился на Бикубич или даже Билинейный. – Mathias

+0

Но если никакого масштабирования не требуется, флаг не нужен (может быть равен нулю). Правильно? Я пробовал разные флаги, но я не видел различий. Хотя, быстрая билинейная работа работала быстрее (профилировала ее). Но если он работал быстрее с быстрым билинейным, тогда задействован флаг ... hmmm ... :) – Sergey

Смежные вопросы