新闻活动

HEVC编码器在语法方面上的新特性解析

2014-12-12 12:31:22  

 

         本文主要针对HEVC编码器在语法上的新特性进行一下详细的分析,以便大家更好的理解HEVC标准的优越性:

 

一、任意点解码和码流拼接

  H.264/AVC中,码流必须从一个包含关键帧的IDR单元开始,它必须不依赖NAL中的前置的包就可以独立解码。IDR是封闭GOP的标志性组成部分。
 
  新的纯随机读取(CRA)语法定义了如何使用处于随机读取点(RAP)位置的关键帧。
 
  比如说,告诉解码器从一个临时有效的位置直接开始解码,忽略之前的视频数据,此方法称为开放式的GOP操作。
 
  随机位置读取的支持对频道切换、拖动操作和动态流服务是十分关键的。
 
  某些解码顺序在CRA帧之后,显示顺序在CRA帧之前的帧可能会参考解码器buffer中还不存在的帧,于是这些解码器无法解码的帧就只能被丢弃。基于这种情况,这些帧被定义为拖动可跳过的前置帧(RASL)。
 
  不同的码流之间切换可以通过断点连接帧(BLA)来拼接。简单的把需要切换的码流的RAP帧标记为BLA放到当前帧的下一个CRA帧的地方,然后传输新码流就可以完成码流拼接的工作。
 
  RAP帧可以是IDR、CRA、BLA帧,CRA和BLA的后面都可能跟随着RASL帧(BLA的NAL单元的标记可定)。BLA帧之后的RASL帧解码器必须抛弃,因为它们可能参考了拼接前源码流的帧导致无法解码。
 
  还有一种解码顺序在RAP帧之后,显示顺序在RAP帧之前的帧,叫做拖动可解码的前置帧(RADL),这种帧不会参考解码顺序在RAP之前的帧。
 
  RASL和RADL可以统称为前置帧(LP)。
 
  解码和显示顺序都在RAP帧之后的帧叫做后置帧,它们不可以将LP作为它们的参考。
 
 
二、临时分层编码
 
  类似H.264/AVC的可伸缩编码扩展(SVC)的功能,HEVC可以在NAL的头上临时定一个分级预测的层。这样就可以只解析到NAL层面就实现可伸缩性。
 
  某些情况下,针对同一个码流,解码器可以自主决定临时解码层的数量。从低级子层到更高级子层切换的操作可以在临时子层帧(TSA)和步进临时子层帧(STSA)完成。
 
  TSA点允许切换到比当前子层高的任意子层,STSA只允许切换到只比当前子层高一级的下一层(除非更高的层也包含TSA或者STSA帧)。
 
 
三、扩展参数集
 
  新加入VPS元数据描述包括临时层级依赖在内的编码视频的全部特征。主要目的是增强在系统层的兼容扩展性。
 
  比如说,对未来可伸缩编码或者多视角的视频需要被旧的解码器解码时,那么它就可以方便地忽略那些高级解码器才需要的码流扩展信息。
 
 
四、参考帧集和参考帧列表
 
  为了管理解码多参考帧,已解码好的帧被放在解码帧缓冲区(DPB)中并被详细标记以供码流中后续的帧参考。每个片的头部都会包含一个帧序计数器(POC)以定位那些帧。
 
  保留下来用以参考的帧集合叫做参考帧集合(RPS)。
 
  H.264/AVC的DPB中有两个帧的列表,分别叫做参考帧列表0和参考帧列表1。定位具体帧的索引叫做参考帧索引,如果列表中只有一个帧,则参考帧索引为0,不在码流中传输。单向预测时,可以从0和1两个列表中选出一个帧。双向预测时,则会从两个列表中各选一帧。
 
  定位RPS和将参考帧列表用于帧间参考的语法比前代H.264/AVC的设计对丢包的兼容性更好,在拖动和其它播放模式下(快进、快退、动态码流切换等)也能工作地更好。
 
  HEVC编码器/H.265编码器的这项优化的关键是让语法更加明确可展现,避免了之前对解码器解码过程中的中间状态和临时值的依赖。而且还比H.264/AVC中的语法更加简化了。
 
 

    Copyright © 北京世纪鼎点软件有限公司     京公网安备 11010802023509号    京ICP备05003119号