H.263视频编码的码率控制算法及硬件实现.docVIP

H.263视频编码的码率控制算法及硬件实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
H.263视频编码的码率控制算法及硬件实现.doc

  H.263视频编码的码率控制算法及硬件实现|第1 内容加载中...   改变量化步长,是微观的宏块级控制,控制量是量化步长因子Q。H.263标准规定:Q分为32级,其值分别为0~31。Q越小,量化越精细,图像质量就越高,而产生的码流也越长。一个宏块内具有相同的Q,所以对于Q来说最小的变化单位是宏块。当一个宏块编码结束时,如果截至到目前编码器所产生的码流小于一个门限,那么码率控制模块就根据一定的算法减少Q;而对于量化器来说,Q变小则量化后的系数中非零系数增多,编码器输出的码流就增加。如果截至到目前编码器所产生的码流大于一个门限,那么码率控制模块就增加Q,Q变大则量化后的系数中非零系数减少,编码器输出的码流就减少。按照这种方法,在一定程度上使发送给发送缓冲器的码流维持恒定,也就达到了控制码率的目的。改变量化步长实现起来比较复杂。根据统计的码流比特数,通过复杂的计算,在每个宏块结束时,计算下一个宏块的量化步长因子Q(qp)。用ptype表示帧类型,帧类型为帧内帧时用I帧表示,否则用P帧表示。   计算qp的算法如下:  500)this.style.ouseg(this)  500)this.style.ouseg(this)   其中,Mean_qp为上一帧每个宏块平均的量化步长;Bits_prev_pic为上一帧产生的比特数;Target_bpf为上一帧结束时计算出来的本帧应该产生的比特数;Target_bpf_prev为上一个Target_bpf;Bits_prev_macro为本帧截至当前宏块所产生的比特数;Mbnum为已编码宏块在本帧所有宏块中所占的比例,用小数表示;Target_bps是设定的发送码率。   对于跳帧算法,是实现宏观的帧级控制,控制量是TR。TR以跳帧或不跳帧来达到减少或增加码流的目的。一帧编码结束时,根据当前发送缓冲器内的比特数与跳帧的门限进行比较,判断是否需要跳帧。如果发送缓冲器内的比特数大于跳帧的门限时,说明发送缓冲器已经不能接受更多的码流了,所以接下来的帧不用编码,发送缓冲器用空出的时间来发送码流,减少库存,这样就发生了跳帧;反之,则不需要跳帧。值得注意的是在整个过程中,从发送缓冲器发出的码流一直是按照一定的速率发出的,也就是说码率是恒定的,改变的是发送缓冲器的库存。   跳帧的控制量是H.263标准码流中帧头的TR。TR是一个8位的指示位,表明了本帧的序号,范围是0~255,当超过255时,从0重新开始。在一般没有跳帧的情况下,TR是连续地从0~255变化。但当发生跳帧时,TR将发生不连续地跳变。如:当前帧的TR是112,在当前帧结束时计算得出下一帧要跳帧,那么等待跳帧结束后的下一帧的TR是115。这样译码器可以知道ΔTR是3(ΔTR代表译码器对当前帧的显示次数),那么译码器就将本帧图像显示3次,即跳了2帧。   跳帧是在每一帧编码结束时发生的。这时,统计完这一帧共产生的比特数(用bits_prev_pic表示)、上一帧结束时发送缓冲器的比特数(用bits_in_buffer表示)。跳帧门限用threshold表示,threshold等于设定的发送码率(target_bps)除以设定的帧频(target_fps)的商,threshold必须是个整数。  500)this.style.ouseg(this)   可见H.263系统的码率控制是通过跳帧与改变量化步长一起工作来实现的,跳帧解决大方向的控制与调整,改变量化步长进行精细的调整,二者就像粗调与微调。 3 码率控制的硬件实现 3.1 硬件实现框图   码率控制模块是一个复杂的系统工程,所涉及的方面很广,最终的结果要控制量化器和运动估计/补偿模块,并且整个编码器要根据跳帧指示信号来工作,当跳帧指示有效时,编码器不工作,空出时间让发送缓冲器减少库存压力。码率控制模块的框图如图2所示。 500)this.style.ouseg(this)   其中,编码器和发送缓冲器不属于码率控制模块。从功能上说,码率控制模块是由初始化模块、统计模块、延迟模块、求TR模块、跳帧指示模块、求QP的平均值模块、帧22级QP因子、宏块级QP因子、求QP模块、TR和QP的修正模块等组成。   在初始化模块中,需设定码率控制的参数,如目标比特率、目标帧率、延时发送时间等整个系统要用到的参数。还产生一些触发信号,如帧结束、宏块结束信号等。在统计模块中,需设定统计编码器送给发送缓冲器的码流比特数,包括帧级的码流比特数统计和宏块级的码流比特数统计。在延迟模块中,需根据初始化模块设定的延时发送时间参数来产生延时发送信号给发送缓冲器,使其容纳的码流维持在一定数量上。求TR模块根据帧级的码流比特统计数,求得TR的值。TR和QP的修正模块将求得的TR和QP的值截短,以防越界,经过这样

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档