📄 h_264视频编码传输的qos特性分析(二) - it专栏.htm
字号:
<HR>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-2299987709779770";
google_ad_width = 160;
google_ad_height = 600;
google_ad_format = "160x600_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "f6f6f6";
google_color_bg = "F6F6F6";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></SCRIPT>
<SCRIPT src="H_264视频编码传输的QoS特性分析(二) - IT专栏.files/show_ads.js"
type=text/javascript>
</SCRIPT>
<HR>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-2299987709779770";
google_ad_width = 180;
google_ad_height = 60;
google_ad_format = "180x60_as_rimg";
google_cpa_choice = "CAAQ0cX8zwEaCEpGRZ0Cl8yyKPu_93M";
//--></SCRIPT>
<SCRIPT src="H_264视频编码传输的QoS特性分析(二) - IT专栏.files/show_ads.js"
type=text/javascript>
</SCRIPT>
<HR>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-2299987709779770";
google_ad_width = 120;
google_ad_height = 60;
google_ad_format = "120x60_as_rimg";
google_cpa_choice = "CAAQ06KdzgEaCOnXets5xDAJKLHM93M";
//--></SCRIPT>
<SCRIPT src="H_264视频编码传输的QoS特性分析(二) - IT专栏.files/show_ads.js"
type=text/javascript>
</SCRIPT>
<A title=用狗狗订阅
href="http://www.gougou.com/sub/http://blog.csdn.net/fengyv/rss.aspx"
target=_blank><IMG src="H_264视频编码传输的QoS特性分析(二) - IT专栏.files/icon_blank.gif"
border=0></A>
<H3 class=listtitle>文章</H3>
<UL class=list>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/198412.aspx">firefox专栏</A><A
href="http://blog.csdn.net/fengyv/category/198412.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/168033.aspx">h264 专题</A><A
href="http://blog.csdn.net/fengyv/category/168033.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/192281.aspx">linux 编程</A><A
href="http://blog.csdn.net/fengyv/category/192281.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/201307.aspx">linux 应用</A><A
href="http://blog.csdn.net/fengyv/category/201307.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/198702.aspx">多媒体专题</A><A
href="http://blog.csdn.net/fengyv/category/198702.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/200590.aspx">设计专题</A><A
href="http://blog.csdn.net/fengyv/category/200590.aspx/rss">(RSS)</A>
<LI class=listitem><A
href="http://blog.csdn.net/fengyv/category/201308.aspx">杂谈</A><A
href="http://blog.csdn.net/fengyv/category/201308.aspx/rss">(RSS)</A></LI></UL>
<H3 class=listtitle>收藏</H3>
<UL class=list></UL>
<H3 class=listtitle>相册</H3><!--category title-->
<UL class=list></UL>
<H3 class=listtitle>存档</H3>
<UL class=list>
<LI><A
href="http://blog.csdn.net/fengyv/archive/2006/05.aspx">2006年05月(24)</A>
<LI><A
href="http://blog.csdn.net/fengyv/archive/2006/04.aspx">2006年04月(13)</A>
<LI><A href="http://blog.csdn.net/fengyv/archive/2006/01.aspx">2006年01月(2)</A>
<LI><A
href="http://blog.csdn.net/fengyv/archive/2005/12.aspx">2005年12月(1)</A></LI></UL>
<H3 class=listtitle>最近评论</H3>
<UL class=list>
<LI class=listitem>linux:<A title="点击查看《rh9 实现视频的捕获》"
href="http://blog.csdn.net/fengyv/archive/2006/04/28/695616.aspx">rh下面也能捕获视频,哈哈,我还没试国呢,我要试试</A>
<LI class=listitem>linuX:<A title="点击查看《Linux 文件内容查看工具介绍》"
href="http://blog.csdn.net/fengyv/archive/2006/05/14/728251.aspx">太精彩了,收了</A>
<LI class=listitem>linux鐖卞ソ鑰?Url=:<A title=点击查看《一招搞定FireFox的吃内存问题》
href="http://blog.csdn.net/fengyv/archive/2006/04/29/697223.aspx">这招不错,学会了,我的firefox更快了</A>
<LI class=listitem>linux爱好者:<A
title="点击查看《Fedora 软件包管理器system-config-packages》"
href="http://blog.csdn.net/fengyv/archive/2006/05/18/744412.aspx">哈哈,终于会升级系统了,以前用这个工具的时候老是出错,现在知道是什么原因了~~~谢谢楼主</A>
<LI class=listitem>DD:<A title="点击查看《Fedora 软件包管理器system-config-packages》"
href="http://blog.csdn.net/fengyv/archive/2006/05/18/744412.aspx">不错</A></LI></UL><BR><BR></DIV>
<DIV id=main>
<SCRIPT>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</SCRIPT>
<DIV class=post>
<DIV class=postTitle><A
href="http://blog.csdn.net/fengyv/archive/2006/05/08/713008.aspx"><IMG height=13
src="H_264视频编码传输的QoS特性分析(二) - IT专栏.files/zhuan.gif" width=15
border=0> H.264视频编码传输的QoS特性分析(二)</A>
<SCRIPT language=javascript>document.title="H.264视频编码传输的QoS特性分析(二) - "+document.title</SCRIPT>
</DIV>
<DIV class=postText>
<DIV align=left>三、<SPAN>H.264的视频编码层的错误恢复[1,4]</SPAN></DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>在H.261、H.263、MPEG-1、MPEG-2、MPEG-4中,许多错误恢复工具已经得到了很好的应用:图像分割的不同形式(片、块组),I模式宏块,片和图像的内插,参考图像选择(带有和不带反馈、图像级别、GOB/SLICE或MB级别),数据分割等。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>H.264标准继承了以前视频编码标准中某些优秀的错误恢复工具,同时也改进和创新了多种错误恢复工具。这里主要介绍H.264的错误恢复工具,包括参数集、灵活的宏块排序和冗余片RS等。
<TABLE height=250 cellSpacing=1 cellPadding=1 width=300 align=right summary=""
border=0>
<TBODY>
<TR>
<TD>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-2299987709779770";
google_ad_width = 300;
google_ad_height = 250;
google_ad_format = "300x250_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_url = "008000";
google_color_text = "000000";
//--></SCRIPT>
<SCRIPT src="H_264视频编码传输的QoS特性分析(二) - IT专栏.files/show_ads.js"
type=text/javascript>
</SCRIPT>
</TD></TR></TBODY></TABLE><BR></DIV>
<DIV align=left>1. 参数集</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>参数集是H.264标准的一个新概念,是一种通过改进视频码流结构增强错误恢复能力的方法。H.264的参数集又分为序列参数集和图像参数集。其中,序列参数集包括一个图像序列的所有信息,即两个IDR图像间的所有图像信息。图像参数集包括一个图像的所有分片的所有相关信息,包括图像类型、序列号等,解码时某些序列号的丢失可用来检验信息包的丢失与否。多个不同的序列和图像参数集存储在解码器中,编码器依据每个编码分片的头部的存储位置来选择适当的参数集,图像参数集本身也包括使用的序列参数集参考信息。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>众所周知,一些关键信息比特的丢失(如序列和图像的头信息)会造成解码的严重负面效应,而H.264把这些关键信息分离出来,凭借参数集的设计,确保在易出错的环境中能正确地传输。这种码流结构的设计无疑增强了码流传输的错误恢复能力。</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>参数集具体实现的方法也是多样化的:</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>(1)通过带外传输,这种方式要求参数集通过可靠的协议,在首个片编码到达之前传输到解码器;</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>(2)通过带内传输,这需要为参数集提供更高级别的保护,例如发送复制包来保证至少有一个到达目标;</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>(3)在编码器和解码器采用硬件处理参数集。<BR></DIV>
<DIV align=left>2. 片、片组和FMO</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>一幅图像由若干片组成,每片包含一系列的宏块(MB)。MB的排列可按光栅扫描顺序,也可不按扫描顺序。每个片独立解码,不同片的宏块不能用于自身片中作预测参考。因此,片的设置不会造成误码扩散。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>灵活的宏块排序FMO是H.264的一大特色,适用于H.264的基本档次和扩展档次的应用。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>图像内部预测机制,例如帧内预测或运动矢量预测,仅允许用同一片组里的空间相邻的宏块。FMO通过宏块分配映射技术,把每个宏块分配到不按扫描顺序的片中。FMO模式划分图像的模式各种各样,重要的有棋盘模式、矩形模式等。当然FMO模式也可以使一帧中的宏块顺序分割,使得分割后的片的大小小于无线网络的MTU尺寸,经过FMO模式分割后的图像数据分开进行传输。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>所有的MB被分成了片组0和片组1,相应地分别采用黄色和白色表示。当白片丢失时,因为其周围的宏块都属于其他片的宏块,利用邻域相关性,黄片宏块的某种加权可用来代替白片相应宏块。这种错误隐藏机制可以明显提高抗误码性能。实验证明,在CIF图像的视频会议中,在丢包率达10%时,视频失真低到需要训练有素的眼睛才能识别。使用FMO的代价是稍微降低了编码效率(因为它打破了原先非邻居MB之间的预测),而且在高度优化的环境中,有较高的时延。<BR><BR>3.
数据分割</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>通常情况下,一个宏块的数据是存放在一起而组成片的,数据划分使得一个片中的宏块数据重新组合,把宏块语义相关的数据组成一个划分,由划分来组装片。H.264视频编码标准使用了三种不同类型的数据分割。</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>(1)A型分割</DIV>
<DIV style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"
align=left>A型分割是头信息划分,包括宏块类型、量化参数和运动矢量,这个信息是最重要的。</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>(2)B型分割</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>B型分割是帧内信息划分,包括帧内CBPs和帧内系数。帧内信息可以阻止错误的传播,该型数据分割要求给定分片的A型分割有效,相对于帧间信息,帧内信息能更好地阻止漂移效应,因此它比帧间分割更为重要。</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left>(3)C型分割</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>C型分割是帧间信息划分,包括帧间CBPs和帧间系数,一般情况下它是编码分片的最大分区。帧间分割是最不重要的,它的使用要求A型分割有效。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>当使用数据分割时,源编码器把不同类型的分割安排在3个不同的缓冲器中,同时分片的尺寸必须进行调整以保证小于MTU长度,因此是编码器而不是NAL来实现数据分割。在解码器上,所有分割用于信息重建。这样,如果帧内或帧间信息丢失了,有效的帧头信息仍然能用来提高错误隐藏效率,即有效的宏块类型和运动矢量,保留了宏块的基本特征,从而仍可获得一个相当高的信息重构质量,而仅仅丢失了细节信息。<BR><BR>4.
冗余片方法</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>H.264中参考图像的选择与以前在H.263中的一样,在基于反馈的系统中,解码器接收到丢失或被破坏的图像信息时,选择参考图像序列中正确的参考宏块,来进行错误恢复;而对于无反馈的系统,H.264提出了冗余分片编码。</DIV>
<DIV style="TEXT-INDENT: 21pt"
align=left>冗余分片允许编码器把在同一个码流中添加同一MB的一个或更多冗余表示。需要注意的是这些冗余片的编码参数与非冗余片的编码参数不同,例如主片可用低QP(高质量)来编码,而冗余信息中能用一个高QP(低质量)的方式来编码,这样质量粗糙一些但码率更低。解码器在重构时,首先使用主片,如果它可用就抛弃冗余片;而如主片丢失(比如因为包的丢失)冗余片也能被用于重构。冗余片主要用于支持高误码的移动环境。</DIV>
<DIV style="TEXT-INDENT: 21pt" align=left><BR>5. 帧内编码</DIV>
<DIV style="TEXT-INDENT: 21pt"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -