avfilter/x86/vf_threshold : add avx2 version for threshold 8
This commit is contained in:
parent
51345cb1d5
commit
9719d57b34
@ -34,7 +34,7 @@ SECTION .text
|
||||
cglobal threshold8, 10, 13, 5, in, threshold, min, max, out, ilinesize, tlinesize, flinesize, slinesize, olinesize, w, h, x
|
||||
mov wd, dword wm
|
||||
mov hd, dword hm
|
||||
mova m4, [pb_128]
|
||||
VBROADCASTI128 m4, [pb_128]
|
||||
add inq, wq
|
||||
add thresholdq, wq
|
||||
add minq, wq
|
||||
@ -70,4 +70,9 @@ RET
|
||||
INIT_XMM sse4
|
||||
THRESHOLD_8
|
||||
|
||||
%if HAVE_AVX2_EXTERNAL
|
||||
INIT_YMM avx2
|
||||
THRESHOLD_8
|
||||
%endif
|
||||
|
||||
%endif
|
||||
|
@ -30,12 +30,26 @@ void ff_threshold8_sse4(const uint8_t *in, const uint8_t *threshold,
|
||||
ptrdiff_t flinesize, ptrdiff_t slinesize,
|
||||
ptrdiff_t olinesize,
|
||||
int w, int h);
|
||||
void ff_threshold8_avx2(const uint8_t *in, const uint8_t *threshold,
|
||||
const uint8_t *min, const uint8_t *max,
|
||||
uint8_t *out,
|
||||
ptrdiff_t ilinesize, ptrdiff_t tlinesize,
|
||||
ptrdiff_t flinesize, ptrdiff_t slinesize,
|
||||
ptrdiff_t olinesize,
|
||||
int w, int h);
|
||||
|
||||
av_cold void ff_threshold_init_x86(ThresholdContext *s)
|
||||
{
|
||||
int cpu_flags = av_get_cpu_flags();
|
||||
|
||||
if (ARCH_X86_64 && EXTERNAL_SSE4(cpu_flags) && s->depth == 8) {
|
||||
s->threshold = ff_threshold8_sse4;
|
||||
if (ARCH_X86_64) {
|
||||
if (s->depth == 8) {
|
||||
if (EXTERNAL_SSE4(cpu_flags)) {
|
||||
s->threshold = ff_threshold8_sse4;
|
||||
}
|
||||
if (EXTERNAL_AVX2_FAST(cpu_flags)) {
|
||||
s->threshold = ff_threshold8_avx2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user