From: Marton Balint <cus@passwd.hu> To: ffmpeg-devel@ffmpeg.org Cc: Marton Balint <cus@passwd.hu> Subject: [FFmpeg-devel] [PATCH 4/4] avfilter/vf_geq: fix interpolation with 1 pixel width/height Date: Thu, 9 May 2024 08:49:18 +0200 Message-ID: <20240509064918.6654-4-cus@passwd.hu> (raw) In-Reply-To: <20240509064918.6654-1-cus@passwd.hu> Fixes ticket #9740. Signed-off-by: Marton Balint <cus@passwd.hu> --- libavfilter/vf_geq.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libavfilter/vf_geq.c b/libavfilter/vf_geq.c index dbe50e5250..12604d44a2 100644 --- a/libavfilter/vf_geq.c +++ b/libavfilter/vf_geq.c @@ -112,8 +112,12 @@ static inline double getpix(void *priv, double x, double y, int plane) return 0; if (geq->interpolation == INTERP_BILINEAR) { - xi = x = av_clipd(x, 0, w - 2); - yi = y = av_clipd(y, 0, h - 2); + int xn, yn; + + xi = x = av_clipd(x, 0, w - 1); + yi = y = av_clipd(y, 0, h - 1); + xn = av_clip(xi + 1, 0, w - 1); + yn = av_clip(yi + 1, 0, h - 1); x -= xi; y -= yi; @@ -122,17 +126,17 @@ static inline double getpix(void *priv, double x, double y, int plane) const uint16_t *src16 = (const uint16_t*)src; linesize /= 2; - return (1-y)*((1-x)*src16[xi + yi * linesize] + x*src16[xi + 1 + yi * linesize]) - + y *((1-x)*src16[xi + (yi+1) * linesize] + x*src16[xi + 1 + (yi+1) * linesize]); + return (1-y)*((1-x)*src16[xi + yi * linesize] + x*src16[xn + yi * linesize]) + + y *((1-x)*src16[xi + yn * linesize] + x*src16[xn + yn * linesize]); } else if (geq->bps == 32) { const float *src32 = (const float*)src; linesize /= 4; - return (1-y)*((1-x)*src32[xi + yi * linesize] + x*src32[xi + 1 + yi * linesize]) - + y *((1-x)*src32[xi + (yi+1) * linesize] + x*src32[xi + 1 + (yi+1) * linesize]); + return (1-y)*((1-x)*src32[xi + yi * linesize] + x*src32[xn + yi * linesize]) + + y *((1-x)*src32[xi + yn * linesize] + x*src32[xn + yn * linesize]); } else if (geq->bps == 8) { - return (1-y)*((1-x)*src[xi + yi * linesize] + x*src[xi + 1 + yi * linesize]) - + y *((1-x)*src[xi + (yi+1) * linesize] + x*src[xi + 1 + (yi+1) * linesize]); + return (1-y)*((1-x)*src[xi + yi * linesize] + x*src[xn + yi * linesize]) + + y *((1-x)*src[xi + yn * linesize] + x*src[xn + yn * linesize]); } } else { xi = av_clipd(x, 0, w - 1); -- 2.35.3 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2024-05-09 6:50 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-05-09 6:49 [FFmpeg-devel] [PATCH 1/4] avfilter/vsrc_testsrc: do not round down width and height for color src Marton Balint 2024-05-09 6:49 ` [FFmpeg-devel] [PATCH 2/4] avfilter/blend: put slice parameters to a single struct Marton Balint 2024-05-09 6:49 ` [FFmpeg-devel] [PATCH 3/4] avfilter/blend: use a per-thread AVExpr Marton Balint 2024-05-09 6:49 ` Marton Balint [this message] 2024-05-11 1:57 ` [FFmpeg-devel] [PATCH 4/4] avfilter/vf_geq: fix interpolation with 1 pixel width/height Michael Niedermayer 2024-05-13 19:43 ` Marton Balint
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20240509064918.6654-4-cus@passwd.hu \ --to=cus@passwd.hu \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git