[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