mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
sws/aarch64: restore ff_hscale_8_to_15_neon()
Fix final scaling and required filter alignment. Pass FATE.
This commit is contained in:
parent
56a3a3f01c
commit
040598218f
@ -51,7 +51,7 @@ function ff_hscale_8_to_15_neon, export=1
|
|||||||
add x10, x10, w6, UXTW #1 // filter2 += filterSize*2
|
add x10, x10, w6, UXTW #1 // filter2 += filterSize*2
|
||||||
addp v4.4S, v4.4S, v5.4S // horizontal pair adding of the 8x32-bit sums into 4x32-bit
|
addp v4.4S, v4.4S, v5.4S // horizontal pair adding of the 8x32-bit sums into 4x32-bit
|
||||||
addp v4.4S, v4.4S, v4.4S // horizontal pair adding of the 4x32-bit sums into 2x32-bit
|
addp v4.4S, v4.4S, v4.4S // horizontal pair adding of the 4x32-bit sums into 2x32-bit
|
||||||
sqrshrun v4.4H, v4.4S, #7 // shift and clip the 2x16-bit final values
|
sqshrn v4.4H, v4.4S, #7 // shift and clip the 2x16-bit final values
|
||||||
st1 {v4.S}[0], [x1], #4 // write to destination
|
st1 {v4.S}[0], [x1], #4 // write to destination
|
||||||
subs w2, w2, #2 // dstW -= 2
|
subs w2, w2, #2 // dstW -= 2
|
||||||
b.gt 1b // loop until end of line
|
b.gt 1b // loop until end of line
|
||||||
|
@ -31,7 +31,7 @@ av_cold void ff_sws_init_swscale_aarch64(SwsContext *c)
|
|||||||
|
|
||||||
if (have_neon(cpu_flags)) {
|
if (have_neon(cpu_flags)) {
|
||||||
if (c->srcBpc == 8 && c->dstBpc <= 14) {
|
if (c->srcBpc == 8 && c->dstBpc <= 14) {
|
||||||
//c->hyScale = c->hcScale = ff_hscale_8_to_15_neon;
|
c->hyScale = c->hcScale = ff_hscale_8_to_15_neon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1629,7 +1629,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
|
|||||||
{
|
{
|
||||||
const int filterAlign = X86_MMX(cpu_flags) ? 4 :
|
const int filterAlign = X86_MMX(cpu_flags) ? 4 :
|
||||||
PPC_ALTIVEC(cpu_flags) ? 8 :
|
PPC_ALTIVEC(cpu_flags) ? 8 :
|
||||||
have_neon(cpu_flags) ? 4 : 1;
|
have_neon(cpu_flags) ? 8 : 1;
|
||||||
|
|
||||||
if ((ret = initFilter(&c->hLumFilter, &c->hLumFilterPos,
|
if ((ret = initFilter(&c->hLumFilter, &c->hLumFilterPos,
|
||||||
&c->hLumFilterSize, c->lumXInc,
|
&c->hLumFilterSize, c->lumXInc,
|
||||||
|
Loading…
Reference in New Issue
Block a user