[发明专利]一种AVS视频帧的RTP封装方法有效
申请号: | 201210151540.0 | 申请日: | 2012-05-16 |
公开(公告)号: | CN102665140A | 公开(公告)日: | 2012-09-12 |
发明(设计)人: | 张钦宇;吴伟强;王磊;张常键 | 申请(专利权)人: | 哈尔滨工业大学深圳研究生院 |
主分类号: | H04N21/6437 | 分类号: | H04N21/6437;H04N7/26 |
代理公司: | 深圳市科吉华烽知识产权事务所 44248 | 代理人: | 胡吉科;邓扬 |
地址: | 518000 广东省深*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种AVS视频帧的RTP封装方法。所述方法包括获取编码器产生的视频码流,解析码流的视频帧类型;解析视频帧的帧长度,结合帧类型分别做不同的RTP封装;若是I帧、视频序列头等关键视频数据,单独封装成短包长的RTP包发送;若是P帧数据,进行以条带为主要封装单位的封装,并且尽可能多地封装进RTP包;若是B帧数据,进行以宏块为主要封装单位的封装,并且尽可能多地封装进RTP包,同时,在一个RTP包中,若封装B帧前已经封装了P帧数据,则该B帧数据以条带为单位进行封装等步骤。本发明不仅有效地保护重要的视频数据;而且减少了链路开销,降低了总的丢包率。 | ||
搜索关键词: | 一种 avs 视频 rtp 封装 方法 | ||
【主权项】:
一种AVS视频帧的RTP封装方法,其特征在于:步骤一:编码器产生视频序列,打包开始,打包器接收编码器传来的视频数据,判断接收到的视频数据类型,若为视频序列头或序列结束,转向步骤二;若为视频帧数据,转向步骤三;步骤二:将视频序列头或序列结束,单独封装进RTP包并发送,然后接收下一数据;步骤三:获取该数据帧的类型值,判断该帧所属帧类型,解析该帧的帧长度,设为L,若为I帧,则转向步骤四;若为P帧,则转向步骤五;若为B帧,则转向步骤七;步骤四:比较L与J的长度,J为在不造成下层分片的情况下,也就是说在不超过MTU的情况下,最多可封装进RTP包的数据长度,分以下两种情况处理:若L小于等于J,则将该帧封装进RTP包并发送;若L大于J,将该帧以宏块为单位,以趋均匀的方式均匀分为n份,封装进RTP包发送;步骤五:比较L与J的大小,分以下两种情况处理:若L小于等于J,则将该帧封装进RTP包,然后转向步骤六;若L大于J,准备按条带为单位进行封装,则尽可能多的将条带封装进RTP包,将能够封装进RTP包的帧头和条带封装进RTP包并发送,然后转向步骤十;步骤六:准备继续封装新一帧数据,分以下两种情况处理:若该帧数据为I帧,不再尝试继续封装,将RTP包发送;若该帧数据非I帧,即P、B帧,则判断可再封装的数据长度Lp与Y+s1的大小, s1是该视频帧的第一条带的数据长度;若小于Y+s1仍将RTP包发送;若大于等于Y+s1,开始比较Lp与该帧长度的大小,若Lp小于帧长度的大小,准备按条带为单位进行封装,则尽可能多的将条带封装进RTP包,将经过计算能够封装进RTP包的帧头和条带封装进RTP包并发送,然后进入步骤十;若Lp大于帧长度,则将该帧封装进RTP包,返回步骤六;步骤七:比较L与J的大小,分两种情况处理:若小于等于J,将该帧封装进RTP包,同时进入步骤八;若大于J,准备按宏块为单位进行封装,尽可能多的将宏块封装进RTP包,将经过计算能够封装进RTP包的帧头和宏块封装进RTP包并发送,然后转向步骤十一;步骤八:准备继续封装下一帧,若为I帧,不再尝试继续封装,将RTP包发送,并进入步骤一,进行新的判断处理;若不为I帧,继续判断是否为B帧,分以下两种情况处理:若不为B帧,即P帧,进入步骤六中的非I帧数据处理过程;若为B帧,进入步骤九;步骤九:判断可再封装进RTP包的数据长度Lb与Y+b1的大小,分两种情况处理:若小于Y+b1,将RTP包发送;若大于等于Y+b1,继续比较Lb与整个帧长度的大小,b1为该视频帧的第一宏块的数据长度,若大于等于整个帧长度,将该帧封装进RTP包,并转向步骤八;若小于整个帧长度,准备按宏块为单位进行封装,则尽可能多的将宏块封装进RTP包,将经过计算能够封装进RTP包的帧头和宏块封装进RTP包并发送,并转向步骤十一;步骤十:判断该帧剩余条带数据的长度与J的大小,分以下两种情况处理:若小于等于J,将剩余的条带封装进RTP包,并计算RTP包剩余可再封装数据长度,并转向步骤六;若大于J,比较第一条带与J的大小;若大于J,准备按宏块为单位进行封装,则尽可能多的将宏块封装进RTP包,方法是:按宏块在视频帧中的顺序,获取第一个宏块的数据长度,将J减去第一个宏块数据的长度得到可再封装的数据长度,获取下一个宏块数据长度,用可再封装数据长度减去这个宏块的数据长度得到新的可再封装数据长度,重复进行上述的计算,直到剩余可再封装数据长度小于按顺序封装的下一宏块的数据长度,将这些经过计算能够封装进RTP包的宏块封装进RTP包并发送,并转向步骤十一;若小于等于J,则尽可能多的将条带封装进RTP包,方法是:按条带在视频帧中的顺序,将J减去第一个条带的数据的长度得到可再封装的数据长度,获取下一个条带数据长度,用可再封装数据长度减去这个条带的数据长度得到新的可再封装数据长度,重复进行上述的计算,直到剩余可再封装数据长度小于按顺序封装的下一条带的数据长度,将这些经过计算能够封装进RTP包的条带封装进RTP包并发送,并返回步骤十;步骤十一:获取剩余宏块的数据长度,分以下两种情况处理:若剩余宏块数据长度小于等于J,将剩余的宏块转换为NALU,并封装进RTP包,并转向步骤八;若剩余宏块的数据长度大于J,则尽可能多的将宏块封装进RTP包,方法是:按宏块在视频帧中的顺序,获取第一个宏块的数据长度,将J减去第一个宏块数据的长度得到可再封装的数据长度,获取下一个宏块数据长度,用可再封装数据长度减去这个宏块的数据长度得到新的可再封装数据长度,重复进行上述的计算,直到剩余可再封装数据长度小于按顺序封装的下一宏块的数据长度,将这些经过计算能够封装进RTP包的宏块封装进RTP包并发送,并返回步骤十一。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学深圳研究生院,未经哈尔滨工业大学深圳研究生院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210151540.0/,转载请声明来源钻瓜专利网。
- 上一篇:粮食输送机专用行走机构
- 下一篇:双模式移动机器人