在之前的博文中,我曾经简单把之前阅读文献资料和编译软件的记录和心得记录分享了一下。由于我也是刚刚接触HEVC没几天,有些问题我的理解也不是很深入,在之前的博文中有博友对高层语法中的一些概念提出了疑问。在咨询了了解背景知识的同学之后,经过仔细地重新推敲参考文献("Overviewof HEVC")之后,对一些问题找到了一些答案,在此另发一篇博文作为回应。
关于码流中的三种随机接入点的解释:
BLA、CRA、IDR是文献中提到过的三种随机接入点(RAP),在文献中的解释的确不是很容易理解。更关键的是,与这三个名词相应的还有GOP,open/closedGOP,RASL,RADL等等概念,环环相扣,一个不理解,剩下的也很难弄懂,下面我们一个一个解释,很多也是我自己刚刚想到的,不一定正确全面,欢迎批评。
(1)关于GOP。这是图像组(Group ofPictures)的意思,表示编码的视频序列分成了一组一组的有序的帧的集合进行编码。每个GOP一定是以一个I帧开始的,但是却不一定指代的是两个I帧之间的距离。因为一个GOP内可能包含几个I帧,只有第一个I帧(也就是第一帧)才是关键帧。在程序cfg中,GOP的长度和两个I帧的距离也是两个不同参数指定的(如IntraPeriod和GOPSize或者类似的参数)。所以,两个I帧的间距不可能大于GOP的长度,一般情况是更小的。
(2)关于IDR。这个词儿的全称是Instantaneous DecodingRefresh,是在H.264中定义的结构。在H.264中,IDR帧一定是I帧,而且一定是GOP的开始,也是H.264GOP的关键帧。但是反过来却不成立,I帧不一定是IDR帧。GOP的长度不是定死不变的,在H.264的编码器中,如果判定场景发生变化,那么即使不到原定GOP的末尾,也会在这个位置加入一个IDR,作为新一个GOP的开始。此时这个GOP的长度就被缩小了。
(3)闭合GOP和开放GOP(closedGOP/openGOP),CRA。闭合GOP是H.264中GOP的格式。在H.264的GOP中,所有的GOP都是独立解码的,与其他GOP无关,即它们都是“封闭”的。但是在HEVC中,GOP的结构发生了变化,采用了“开放”的结构,在解码过程过可能会参考其他GOP的数据。这时,一个GOP的起始帧命名为CRA,cleanrandomaccess,同样采用帧内编码,但是这个GOP内的帧间编码帧可以越过CRA参考前一个GOP的数据,这便是GOP的open。
(4)关于BLA。个人感觉BLA只是CRA在视频流切换情况下的一种特例。视频流在某个RAP上要求切换到另一个视频流继续解码,则直接将该CRA同另一个视频流中的接入CRA连接,后者便是BLA。由于BLA之前解码到缓存的视频流与当前视频流无关,因此其特性类似于直接从该点进行随机存取后的CRA。
(5)RASL和RADL。这是两种GOP间的图像类型。如果解码器从某个CRA随机接入,则按照显示顺序的后面几帧数据由于缺少参考帧而不能解码,这些图像将被解码器抛弃,即skipleading。而对于没有从当前CRA接入的数据,这些图像可以被正常解码显示,因此称为decodableleading。由于这些数据是有可能舍弃的,因此其他图像(trailingpictures)不能参考这些数据,否则万一这些图像被舍弃,将会有更多的图像受其影响而不能正常解码。
下面举个例子:
假设视频序列的显示顺序为①,这是一个完整的GOP,解码顺序为②
①I B BP B B P B B P
②I P BB P B B P B B
在H.264中,第一个I帧为IDR,GOP为闭合结构,因此两个GOP组成视频的结构为
I B B P B B P B B PI B B P B B P B BP(显示顺序)
I P B B P B B P BB I P B B P B B P BB(解码顺序)
而在HEVC中,两个I帧为CRA,GOP为开放结构,因此GOP的结构为:
I B B P B B P B B PBB I BB P B B P B (显示顺序)
I P BB P B B P B B I B B P B B P BB...(解码顺序)
两个红色的B帧表示的是按照解码顺序在CRA之后,该GOP内参考的前一个GOP进行编码的图像。这样便很容易得知,如果选择在第二个CRA进行随机接入,这两个红色的B帧将会由于没有参考帧无法解码而被舍弃。这两个红色的B帧即RASP。如果没有选择这个CRA进行随机接入,这两个红色B帧将可以顺利解码,即成为RADP。
对于BLA,情况也是类似的。由于出现码流拼接,第二段码流的CRA之后的B也会因为没有参考帧无法解码而丢弃。很容易理解,此时缓存中的参考帧数据还来自上一段码流,跟当前码流没关系,当然不能用作B的参考了。
之余HEVC这么设计的目的,我觉得应该是为了编码效率考虑的。因为B帧的压缩比相对是最高的,引入这种设计可以在不影响随机存取性能的前提下,尽可能增大B帧的比重,提高整体压缩编码的性能。
以下是一些国外研究者在论坛中对这个问题的一些讨论,可以拿来做一下参考:
www.linkedin.com/groups/IDR-vs-CRA-3724292.S.125836481
forum.doom9.org/archive/index.php/t-105129.html
    
      转自殷汶杰的工作台,博主对于HEVC的认识让我学习很多

HEVC新特点一览(3)相关推荐

  1. Junit5新功能一览

    转载自 Junit5新功能一览 Java的JUnit测试框架已经来到了5这个版本,与以前的版本不同的是JUnit5具有来自多个子项目的模块,其中包括: 1.Platform,用于在JVM上启动测试框架 ...

  2. 红帽企业版linux 7.3,红帽推企业Linux 7.3 新功能特性一览

    原标题:红帽推企业Linux 7.3 新功能特性一览 [IT168 云计算]日前红帽宣布推出企业Linux 7.3版本,作为Linux平台的最新版本,红帽方面透漏本次更新的版本在网络与存储功能两方面做 ...

  3. Java JSON库Jackson 2 x新变化一览

    <Java JSON库Jackson 2.x新变化一览> 作者:chszs,转载需注明. 作者博客主页:http://blog.csdn.net/chszs Jackson库是JSON J ...

  4. 深入解析 | Oracle Database 20c 十大新特性一览

    在2020年2月14日,Oracle 正式宣布在 Oracle Cloud 发布 Database 20c 的预览版,同时发布了所有的官方文档. 为了和大家及时分享关于 Oracle 20c 引人瞩目 ...

  5. Java8-19新特性一览 ,认识全新的前沿技术

    文章目录 Java8-19新特性一览 ,认识全新的前沿技术 前言 你的收获 Java发展趋势 准备工作 新特性 1.接口private 1).说明 2).案例 3).注意 2.类型推断 1).说明 2 ...

  6. 魔兽世界怀旧服务器最新,魔兽世界怀旧服9月13日免费转服-11个转服新服务器一览...

    <魔兽世界>怀旧服官方在9月12日的中午发布公告,表示将会在9月13日的上午7点到9月16日的早上7点再次开放免费转服,其中新开放了11组新服务器,具体的内容就一起来看看吧. 我们预计于 ...

  7. 【机器学习】scikit-learn 1.0 版本重要新特性一览

    1 简介 就在几天前,著名的机器学习框架scikit-learn在pypi上释放了其1.0rc1版本,这里给大家科普一下,版本号中的rc是Release Candidate的简称,代表当前的版本是一个 ...

  8. Oracle Database 20c 十大新特性一览

    从大会的分享和公布的资料中,我们整理了其中重要的新特性,汇聚成10个方向,按照惯例,和大家分享. 历史回顾: Oracle Database 20c 新特性: 1.原生的区块链支持 - Native ...

  9. JDK 13 新特性一览

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:木九天 my.oschina.net/mdxlcj/blog ...

最新文章

  1. 剑指offer:面试题14- II. 剪绳子 II
  2. 最新(2019/3)CSDN博客Markdown编辑格式说明,包含效果图
  3. Spring Cloud Stream如何消费自己生产的消息?
  4. 电商泛滥的时代,我们的出路在哪里?
  5. c++计算eigen随笔(2)
  6. python3的print函数
  7. linux内存机制的virt,关于linux:转载理解virt-res-shr之间的关系
  8. 【产品】产品经理常用的五大分析法
  9. mysql数据库维护重要性_建立MySQL数据库日常维护规范
  10. [Vue] : vue-resource 实现 get, post, jsonp请求
  11. android自定义组件(手机加速球+水面波动效果)
  12. 锋利的JQuery 学习笔记
  13. 教你自动识别查询快递单号的全部物流信息
  14. java 动态定时提醒_java实现定时提醒功能
  15. xcode 常见错误
  16. “武汉加油”“中国加油”
  17. Android Navigation与BottomNavigationView实现底部导航栏
  18. 如何打造极速F1赛事?乐视云用六路信号还原比赛现场
  19. 【详解排序算法】冒泡排序
  20. Centos最小化安装及配置

热门文章

  1. jsp 按照学号查找学生_怎样做才可以用JSP实现只输入姓名或学号就可以进行查询...
  2. PriceFromImage\UnCodebase
  3. 共享内存的创建和映射shmget()和shmat()
  4. 函数图像变换的规律,以一元函数和二元函数为例来说明,对多元函数同样适用。...
  5. 智能投顾的发展现状和未来发展趋势
  6. 永信至诚:乌镇世界互联网大会闭幕 网络安全人的使命刚刚启航
  7. LENOVO ERAZER Z51 安装固态指南
  8. 汉语言文学专业c学校,自考汉语言文学专业哪个学校好?
  9. BZOJ5197:[CERC2017]Gambling Guide(最短路,期望DP)
  10. 【Linux网络服务】Centos7搭建yum服务器