Message ID | 1406ead0-d114-12e4-927b-2c53a9ba8057@sky.com |
---|---|
State | Accepted |
Headers | show |
2016-09-09 12:13 GMT+02:00 Sven C. Dack <sven.c.dack@sky.com>: > It tells me my change log entry is missing. > > I've commited it with: git commit vf_scale_npp.c > > Entered my comment and applied format-patch: git format-patch -1 > vf_scale_npp.c > > How would I get the missing change log entry in there? The change to the file Changelog in FFmpeg's root is only necessary if you make a major addition to FFmpeg (like a new filter, not a fix for an existing filter). Carl Eugen
Moin Sven, On Fri, Sep 09, 2016 at 11:13:55 +0100, Sven C. Dack wrote: I may be missing something, but my excuse is that I can't test, but just inspect by looking at it: > + 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"); > + } > + } Let's assume s->interp_algo=NPPI_INTER_SUPER, out_width>in_width, out_height>in_height: if (true && (true && true)) { } if (true && !(false && false) { } Both blocks will be entered! Didn't you see both messages when testing? Your commit message says ffmpeg needs to choose a different algo if both dimensions aren't smaller, that's the second if(), which should be the top-level decider: > + if (s->interp_algo == NPPI_INTER_SUPER && > + !(out_width < in_width && out_height < in_height)) { Then you seem to choose lanczos only if both are greater, so let me do this as such: > + if (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"); > + } then the rest (i.e. one larger or equal, one smaller) would be cubic: > + else { > + s->interp_algo = NPPI_INTER_CUBIC; > + av_log(ctx, AV_LOG_WARNING, "super-sampling not supported for output dimensions, using cubic instead.\n"); > + } > + } Was that the intent? Gruß, Moritz
On 11/09/16 18:55, Moritz Barsnick wrote: > Moin Sven, > > On Fri, Sep 09, 2016 at 11:13:55 +0100, Sven C. Dack wrote: > > I may be missing something, but my excuse is that I can't test, but just > inspect by looking at it: > >> + 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"); >> + } >> + } The value s->interp_algo gets change in each body. There is no way it can enter the second body if it entered the first, because the value is part of both the conditions. I thought about some neat logic at first, but decided to do it this way for more readability. Now you've put me on the spot... Your call. Sven
On Sun, Sep 11, 2016 at 19:04:39 +0100, Sven C. Dack wrote: > the second body if it entered the first, because the value is part of both the > conditions. D'uh, I missed that part. (It wasn't obvious enough to me. ;-)) > I thought about some neat logic at first, but decided to do it this > way for more readability. Now you've put me on the spot... Your call. In that case, the code you wrote is just fine, albeit a bit more difficult to grasp - for me. It's not my call at all, I'm just commenting. Moritz
From aacd8ecc2f39a45bbfdf6780d9b3b13e6ed0fb41 Mon Sep 17 00:00:00 2001 From: "Sven C. Dack" <sven@debian-linux.no.domain> Date: Fri, 9 Sep 2016 10:18:07 +0100 Subject: [PATCH] Select cubic and lanczos as alternative where super-sampling is not supported --- 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..82ba2f4 100644 --- a/libavfilter/vf_scale_npp.c +++ b/libavfilter/vf_scale_npp.c @@ -294,10 +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; -- 2.9.3