今天做了个小小的尝试,在x264运行的起始点稍微改了一下,强制所有浮点运算都使用32位长度。因为浮点运算本来就不准确,而且视频编码也不是什么要求特别精确的东西,所以想看看这样能不能提升速度。
实验的结果是,速度稍微有一点点提升。以下是编码日志
x264 [info]: slice I:5 Avg QP:15.14 size: 19088
x264 [info]: slice P:302 Avg QP:15.42 size: 1057
x264 [info]: slice B:193 Avg QP:17.60 size: 308
x264 [info]: consecutive B-frames: 33.7% 33.9% 26.7% 5.7%
x264 [info]: mb I I16..4: 13.3% 49.5% 37.2%
x264 [info]: mb P I16..4: 0.3% 0.4% 0.2% P16..4: 29.3% 3.1% 2.6% 0.1% 0.0%skip:64.0%
x264 [info]: mb B I16..4: 0.2% 0.0% 0.0% B16..8: 6.6% 0.1% 0.1% direct: 7.7% skip:85.2% L0:47.4% L1:50.0% BI: 2.7%
x264 [info]: 8x8 transform intra:45.2% inter:48.6%
x264 [info]: ref P L0 83.2% 9.8% 6.9%
x264 [info]: ref B L0 77.3% 22.7%
x264 [info]: ref B L1 86.4% 13.6%
x264 [info]: SSIM Mean Y:0.9939956
x264 [info]: kb/s:182.1
encoded 500 frames, 12.78 fps, 182.40 kb/s
这个是修改前的
x264 [info]: slice I:5 Avg QP:15.14 size: 19088
x264 [info]: slice P:302 Avg QP:15.42 size: 1057
x264 [info]: slice B:193 Avg QP:17.60 size: 308
x264 [info]: consecutive B-frames: 33.7% 33.9% 26.7% 5.7%
x264 [info]: mb I I16..4: 13.3% 49.5% 37.2%
x264 [info]: mb P I16..4: 0.3% 0.4% 0.2% P16..4: 29.3% 3.1% 2.6% 0.1% 0.0%skip:64.0%
x264 [info]: mb B I16..4: 0.2% 0.0% 0.0% B16..8: 6.6% 0.1% 0.1% direct: 7.7% skip:85.2% L0:47.4% L1:50.0% BI: 2.7%
x264 [info]: 8x8 transform intra:45.2% inter:48.6%
x264 [info]: ref P L0 83.2% 9.8% 6.9%
x264 [info]: ref B L0 77.3% 22.7%
x264 [info]: ref B L1 86.4% 13.6%
x264 [info]: SSIM Mean Y:0.9939956
x264 [info]: kb/s:182.1
encoded 500 frames, 13.09 fps, 182.40 kb/s
这是修改后的
发现ssim的值没有变(不过二进制比较编码结果,是不同的
测试使用的原版和改版下载:
http://www.namipan.com/d/06a68aa3d45a94e71f7dcd05f12afc5a399091b5cbae0500具体所做的修改,是在程序运行的最开始,加一句代码,把fpu的运算控制寄存器给改了,变成单精度……达到提速的目的(虽然不确定这到底是不是偶然现象……因为速度差别确实是不大)。
步骤:
在x264.exe 0x680字节处(在内存中运行的时候,是0x401280),把
pushebp
mov ebp, esp
sub esp, 8
改为
jmp 00496348
nop
然后在0x95748字节处(内存0x496348)把那一串零改为
pushebp
mov ebp, esp
sub esp, 8
fldcw word ptr [496359]
jmp 00401286
最后把0x95759字节处(内存0x496359)的两个字节改为 7f 00
然后就算改完了
(不过也不能确定x264在运行过程中会不会把这个标志改回来)
ps:以下是发本贴的目的……
有没有人能指导我如何编译自己的x264?最好能从获取代码开始一直到获得编译好的exe……如果能尝试拿源代码来下手,修改起来会容易的多