zoukankan      html  css  js  c++  java
  • 源码分析系列(四)x264_nal_dataflow

    http://www.cnblogs.com/xkfz007/articles/2616158.html

    NAL部分关键函数

    4.1 int x264_nal_encode( void *, int *, int b_annexeb, x264_nal_t *nal )

    功能

    对一个片进行NAL编码。

    输入项目

    一个片的RBSP的数据流。

    输出项目

    一个NAL单元。

    算法

    从SODB到RBSP的生成过程:

    如果SODB内容是空,生成的RBSP也是空的。

    否则,RBSP由如下的方式产生:

    RBSP的第一个字节直接取自SODB的第1~8个比特(RBSP字节内的比特按照从左到右对应为从高到低的顺序排列,most significant),依此类推,RBSP的其余的每个字节都直接取自SODB的相应比特。RBSP的最后一个字节包含SODB的最后几个比特,及如下的rbsp_trailing_bits()。

    Rbsp_trailing_bits()的第一个比特是1,接下来填充0,直到字节对齐。

    最后添加若干个cabac_zero_word(其值等于0x0000)。

    4.2 int x264_nal_decode( x264_nal_t *nal, void *, int )

    功能

    对一个片进行NAL解码。

    输入项目

    一个NAL单元。

    输出项目

    一个片的RBSP的数据流。

    程序逻辑

        如附图12所示:

    附图12: x264_nal_decode流程图

    4.3 static void x264_nal_start( x264_t *h, int i_type, int i_ref_idc )

    功能

    初使化nal的结构:设置nal的优先级i_ref_idc,设置nal单元的类型i_type,使nal->p_payload指向h->out.p_bitstream。

    输入项目

    x264_t *h

    输出项目

    x264_t *h

    4.4 Int x264_ratecontrol_new( x264_t *h )

    功能

    (1)开始码率控制,设置码率控制的参数的初始值;

        (2)设置输出缓冲区的参数;

        (3)根据码率以及帧率调整qp的值。

    输入项目

    x264_t *h

    输出项目

    x264_t *h

    程序逻辑

        如附图13所示:

    附图13: x264_ratecontrol_new流程图

     
    分类: X264
  • 相关阅读:
    大数据-数据分析-numpy库-数组的深拷贝和浅拷贝
    windows环境下mysql主从配置
    C#定时发送邮箱设置
    论《LEFT JOIN条件放ON和WHERE后的区别》
    记录成长
    RobotFramework+Selenium如何提高脚本稳定性
    Jekins 插件Extended Choice Parameter显示Json Parameter Type遇到的问题
    nGrinder 参数使用
    Jenkins REST API 实例
    java ee config / nacos / shit Alibaba Middleware
  • 原文地址:https://www.cnblogs.com/stnlcd/p/7199235.html
Copyright © 2011-2022 走看看