【x264】x264编码器工具性能的简单测试

随着视频编码器的不断迭代和更新,会有一些工具的优化,也会有一些代码结构的优化,有一个比较重要的问题是,现如今的编码器中各类工具在不同情况下的编码器性能是怎样的,这是优化编码器的重要依据。本文记录x264编码器中各类工具在不同的情况下的编码性能,可以做有限性的参考。需要注意的是,本文的测试只局限于工具级别,不讨论使用什么样的参数会带来特定场景下更好的性能,例如码率控制模块使用多少目标比特,滤波模块使用什么样的alpha和beta值。

1.实验方法

1.1 实验序列

随机选择了一些不同分辨率的序列,包括832x480、1280x720和1920x1080,其中一些场景属于运动较为剧烈的场景,如BasketballDrill和BasketballDrive,一些属于会议或直播类的画面平缓场景,如FourPeople和KristenAndSara,还有一些类似于摄像头监控场景,如PartyScene和BQTerrace。这些序列场景不同,分辨率不同,帧率也不同,能够在一定程度上反应x264的泛化编码性能。本文记录时,使用的x264的软件版本为164,使用的处理器为AMD Ryzen 5 4600H with Radeon Graphics 3.00 GHz。

表1 实验序列
名称分辨率FPS帧数
BasketballDrill_832x480_50.yuv832x48050500
PartyScene_832x480_50.yuv832x48050500
BQMall_832x480_60.yuv832x48060600
FourPeople_1280x720_60.yuv1280x72060600
Crew_1280x720_60.yuv1280x72060600
KristenAndSara_1280x720_60.yuv1280x72060600
BasketballDrive_1920x1080_50.yuv1920x108050500
BQTerrace_1920x1080_60.yuv1920x108060600
Cactus_1920x1080_50.yuv1920x108050500

1.2 实验指标

通常来说,评估编码器的性能使用的是BD-BR(G. Bjontegaard, “Calculation of average PSNR differences between RDcurves,” in the 13th Meeting of VCEG-M33, Austin, TX, Apr. 2–4, 2001.,可以参考,视频编码指标中的BD-BR/BD-rate和BD-PSNR的说明和计算(Excel Method and Matlab Method)),需要测试4个QP点对应的码率和PSNR。对于H264标准编码器而言,测试的QP点通常为 {22, 27, 32, 37},但是这样的测试比较耗费时间。为了简便起见,本文使用x264默认的编码参数,即crf = 23(不进行外部指定),评估了FPS,Bitrate,PSNR这3个指标,分别对应于编码帧率,编码比特率,编码质量。

对于FPS和Bitrate,增益(gain)的计算公式如下。如果计算的是FPS,则gain为正时,代表提升性能,如果计算的是Bitrate,则增益为负时,代表提升性能。
g a i n = ( t e s t a n c h o r − 1 ) ∗ 100 % gain=(\frac{test}{anchor}-1) * 100\% gain=(anchortest1)100%

对于质量指标PSNR,仅使用test和anchor的差值来衡量,差值为正时,代表提升性能。

1.3 实验脚本

在实验时,为了保证编码速度测试的合理性,将命令行写在一个script中,这样就在同一个线程下进行测试。同时,关闭所有其他的软件,防止产生内存竞争,影响测试性能。在实验时,对一种情况需要多测试几遍,以避免产生误差。

实验的命令行举例如下,在下面的例子中,计算了一个分辨率为1280x720序列,不同profile的性能,包括baseline、main和high。参数–psnr表明x264编码器需要输出PSNR。这里需要解释一下–tune这个参数(可以使用help查看),–tune psnr展开为–aq-mode 0 --no-psy,即不开启aq,也不使用psy(心理视觉)情况下计算psnr。psy是心理视觉来调整码控的一种工具,以主观的感知来调整qp,从而获得主观上的质量提升,但是PSNR是客观质量,所以应该禁用psy。同时,aq也是用于调整主观质量的技术,在计算PSNR时需要禁用aq,所以不能够直接计算客观质量。

.\x264.exe test.yuv --input-res 1280x720 --fps 30 --profile baseline --psnr --tune psnr -o test.h264 > .\test_log\profile_baseline.log
.\x264.exe test.yuv --input-res 1280x720 --fps 30 --profile main --psnr --tune psnr -o test.h264 > .\test_log\profile_main.log
.\x264.exe test.yuv --input-res 1280x720 --fps 30 --profile high --psnr --tune psnr -o test.h264 > .\test_log\profile_high.log

另外,如果想计算SSIM,可以使用参数–ssim --tune ssim,与计算PSNR不同的是,–tune ssim展开为–aq-mode 2 --no-psy。

展示一个测试出来的log文件,是Crew序列的high profile,其中124.30fps表示FPS,4084.72kb/s表示编码码率,本文记录的PSNR来自于下面的Avg:39.589,单位是dB。

yuv [info]: x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x264 [info]: profile High, level 3.2, 4:2:0, 8-bit
x264 [info]: frame I:4     Avg QP:27.55  size: 40176  PSNR Mean Y:40.25 U:44.43 V:44.87 Avg:41.27 Global:41.27
x264 [info]: frame P:172   Avg QP:29.32  size: 16097  PSNR Mean Y:38.85 U:43.41 V:43.66 Avg:39.93 Global:39.91
x264 [info]: frame B:424   Avg QP:30.86  size:  5133  PSNR Mean Y:38.32 U:43.11 V:43.50 Avg:39.44 Global:39.42
x264 [info]: consecutive B-frames:  3.5%  5.0%  5.5% 86.0%
x264 [info]: mb I  I16..4: 37.5% 50.3% 12.2%
x264 [info]: mb P  I16..4: 18.0% 13.8%  1.9%  P16..4: 28.7%  7.9%  2.3%  0.0%  0.0%    skip:27.5%
x264 [info]: mb B  I16..4:  3.9%  2.3%  0.3%  B16..8: 24.8%  4.1%  0.5%  direct: 2.2%  skip:61.9%  L0:40.1% L1:49.2% BI:10.7%
x264 [info]: 8x8 transform intra:39.9% inter:76.8%
x264 [info]: coded y,uvDC,uvAC intra: 32.4% 36.1% 13.1% inter: 12.3% 11.0% 0.3%
x264 [info]: i16 v,h,dc,p: 47% 22% 17% 13%
x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 12% 27%  5%  7%  8%  6%  6%  6%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 17% 21%  4%  7%  7%  6%  4%  4%
x264 [info]: i8c dc,h,v,p: 64% 11% 21%  4%
x264 [info]: Weighted P-Frames: Y:50.0% UV:41.9%
x264 [info]: ref P L0: 49.7% 18.7% 16.7% 10.8%  4.1%
x264 [info]: ref B L0: 88.9%  8.9%  2.1%
x264 [info]: ref B L1: 97.2%  2.8%
x264 [info]: PSNR Mean Y:38.489 U:43.204 V:43.554 Avg:39.589 Global:39.563 kb/s:4084.72
encoded 600 frames, 124.30 fps, 4084.72 kb/s

2. 配置文件(profile)

profile是实验的基础,不同的profile会使用不同的编码工具,在这里测试了3种配置文件,分别是baseline、main和high,使用的命令行为

.\x264.exe test.yuv --input-res 1280x720 --fps 30 --profile baseline --psnr --tune psnr -o test.h264 > .\test_log\ssim\profile_baseline.log
.\x264.exe test.yuv --input-res 1280x720 --fps 30 --profile main     --psnr --tune psnr -o test.h264 > .\test_log\ssim\profile_main.log
.\x264.exe test.yuv --input-res 1280x720 --fps 30 --profile high     --psnr --tune psnr -o test.h264 > .\test_log\ssim\profile_high.log
表2 不同配置文件的性能
profileFPSBitratePSNR
Anchor (baseline)
main-12.59%-28.59%0.259dB
high-14.20%-26.35%0.435dB

从表2中看出,从baseline profile到main profile,编码速度减慢了12.59%,但编码码率同时下降了28.59%,同时还有0.259dB的质量增益。

同时,从baseline到high,编码速度下降了14.20%,但码率下降了接近26.35%,并且带来了多达0.435dB的PSNR增益。对比main和high两个档位,编码速度和比特率相差不大,但编码质量相差很大,high profile带来的码率节省和PSNR增益明显优于main档位,这也是为什么在x264当中默认使用high profile。

在后续的实验当中,均以high profile作为anchor,以此为基础来考察不同工具带来的性能增益。

3. 块尺寸

块划分是编码器执行的第一步,不同的尺寸会影响后续的分析过程(预测过程),这里测试不同的块尺寸的性能,但不会测试16x16块的skip,因为全部skip就不存在编码了。

查看一下x264当中关于块尺寸的初始化配置,位于common/base.c的x264_param_default()中,默认会配置analyse.intra为I4x4和I8x8,analyse.inter为I4x4,I8x8,PSUB16x16以及BSUB16x16。

// 在分析模块中会分析4x4和8x8的块
param->analyse.intra = X264_ANALYSE_I4x4 | X264_ANALYSE_I8x8;
// 会分析4x4, 8x8, P帧16x16和B帧16x16的块
param->analyse.inter = X264_ANALYSE_I4x4 | X264_ANALYSE_I8x8 
					   | X264_ANALYSE_PSUB16x16 | X264_ANALYSE_BSUB16x16; 

3.1 Intra划分

通过外部参数可以控制intra的划分尺寸,例如可以通过配置ultrafast模式,禁用intra分析,可以配置–preset ultrafast来启用这个模式

static int param_apply_preset( x264_param_t *param, const char *preset )
{
    char *end;
    int i = strtol( preset, &end, 10 );
    if( *end == 0 && i >= 0 && i < ARRAY_ELEMS(x264_preset_names)-1 )
        preset = x264_preset_names[i];

    if( !strcasecmp( preset, "ultrafast" ) )
    {
		// ...
        param->analyse.intra = 0;
        param->analyse.inter = 0;
        param->analyse.b_transform_8x8 = 0;
		// ...
    }

如果使用其他模式,可以通过analyse.b_fransform_8x8这个参数来控制intra不对8x8的块进行分析

if( !h->param.analyse.b_transform_8x8 )
{
    h->param.analyse.inter &= ~X264_ANALYSE_I8x8;
    h->param.analyse.intra &= ~X264_ANALYSE_I8x8;
}

但是,上述的两种做法也会影响到inter划分。如果想只考虑intra划分,可以通过hardcode的方式来跳过针对于I4x4或者I8x8的分析。举例来说,可以在mb_analyse_intra()中配置跳过I4x4分析,这样的修改方式不会影响其他的地方,打包生成exe就可以用script测试了

if( flags & X264_ANALYSE_I4x4 ) // 将括号中判断条件置零,来跳过I4x4分析
{
	// printf("impl. test, should not analyse 4x4");
    int i_cost = lambda * (24+16); /* 24from JVT (SATD0), 16 from base predmode costs */
    int i_satd_thresh = a->b_early_terminate ? X264_MIN3( i_satd_inter, a->i_satd_i16x16, a->i_satd_i8x8 ) : COST_MAX;
    h->mb.i_cbp_luma = 0;

    if( a->b_early_terminate && a->i_mbrd )
        i_satd_thresh = i_satd_thresh * (10-a->b_fast_intra)/8;
    // ...
}

3.2 inter划分

x264中允许通过参数来控制inter划分,如下所示

-A, --partitions <string>   Partitions to consider ["p8x8,b8x8,i8x8,i4x4"]
                              - p8x8, p4x4, b8x8, i8x8, i4x4, none, all
                              (p4x4 requires p8x8. i8x8 requires --8x8dct.)

其中,[“p8x8,b8x8,i8x8,i4x4”]表示默认会考虑的划分尺寸,包括P帧8x8,B帧8x8,I帧8x8以及I帧4x4,也可以再自行添加一个p4x4的尺寸考虑,p4x4需要p8x8,i8x8需要开启8x8的DCT。

配置输入参数,位于common/base.c的x264_param_parse()中,其中根据外部输入的尺寸来设置analyse.inter,这里配置的参数仅对inter有效,对intra没有影响。

OPT2("analyse", "partitions")
{
    p->analyse.inter = 0;
    if( strstr( value, "none" ) )  p->analyse.inter =  0;
    if( strstr( value, "all" ) )   p->analyse.inter = ~0;

    if( strstr( value, "i4x4" ) )  p->analyse.inter |= X264_ANALYSE_I4x4;
    if( strstr( value, "i8x8" ) )  p->analyse.inter |= X264_ANALYSE_I8x8;
    if( strstr( value, "p8x8" ) )  p->analyse.inter |= X264_ANALYSE_PSUB16x16;
    if( strstr( value, "p4x4" ) )  p->analyse.inter |= X264_ANALYSE_PSUB8x8; // 默认不启用
    if( strstr( value, "b8x8" ) )  p->analyse.inter |= X264_ANALYSE_BSUB16x16;
}

举例来说,可以通过如下的方式来调整inter划分

// 默认配置
.\x264.exe test.yuv --input-res 1280x720 --fps 30 --profile high -A p8x8,b8x8,i8x8,i4x4 -o test.h264
// 禁用inter 4x4
.\x264.exe test.yuv --input-res 1280x720 --fps 30 --profile high -A p8x8,b8x8,i8x8 -o test.h264
// 禁用inter p8x8,表示不会对小于16x16的块进行分析
.\x264.exe test.yuv --input-res 1280x720 --fps 30 --profile high -A b8x8,i8x8,i4x4 -o test.h264

3.3 测试

针对上述intra和inter划分的情况进行测试,结果用百分比显示。实验script举例如下

.\x264.exe test.yuv                  --input-res 1280x720 --fps 30 --profile high --psnr --tune psnr -o test.h264 > .\test_log\org.log

:: intra
.\intra_analyse_no_4x4.exe test.yuv --input-res 1280x720 --fps 30 --profile high --psnr --tune psnr -o test.h264 > .\test_log\intra_analyse_no_4x4.log
.\intra_analyse_no_8x8.exe test.yuv --input-res 1280x720 --fps 30 --profile high --psnr --tune psnr -o test.h264 > .\test_log\intra_analyse_no_8x8.log
.\intra_analyse_no_4_8.exe test.yuv --input-res 1280x720 --fps 30 --profile high --psnr --tune psnr -o test.h264 > .\test_log\intra_analyse_no_4_8.log

:: inter
.\x264.exe test.yuv                 --input-res 1280x720 --fps 30 --profile high --psnr --tune psnr -A p8x8,b8x8,i8x8 -o test.h264 > .\test_log\inter_analyse_no_i4x4.log
.\x264.exe test.yuv                 --input-res 1280x720 --fps 30 --profile high --psnr --tune psnr -A p8x8,b8x8,i4x4 -o test.h264 > .\test_log\inter_analyse_no_i8x8.log
.\x264.exe test.yuv                 --input-res 1280x720 --fps 30 --profile high --psnr --tune psnr -A b8x8,i8x8,i4x4 -o test.h264 > .\test_log\inter_analyse_no_p8x8.log
.\x264.exe test.yuv                 --input-res 1280x720 --fps 30 --profile high --psnr --tune psnr -A p8x8,i8x8,i4x4 -o test.h264 > .\test_log\inter_analyse_no_b8x8.log
表3 intra和inter不同尺寸划分性能
FPSBitratePSNR
Anchor (high profile)
intra_no_4x4-0.10%0.45%-0.008dB
intra_no_8x81.38%0.56%-0.004dB
intra_no_4_81.73%2.15%-0.077dB
inter_no_i4x40.50%0.25%-0.008dB
inter_no_i8x80.94%0.43%-0.028dB
inter_no_p8x811.84%3.08%-0.004dB
inter_no_b8x85.01%1.66%-0.020dB

值得一提的是,在intra_no_i4x4的测试中,出现了BQMall这个序列FPS异常低的情况,相对于org降低了45%,属于异常值,没有纳入统计的结果之中。

从测试结果中可以得出一些结论:
(1)intra块的处理带来的帧率和码率影响程度比较小,这是因为使用x264默认的配置时,intra帧的数量非常少,大部分是B帧,其次是P帧
(2)inter_no_p8x8尺寸对于帧率影响比较大,为11.84%,码率的影响为3.08%,这是比较单独处理块尺寸中影响最大的一个尺寸。这是因为P帧是帧间预测中最耗时的帧,如果禁用,会带来很大的FPS增益。
(3)inter_no_b8x8尺寸对于帧率有一定影响,大约为5%,码率的影响为1.66%。B帧的处理相对于P帧的处理而言,帧率的影响较小,尽管编码过程中B帧序列是最多的,但是B帧的编码工具较少,所以产生的FPS增益比较小。

举例而言,对于BasketballDrive这个1080P序列而言,使用x264时的默认配置,编码I帧数量为2帧,P帧数量为126帧,B帧数量为372帧。尽管inter帧中也有可能存在intra块,但是数量是非常少的。

x264 [info]: frame I:2     Avg QP:27.23  size: 92264  PSNR Mean Y:38.90 U:43.39 V:43.99 Avg:40.00 Global:39.98
x264 [info]: frame P:126   Avg QP:28.23  size: 50261  PSNR Mean Y:37.62 U:42.03 V:42.55 Avg:38.69 Global:38.67
x264 [info]: frame B:372   Avg QP:30.55  size: 15030  PSNR Mean Y:37.13 U:41.82 V:42.15 Avg:38.23 Global:38.19

4.预测工具

在预测模块,帧内预测影响性能的方式主要来自于不同的预测模式,这里不做记录。主要查看帧间预测当中使用的一些工具,包括
(1)参考帧数量,配置项为 --ref,设置参数内容为 {1, 2, 4, 8, 16}
(2)I帧和P帧之间B帧数量,配置项为 --bframes,设置参数范围为 [0, 3]
(3)运动搜索范围,配置项为 --merange,配置内容为 {20, 24}
(4)运动搜索方法,配置项为–me,配置内容为 {dia, umh, esa, tesa}
(5)亚像素搜索精度,配置项为–subme,配置范围为 [1, 9]

这些工具不能直接禁用,可以通过配置参数来调整,默认的配置为

param->i_frame_reference = 3;	// 参考帧数量 = 3
param->i_bframe = 3;	// B帧数量 = 3
param->i_bframe_pyramid = X264_B_PYRAMID_NORMAL; // B帧结构 = normal
param->analyse.i_me_range = 16; // 运动搜索范围 = 16
param->analyse.i_me_method = X264_ME_HEX; // 运动搜索方法 = 六边形搜索
param->analyse.i_subpel_refine = 7; // 亚像素优化 = 7
表4 预测模块各工具性能
FPSBitratePSNR
Anchor (high profile)
ref 113.74%4.16%-0.059dB
ref 27.13%0.99%-0.012dB
ref 4-0.23%0.01%0.000dB
ref 8-30.23%-1.87%0.033dB
ref 16-57.98%-3.29%0.059dB
bframes 03.87%24.78%-0.234dB
bframes 19.19%10.56%-0.056dB
bframes 2-0.23%3.09%-0.032dB
me range 20-0.13%0%0dB
me range 24-1.34%0%0dB
me dia2.86%0.01%-0.003dB
me umh-13.42%-0.29%0.009dB
me esa-46.94%-0.28%0.019dB
me tesa-53.04%-0.53%0.029dB
subme 180.93%17.51%-0.173dB
subme 253.49%4.48%-0.258dB
subme 328.69%7.99%-0.048dB
subme 421.97%6.44%-0.034dB
subme 513.59%5.87%0.000dB
subme 64.73%3.96%0.002dB
subme 8-6.03%-0.77%0.004dB
subme 9-30.29%-1.08%0.021dB

从帧间预测的一些工具上看,可以获得一些结论
(1)默认的参考帧数量为3,如果减小为2,编码速度提升约7%,如果减小为1,编码速度会加快13.74%,对编码码率的影响相对较小。
(2)默认B帧数量为3,减少B帧数量会带来很小的速度提升,但会带来很大的码率损失
(3)对于运动搜索方法,使用更快的dia搜索(钻石搜索),会带来少量速度提升;使用umh以及更慢的搜索方法,会带来极为明显的编码速度损失。对于最慢速度的TESA搜索,编码速度会减慢约53%。
(4)对于亚像素精度,从默认的7增加到8,速度会降低6%,几乎没有码率节省;如果从7降低到5,会带来13.59%的速度提升,但会带来5.87%的码率损失。
(5)扩大搜索范围并不会带来任何质量上的增益,也没有码率的影响。

5.变换工具

在变换模块,主要考察两个可配置参数,分别是
(1)自适应空域变换尺寸8x8,配置参数为–no-8x8dct
(2)P帧系数阈值控制,配置参数为–no-dct-decimate

这两个参数默认的配置项为

param->analyse.b_transform_8x8 = 1;
param->analyse.b_dct_decimate = 1;
表5 变换工具
FPSBitratePSNR
Anchor (high profile)
no_8x8dct2.79%-3.04%-0.176dB
no_dct_decimate-1.23%0.51%0.009dB

这里有一点奇怪,禁用8x8的dct反而带来了码率的增益

6.码率控制

在码控模块,没有考虑具体的参数数值(例如应该如何选取bitrate,如何选取VBV Buffer Size),而是考虑aq和mbtree是否使用,由于aq和mbtree是主观优化技术,所以不能计算客观质量psnr和ssim,同时主观质量评价也是一个大的领域,所以这里只记录aq和mbtree对于编码时间的影响程度。

表6 aq和mbtree性能
FPSBitrate
Anchor (high profile)
aq = 0, mbtree = 010.63%2.46%
aq = 1, mbtree = 0-1.31%31.63%
aq = 0, mbtree = 16.73%-4.45%

值得注意的是,mbtree依赖于aq,如果使用mbtree但禁用aq,编码器会强制开启aq,此时aq-strength为0,这种情况是不完整的aq模式。从上表中可以看出,单独禁用mbtree会带来明显的比特率损失,约为31%,可见mbtree在x264当中的重要作用;单独禁用aq(不完整禁用,但是aq-strength为0),反而会使得比特率有增益,这种增益应该来自于aq-strength的调整,使得与一些编码工具产生了比较好的耦合。如果同时禁用aq和mbtree,会带来10.63%的速度损失和2.46%的码率损失。

7.滤波

在滤波模块,考虑是否使用环路滤波deblock,配置参数项为–no-deblock,测试结果如下

表7 deblock工具
FPSBitratePSNR
Anchor (high profile)
no_deblock-2.10%1.64%-0.104dB

8.熵编码

对比CAVLC和CABAC两种熵编码工具,使用参数–no-cabac来禁用CABAC。

表8 熵编码CABAC
FPSBitratePSNR
Anchor (high profile)
no_cabac-1.76%8.96%-0.050dB

9.其他工具

除了前面描述的一些工具之外,还存在一些其他可以考察的工具,如下所示
(1)汇编加速工具
直接将汇编加速禁用,使用参数为–no-asm

表9 汇编加速
FPSBitratePSNR
Anchor (high profile)
no_asm-75.28%0.02%-0.0002dB

(2)场景切换

表10 场景切换
FPSBitratePSNR
Anchor (high profile)
no scenecut0.75%-0.03%0.0008dB
scenecut 20-10.17%-0.03%-0.0005dB
scenecut 300.11%-0.07%-0.0005dB
scenecut 400.40%0.23%0.004dB

10.总结

本文简单记录了x264编码器当中一些工具带来的性能增益,使用了3种不同分辨率的测试序列,并使用x264中默认的量化参数。
(1)第一,测试了不同profile之间性能的差异,发现high profile相对于main和baseline而言,有着显著的码率下降和编码质量提升的效果,码率至多下降-26.35%,PSNR至多提升0.435dB,并将此作为后续测试的anchor。
(2)第二,测试了不同块尺寸对编码性能的影响,interPSub8x8对编码速度的影响很大,如果禁用,会带来11.84%的速度增益,但会带来约3%的码率损失,这在一些快速算法当中可以考虑使用(如果可以接收这样的trade-off)。
(3)第三,测试了不同的预测工具对编码性能的影响,参考帧数量和亚像素精度影响较大,而增大搜索范围对编码质量几乎没有影响。预测工具的影响主要还是来自于预测的模式,H265当中的预测模式数量增加了许多,也带来了不小的增益。
(4)第四,测试了变换模块中禁用dct8x8的影响,奇怪的是这里禁用dct8x8反而会有一定量的码率增益,感觉与所选择的序列有很大的关系。
(5)第五,测试了滤波模块带来的影响,如果禁用deblock,会带来约1.64%的码率损失,但速度并没有提升多少
(6)第六,测试了熵编码模块中禁用CABAC的影响,如果禁用CABAC,会带来非常大的编码码率损失,为8.96%
(7)第七,测试了汇编加速影响,如果禁用汇编加速,编码速度会下降超过75%,使用汇编加速是x264比标准软件JM更快的主要原因之一
(8)最后,值得说明的是,x264当中工具很多都互有关联,即会有耦合的功效,很可能会出现1+1<2的情况,即A工具加上B工具的性能增益不如两者加起来。

目前的测试结果就是如此,以后有需要时再结合特定的序列再补充一些测试数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值