[FFmpeg-devel] [PATCH] swscale/output: Altivec-optimize float yuv2plane1
Michael Niedermayer
michael at niedermayer.cc
Sun Dec 16 01:22:00 EET 2018
On Sat, Dec 15, 2018 at 06:32:31PM +0200, Lauri Kasanen wrote:
> This function wouldn't benefit from VSX instructions, and input
> and output share alignment, so I put it under altivec.
>
> ./ffmpeg_g -f rawvideo -pix_fmt rgb24 -s hd1080 -i /dev/zero -pix_fmt grayf32le \
> -f null -vframes 100 -v error -nostats -
>
> 3743 UNITS in planar1, 65495 runs, 41 skips
>
> -cpuflags 0
>
> 23511 UNITS in planar1, 65530 runs, 6 skips
>
> grayf32be
>
> 4647 UNITS in planar1, 65449 runs, 87 skips
>
> -cpuflags 0
>
> 28608 UNITS in planar1, 65530 runs, 6 skips
>
> The native speedup is 6.28133, and the bswapping one 6.15623.
> Fate passes, each format tested with an image to video conversion.
>
> Signed-off-by: Lauri Kasanen <cand at gmx.com>
> ---
>
> Tested on POWER8 LE. Testing on earlier ppc and/or BE appreciated.
>
> libswscale/ppc/swscale_altivec.c | 139 ++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 137 insertions(+), 2 deletions(-)
breaks build:
CC libswscale/ppc/swscale_altivec.o
In file included from src/libswscale/ppc/swscale_altivec.c:103:0:
src/libswscale/ppc/swscale_ppc_template.c: In function ‘yuv2planeX_16_altivec’:
src/libswscale/ppc/swscale_ppc_template.c:52:215: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
yuv2planeX_8(vo1, vo2, l1, src[j], x, perm, vLumFilter);
^
In file included from src/libswscale/ppc/swscale_altivec.c:103:0:
src/libswscale/ppc/swscale_ppc_template.c:53:219: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
yuv2planeX_8(vo3, vo4, l1, src[j], x + 8, perm, vLumFilter);
^
In file included from src/libswscale/ppc/swscale_altivec.c:103:0:
src/libswscale/ppc/swscale_ppc_template.c: In function ‘hScale_real_altivec’:
src/libswscale/ppc/swscale_ppc_template.c:189:21: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
vector signed short src_vA = // vec_unpackh sign-extends...
^
src/libswscale/ppc/swscale_ppc_template.c:196:21: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
vector signed int val_acc = vec_msums(src_vA, filter_v0, val_v);
^
src/libswscale/ppc/swscale_altivec.c: In function ‘yuv2plane1_float_altivec’:
src/libswscale/ppc/swscale_altivec.c:158:80: error: expected declaration specifiers or ‘...’ before ‘(’ token
const vector float vzero = (vector float) {0, 0, 0, 0};
^
src/libswscale/ppc/swscale_altivec.c:159:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
vector uint32_t v;
^
src/libswscale/ppc/swscale_altivec.c:172:9: error: invalid parameter combination for AltiVec intrinsic
vd = vec_madd(vd, vmul, vzero);
^
src/libswscale/ppc/swscale_altivec.c: In function ‘yuv2plane1_float_bswap_altivec’:
src/libswscale/ppc/swscale_altivec.c:191:80: error: expected declaration specifiers or ‘...’ before ‘(’ token
const vector float vzero = (vector float) {0, 0, 0, 0};
^
src/libswscale/ppc/swscale_altivec.c:192:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
const vector uint32_t vswapbig = (vector uint32_t) {16, 16, 16, 16};
^
src/libswscale/ppc/swscale_altivec.c:207:9: error: invalid parameter combination for AltiVec intrinsic
vd = vec_madd(vd, vmul, vzero);
^
make: *** [libswscale/ppc/swscale_altivec.o] Error 1
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
I have often repented speaking, but never of holding my tongue.
-- Xenocrates
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20181216/7f24f595/attachment.sig>
More information about the ffmpeg-devel
mailing list