Date: 2018.10.15


1、x262介绍及其源码下载

项目主页:​​https://www.videolan.org/developers/x262.html​

源码下载地址:​​http://git.videolan.org/?p=x262.git;a=tree​

或者:​​https://github.com/kierank/x262​

开源协议:GNU General Public License version 2.0(GPLv2)

x262简介:x262是基于x264最佳性能开发的MPEG-2编码器,由VideoLAN(a project and non-profit organization)发布。

下面介绍摘抄自:​​https://www.videolan.org/developers/x262.html​

    x262 is a free software library and application for encoding video streams into the MPEG-2 compression format, and is released under the terms of the GNU GPL.

    x262 is an MPEG-2 encoder based on the best-in-class features of x264.

    It also has the big advantage that the codec is simple enough for people new to video-compression to get involved.

Encoder features:

  • Adaptive B-frame placement
  • Custom quantization matrices
  • Interlacing (frame/field adaptation per macrolock)
  • Ratecontrol: constant quantizer, constant quality, single or multipass ABR, optional VBV
  • Scenecut detection
  • Parallel encoding on multiple CPUs
  • Psy optimizations for detail retention (adaptive quantization, psy-RD, psy-trellis)
  • Zones for arbitrarily adjusting bitrate distribution

优化说明: x262进行了x86、arm、ppc和opencl架构的优化,没有进行aarch64架构的优化。

2、Linux平台编译、运行和性能测试

Linux平台下的编译很简单!

编译:

Linux 32位:

./configure --extra-cflags=-m32 --extra-ldflags=-m32
make

Linux 64位:

./configure
make

生成的mpeg2编码器为:x262(x262实质上是x264的符号链接)

运行命令行:

./x262 -o test.mpeg2  foreman_cif.yuv  --input-res 352x288 --mpeg2 -B 1024

Linux平台编码性能测试:

测试配置:Intel® Xeon® CPU E5-2667 v3 @3.2GHZ 32核

Linux32位:

分辨率

目标码率

平均解码帧率(纯C)fps

平均解码帧率(汇编优化)fps

720P

512k

84

209

720P

1024k

58

161

720P

1536k

73

196

720P

2048k

58

233

Linux64位:

分辨率

目标码率

平均解码帧率(纯C)fps

平均解码帧率(汇编优化)fps

720P

512k

56

167

720P

1024k

84

271

720P

1536k

48

265

720P

2048k

46

236

3 、ARM平台编译、运行和性能测试

编译:

ARM 32位:

./configure --host=arm-hisiv500-linux --cross-prefix=arm-hisiv500-linux-
make

ARM 64位:

./configure --host=aarch64-himix100-linux --cross-prefix=aarch64-himix100-linux-
make

运行:

./x262 -o test.mpeg2  foreman_cif.yuv  --input-res 352x288 --mpeg2 -B 1024

ARM平台编码性能测试:

测试配置:Hisi3519 ARMv7 32位架构

双核: A7@800MHZ, 32KB I-Cache

A17@1.25GHZ,32KB I-Cache

内存: 1GB

测试配置:Hisi3559 ARMv8 64位架构

ARM32位:

分辨率

目标码率

平均解码帧率(纯C)fps

平均解码帧率(汇编优化)fps

720P

512k

2.16

4.71

720P

1024k

2.14

4.81

720P

1536k

2.23

4.95

720P

2048k

2.20

4.98

ARM64位:

分辨率

目标码率

平均解码帧率(纯C)fps

720P

512k

7.07

720P

1024k

6.52

720P

1536k

7.11

720P

2048k

7.25

4 、主要耗时模块分析

    通过gprof工具对Linux平台和Arm平台进行分析可知,x262编码器的主要耗时模块包括:ME模块、插值模块、Quant模块和IDCT模块。


THE END