mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
avfilter/vf_threshold: fix handling of zero threshold
This commit is contained in:
parent
0e5e3b37c0
commit
00b03331a0
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user