2011/9/29 Mans Rullgard mans.rullgard@linaro.org:
2011/9/29 Feng Wei feng.wei@linaro.org:
When I configure the libav, I got -- "... C compiler gcc ARCH arm (generic) big-endian no runtime cpu detection no ARMv5TE enabled yes ARMv6 enabled yes ARMv6T2 enabled yes ARM VFP enabled yes IWMMXT enabled no NEON enabled no debug symbols yes optimize for size no optimizations yes ..."
and i find the log info "... check_asm neon "vadd.i16 q0, q0, q0" check_as BEGIN /tmp/ffconf.55xwYuP7.c 1 void foo(void){ __asm__ volatile("vadd.i16 q0, q0, q0"); } END /tmp/ffconf.55xwYuP7.c gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -c -o /tmp/ffconf.3j1rIVOW.o /tmp/ffconf.55xwYuP7.c /tmp/cc9mWCWX.s: Assembler messages: /tmp/cc9mWCWX.s:29: Error: selected FPU does not support instruction -- `vadd.i16 q0,q0,q0' ..."
This means your compiler doesn't default to NEON, and you didn't add -mfpu=neon manually. Try passing --extra-cflags=-mfpu=neon to configure.
Were your benchmarks done without NEON enabled? I get almost exactly the same speed on Beagle-xm and Panda, both at 1GHz.
-- Mans Rullgard / mru
I rebuild the libav with neon enabled, and I got the new benchmark, as below
time avconv -i SourceCode.dts -f s16le a.pcm panda -- 4.135s (53% better than non-neon version 6.320s) mx53 -- 19.054s (165% better than non-neon version 50.526s)
So as mru said, dts is mostly neon optimized. Although it's not so reasonable on A8 cpu, I think we don't need to put it into next cycle.