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

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

    CAVLC编码部分的关键函数

    2.1 x264_macroblock_write_cavlc(x264_t *h, bs_t *s)

    功能

    判断宏块类型,对宏块进行CAVLC编码。

    输入项目

    x264_t *h:指向x264_t类型的结构体的指针变量。

    输出项目

    bs_t *s: 指向bs_s类型结构体的指针变量。

    流程图

        如附图6所示:

    附图6: x264_macroblock_write_cavlc流程图

    2.2 block_residual_write_cavlc(x264_t *h,bs_t *s,int i_idx,int *l, int i_count)

    功能

    对得到的残差数据进行cavlc编码

    输入项目

    x264_t *h: 指向x264_t类型的结构体变量的指针变量

    int i_idx:索引

    int *l: l为指针变量,它指向长度为4x4的数组的首地址

    int i_count:编码后的码流长度

    输出项目

    Bs_t *s: 指向bs_s类型的结构体变量的指针变量

    流程图

        如附图7所示:

    附图7: block_residual_write_cavlc流程图

    2.3 bs_write( bs_t *s, int i_count, uint32_t i_bits )

    功能

    将i_bits逐位写入码流,码流长度为i_count。

    输入项目

    int i_count:编码后的码流长度;

    uint32_t i_bits:待编码的数。

    输出项目

    bs_t *s:bs_s类型的结构体变量;

    bs_t *s : bs_s类型的结构体变量;

    typedef struct bs_s

    {

    uint8_t *p_start;

    uint8_t *p;

    uint8_t *p_end;

    int i_left;

    } bs_t;

    p_start:码流的开始地址;

    p:当前码流的地址;

    p_end:码流的结束地址;

    i_left:存储单元中空闲的比特数。

    流程图

    如附图8所示:

    附图8: bs_write流程图

    2.4 bs_write_vlc( bs_t *s, vlc_t v )

    功能

    将i_bits逐位写入码流,该码流长度为I_size。

    输入项目

    vlc_t v : vlc_t类型的结构体变量。

    typedef struct

    {

    int i_bits;

    int i_size;

    } vlc_t;

    I_bits:待编码的数;

    I_size:编码后的长度。            

    输出项目

    bs_t *s : bs_s类型的结构体变量

    2.5 bs_write_ue( bs_t *s, unsigned int val )

    功能

    进行无符号指数哥伦布编码。

    输入项目

    val:待编码的无符号数。

    输出项目

    bs_t *s:bs_s类型的结构体变量。

    流程图

        如附图9所示:

    附图9: bs_write_ue流程图

    2.6 bs_write_se( bs_t *s, int val )

    功能

    进行有符号指数哥伦布编码。

    输入项目

    val:待编码的有符号数。

    输出项目

    bs_t *s:bs_s类型的结构体变量。

     
    分类: X264
  • 相关阅读:
    ECharts
    JavaScript实现数组去重方法
    面试题1
    Vue中的8种组件通信方式
    渐进式web应用 (PWA)
    单元测试(Jest 和 Mocha)
    axios
    Vue Router
    Vuex
    hash 模式与 history 模式小记
  • 原文地址:https://www.cnblogs.com/stnlcd/p/7199208.html
Copyright © 2011-2022 走看看