CAVLC编码部分的关键函数.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CAVLC编码部分的关键函数

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类型的结构体变量。

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档