x264编码综述_个人浅解与参照雷神

来源:互联网 发布:手机制作纯音乐软件 编辑:程序博客网 时间:2024/06/08 16:08
 x264初识

一.编码大流程
                 输入YUV文件——>x264编码器——>输出h264码流;
二.x264编码器
      1. main()函数调parse()和encode()两大函数,先调用parse()函数解析输入参数,再调用encode()函数编码YUV数据;
   
      2.x264命令行程序:通过调用lib264的几个API完成H264的编码工作,入口函数为main()。
        几个关键的API调用顺序:a.parse()——>x264_param_default()——>getopt_long()——>select_input/output();
                                                b.encode()——>  x264_encoder_open()——>x264_encoder_headers()——>x264_encoder_encode()——>x264_encoder_close();
     3.x264主干函数:指的应该是各个接口函数之后的以及在x264_slice_write()之前的函数;如接口函数后的初始化函数、开始函数等。
      4.x264_slice_write():编码slice,是x264编码器中核心函数,最主要的部分。
        调用顺序:main()——>encode()——>encode_frame()——>x264_encoder_encode()——>x264_slices_write()——>x264_slice_write();
    在x264_slice_write()中包含了各个模块:滤波模块、分析模块、编码模块、熵编码模块、码控模块(分布在x264源码不同地方)。
     5.滤波模块
      x264_fedc_filter_row()包括环路滤波、半像素插值、ssim和psnr计算;其中环路滤波主要目的是去块效应。
     6.分析模块
     x264_macroblock_analyse()函数,主要每帧各种细操作,如预测模式等。
       7.编码模块
      x264_macroblock_encode()函数,
       8.熵编码模块
    x264_macroblock_write_cabac()和x264_macroblock_write_cavlc()两个不同类型熵编码函数。
      9.码控模块
        代码不同处的码控函数对应着码率控制过程中不同的阶段,创建、开始、算法、结束等。
       
    

                          











      
原创粉丝点击