From: Paul B Mahol <onemda@gmail.com> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: [FFmpeg-devel] [PATCH] avfilter/vf_threshold: fix handling of zero threshold Date: Fri, 21 Oct 2022 15:25:52 +0200 Message-ID: <CAPYw7P5qj9CiWfjXKWDYi119iKCeAN_woBO3y-RnCHP9sTRMAQ@mail.gmail.com> (raw) [-- Attachment #1: Type: text/plain, Size: 16 bytes --] Patch attached. [-- Attachment #2: 0001-avfilter-vf_threshold-fix-handling-of-zero-threshold.patch --] [-- Type: text/x-patch, Size: 3006 bytes --] From 1b4cc348d05677aa844a8c553d9242812dc6890d Mon Sep 17 00:00:00 2001 From: Paul B Mahol <onemda@gmail.com> Date: Thu, 20 Oct 2022 19:38:55 +0200 Subject: [PATCH] avfilter/vf_threshold: fix handling of zero threshold Signed-off-by: Paul B Mahol <onemda@gmail.com> --- libavfilter/vf_threshold_init.h | 4 ++-- libavfilter/x86/vf_threshold.asm | 23 ++++++++--------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/libavfilter/vf_threshold_init.h b/libavfilter/vf_threshold_init.h index 7d160ddbb9..64a0a861ba 100644 --- a/libavfilter/vf_threshold_init.h +++ b/libavfilter/vf_threshold_init.h @@ -38,7 +38,7 @@ static void threshold8(const uint8_t *in, const uint8_t *threshold, { for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) - out[x] = in[x] < threshold[x] ? min[x] : max[x]; + out[x] = in[x] <= threshold[x] ? min[x] : max[x]; in += ilinesize; threshold += tlinesize; @@ -64,7 +64,7 @@ static void threshold16(const uint8_t *iin, const uint8_t *tthreshold, for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) - out[x] = in[x] < threshold[x] ? min[x] : max[x]; + out[x] = in[x] <= threshold[x] ? min[x] : max[x]; in += ilinesize / 2; threshold += tlinesize / 2; diff --git a/libavfilter/x86/vf_threshold.asm b/libavfilter/x86/vf_threshold.asm index 098069b083..8977a586c0 100644 --- a/libavfilter/x86/vf_threshold.asm +++ b/libavfilter/x86/vf_threshold.asm @@ -22,15 +22,10 @@ %include "libavutil/x86/x86util.asm" -SECTION_RODATA - -pb_128: times 16 db 128 -pb_128_0 : times 8 db 0, 128 - SECTION .text -;%1 depth (8 or 16) ; %2 b or w ; %3 constant -%macro THRESHOLD 3 +;%1 depth (8 or 16) ; %2 b or w +%macro THRESHOLD 2 %if ARCH_X86_64 cglobal threshold%1, 10, 13, 5, in, threshold, min, max, out, ilinesize, tlinesize, flinesize, slinesize, olinesize, w, h, x mov wd, dword wm @@ -45,7 +40,6 @@ cglobal threshold%1, 5, 7, 5, in, threshold, min, max, out, w, x %define olinesizeq r9mp %define hd r11mp %endif - VBROADCASTI128 m4, [%3] %if %1 == 16 add wq, wq ; w *= 2 (16 bits instead of 8) %endif @@ -63,9 +57,8 @@ cglobal threshold%1, 5, 7, 5, in, threshold, min, max, out, w, x movu m0, [thresholdq + xq] movu m2, [minq + xq] movu m3, [maxq + xq] - pxor m0, m4 - pxor m1, m4 - pcmpgt%2 m0, m1 + pminu%2 m0, m1 + pcmpeq%2 m0, m1 PBLENDVB m3, m2, m0 movu [outq + xq], m3 add xq, mmsize @@ -82,11 +75,11 @@ RET %endmacro INIT_XMM sse4 -THRESHOLD 8, b, pb_128 -THRESHOLD 16, w, pb_128_0 +THRESHOLD 8, b +THRESHOLD 16, w %if HAVE_AVX2_EXTERNAL INIT_YMM avx2 -THRESHOLD 8, b, pb_128 -THRESHOLD 16, w, pb_128_0 +THRESHOLD 8, b +THRESHOLD 16, w %endif -- 2.37.2 [-- Attachment #3: Type: text/plain, Size: 251 bytes --] _______________________________________________ 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".
reply other threads:[~2022-10-21 13:26 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=CAPYw7P5qj9CiWfjXKWDYi119iKCeAN_woBO3y-RnCHP9sTRMAQ@mail.gmail.com \ --to=onemda@gmail.com \ --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