h.264编码与x264移植

本人近期在使用x264进行h264编码的工作,所以想先对于工作的总结:

一:移植x264

1:下载x264source code, 源码网址:http://www.videolan.org/developers/x264.html

2:解压:tar xvf  last_x264.tar.bz2

3:编译及安装:

(1)./configure --prefix=/home/deqing/x264_arm --enable-shared  --host=aarch64-linux --cross-prefix=/home/deqing/cross_toolchain/gcc-linaro-4.9-2015.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

在该配置中我用的 交叉编译链工具是aarch64-linux-gnu-,并且开启了对neon的支持的功能(如果不想支持neon,加上disable-asm)。

(2)make & make install

4:将生成的头文件及库文件拷贝到对应板子上的/usr/lib 和/usr/include目录下

二:x264 source code 执行flow


                                                                                                 对x264_param_t结构体内参数进行默认初始化
                                                                                                |
                                                                                                |
                                                                                                |
                                                                                                |
                                                                                                |
                                  x264_param_default()--------------------x264_cpu_detect()(编译时选定的CPU为aarch64,且支持neon)
                                                        |(对x264_param_t结构体进行初始化)
                                                        |                                         -h  help(打印消息)
                                                        |                                        |
                                                        |                                        |
                     parse()---------------------------- getopt_long()-------------------------- -V  print_version_info(打印版本信息)
                    |(解析命令行并进行初始化)           | (对命令行进行解析)                   |
                    |                                    |                                       |
                    |                                    |                                         -o  output_filename(输出的文件名)
                    |                                     x264_param_default_preset()
                    |                                    |(设置tune和profile)
main(x264.c)--------|                                      |
                    |                                    |
                    |                                     x264_param_apply_profile()
                    |                                    |(对profile的应用限制,主要有baseline,main,high等)
                    |                                    |
                    |                                    |
                    |                                     select_output & select_input(匹配输入输出文件的格式)
                    |                                    |(输入格式:,raw、d2v、dga、yuv等,输出格式:Mp4、mkv、flv等)
                    |                                    
                    |                                    
                    |                                    
                    |                                    
                     encode()--------------------------- encode_frame()-------x264_encoder_encode()-------x264_slices_write()
                    |                                    |
                    |                                    |                                 x264_sps_write()
                    |                                    |                                |
                    |                                    |                                |
                    |                                    |                                |
                    |                                     x264_encoder_headers()--------- x264_pps_write()
                    |                                    |(写头文件SEI,SPS PPS)            |
                    |                                    |                                |
                    |                                    |                                |
                    |                                    |                                 x264_sei_version_write
                    |                                    |
                    |                                    |
                    |                                    |
                    |                                    x264_encoder_open()

 

 

你可能感兴趣的:(h.264编码与x264移植)