[FFmpeg-cvslog] avfilter/vf_scale_npp: select cubic and lanczos as alternative where super-sampling is not supported

Sven C. Dack git at videolan.org
Wed Oct 19 14:02:50 EEST 2016


ffmpeg | branch: master | Sven C. Dack <sven.c.dack at sky.com> | Wed Oct 19 12:51:21 2016 +0200| [1aa8fa418a82211df447099a61c50bacde97be09] | committer: Timo Rothenpieler

avfilter/vf_scale_npp: select cubic and lanczos as alternative where super-sampling is not supported

Signed-off-by: Timo Rothenpieler <timo at rothenpieler.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1aa8fa418a82211df447099a61c50bacde97be09
---

 libavfilter/vf_scale_npp.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/libavfilter/vf_scale_npp.c b/libavfilter/vf_scale_npp.c
index 68cee39..35abe39 100644
--- a/libavfilter/vf_scale_npp.c
+++ b/libavfilter/vf_scale_npp.c
@@ -294,9 +294,21 @@ static int init_processing_chain(AVFilterContext *ctx, int in_width, int in_heig
 
     /* figure out which stages need to be done */
     if (in_width != out_width || in_height != out_height ||
-        in_deinterleaved_format != out_deinterleaved_format)
+        in_deinterleaved_format != out_deinterleaved_format) {
         s->stages[STAGE_RESIZE].stage_needed = 1;
 
+        if (s->interp_algo == NPPI_INTER_SUPER &&
+            (out_width > in_width && out_height > in_height)) {
+            s->interp_algo = NPPI_INTER_LANCZOS;
+            av_log(ctx, AV_LOG_WARNING, "super-sampling not supported for output dimensions, using lanczos instead.\n");
+        }
+        if (s->interp_algo == NPPI_INTER_SUPER &&
+            !(out_width < in_width && out_height < in_height)) {
+            s->interp_algo = NPPI_INTER_CUBIC;
+            av_log(ctx, AV_LOG_WARNING, "super-sampling not supported for output dimensions, using cubic instead.\n");
+        }
+    }
+
     if (!s->stages[STAGE_RESIZE].stage_needed && in_format == out_format)
         s->passthrough = 1;
 



More information about the ffmpeg-cvslog mailing list