FFMpeg sws_scale静态和共享的巨大性能差异

时间:2018-11-06 16:15:48

标签: c++ ffmpeg

我在代码中使用swscale作为共享库,然后使用Visual Studio使用此命令将FFMpeg(4.1)编译为静态库,只是为了获得swscale:

./configure --toolchain=msvc --arch=x86_32 --disable-everything --disable-programs 

我安装了nasm和yasm。这是我的配置输出:

install prefix            /usr/local
source path               .
C compiler                cl
C library                 msvcrt
ARCH                      x86 (generic)
big-endian                no
runtime cpu detection     yes
standalone assembly       yes
x86 assembler             nasm
MMX enabled               yes
MMXEXT enabled            yes
3DNow! enabled            yes
3DNow! extended enabled   yes
SSE enabled               yes
SSSE3 enabled             yes
AESNI enabled             yes
AVX enabled               yes
AVX2 enabled              yes
AVX-512 enabled           yes
XOP enabled               yes
FMA3 enabled              yes
FMA4 enabled              yes
i686 features enabled     yes
CMOV is fast              no
EBX available             no
EBP available             no
debug symbols             yes
strip symbols             no
optimize for size         no
optimizations             yes
static                    yes
shared                    no
postprocessing support    no
network support           yes
threading support         w32threads
safe bitstream reader     yes
texi2html enabled         no
perl enabled              no
pod2man enabled           no
makeinfo enabled          no
makeinfo supports HTML    no

External libraries:
schannel

External libraries providing hardware acceleration:
d3d11va                    dxva2

Libraries:
avcodec                    avdevice                   avfilter                   avformat                   avutil                     swresample                 swscale

Programs:
Enabled decoders:
Enabled encoders:
Enabled hwaccels:
Enabled parsers:
Enabled demuxers:
Enabled muxers:
Enabled protocols:
Enabled filters:
Enabled bsfs:
null
Enabled indevs:
Enabled outdevs:

编译成功,我在QT中将lib文件替换为.a文件:

INCLUDEPATH += $$PWD/ffmpeg/inc/
LIBS += $$files($$PWD/ffmpeg/lib/*.a, true)

我什么都没改变。 EXE可以正常运行而没有依赖关系,但是问题是静态swscale比共享swscale慢得多。对于1080p, share .DLL需要2ms 收缩并将yuv转换为rgb和 static .A需要6ms

我也尝试删除了--disable-everything --disable-programs,但还是一样。我想知道是因为cl编译器,还是错过了库或设置?

顺便说一下,我的系统是:Win10 / i7 4820K / 16GB / GTX970

编辑:

我在应用程序输出中得到了这个: 找不到从yuv420p到bgra的加速色彩空间转换。 尽管swscale中的x86文件夹已编译,但似乎未在输出中链接它。

0 个答案:

没有答案