`
jubincn
  • 浏览: 232328 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

IDR(刷新帧)与I帧的一些知识点 转自:http://blog.csdn.net/zhoujunming/article/details/6734988

 
阅读更多

IDR(刷新帧)与I帧的一些知识点
2011-06-10 15:26

IDR帧属于I帧,但是I帧不一定是IDR帧解码器收到IDR帧时,将驱动器参数块(DPB)清空。而I帧不会。(我自己理解为即把参考帧列表刷新从新更新,就是不再参考idr前面的帧)由此可见,在编码器端,每发一个IDR,就相应地发一个nal。当然在现在的编码中,为了取得更高的图像质量,在一个视频文件中有好多个IDR帧,这些IDR帧把视频文件分成了片,但是每片中第一个帧是IDR,而且仅此一个

例如:存在这样一段视频:

码流

IDR

B

B

P

B

B

P

……

帧号

1

2

3

4

5

6

7

……

对IDR帧的处理(与I帧的处理相同):(1) 进行帧内预测,决定所采用的帧内预测模式。(2) 像素值减去预测值,得到残差。(3) 对残差进行变换和量化。(4) 变长编码和算术编码。(5) 重构图像并滤波,得到的图像作为其它帧的参考帧。

这里要提一下,当编码器处理完IDR帧遇到B帧时,编码期先把其放入缓存器中存放起来。直接对P进行编码。即编码器中编码的实际顺序是IDR P B B P B B…..即1423756……


有用的来了

IDR-instantaneous decoding refresh (IDR)picture;
A coded picture in which all slices are I or SI slices that causes the decoding process to mark all reference pictures as "unused for reference" immediately after decoding the IDR picture. After the decoding of an IDR picture all following coded pictures in decoding order can be decoded without inter prediction from any picture decoded prior to the IDR picture. The first picture of each coded video sequence is an IDR picture.

“也就是说,IDR的出现其实是相当于向解码器发出了一个清理reference buffer的信号吧,上面说前于这一帧的所有已编码帧不能为inter做参考帧了。”

还有:“因为264采用了多帧预测,就有可能在display orderI帧后的P会参考I帧前的帧,这样在random access时如果只找I帧,随后的帧的参考帧可能unavailableIDR就是这样一种特殊的I帧,把它定义为确保后面的P一定不参考其前面的帧,可以放心地random access

多参考帧情况下:

举个例子:有如下帧序列:IPPPPIPPPP……(我们程序没有B帧,所以帧序列简单些,但道理是一样的)。按照3个参考帧编码。因为“按照3个参考帧编码”,所以参考帧队列长度为3遇到绿色的I时,并不清空参考帧队列,把这个I帧加入参考帧队列(当然I编码时不用参考帧。)。再检测到红色的P帧时,用到的就是PPI三帧做参考了。

不怕自己罗嗦(好记性不如烂笔头),再强调一个:一个参考帧,就是参考当前帧的前面的那帧(因为没涉及到B帧,所以“前面的那帧”既是播放顺序的,也是编码顺序的)。多个参考帧是一个道理我以前一直误解为从前面的几帧中找到最合适的一个参考帧)

最后,“但是收到IDR帧时,解码器另外需要做的工作就是:把所有的PPSSPS参数进行更新。由此可见,在编码器端,每发一个IDR,就相应地发一个PPS&SPS_nal_unit”应该是对的吧。先这样认为:)

分享到:
评论

相关推荐

    基于Pytorch的3D立体图像分类完整代码和LIDC结节分叶征数据集

    更多详情可参考博客一:https://qianlingjun.blog.csdn.net/article/details/125051953 博客二:https://qianlingjun.blog.csdn.net/article/details/125064999 数据集部分是LIDC-IDRI的CT结节的数据集,其中供...

    LIDC-IDRI.rar

    LIDC-IDRI数据集由胸部医学图像文件(如CT、X光片)和对应的诊断结果病变标注组成。该数据是由美国国家癌症研究所(National Cancer Institute)发起收集,该数据集中,共收录了1018个研究实例。对于每个实例中的图像,...

    CHtmlView访问文件内部资源与innerHTML

    CHtmlView访问文件内部资源与innerHTML演示代码例子...... 1、访问文件内部资源 void CInerHTMLView::OnRes() { // TODO: Add your command handler code here //--资源访问 CString s; s.Format("res://%s....

    Qt五子棋程序源码

    亲测通过,这是一个单机人机、人人版本的五子棋源码程序。我的文章参考:https://blog.csdn.net/u013457167/article/details/83859312,

    一眼看出NALU中SPS与PPS与SEI与IDR与P帧

    一眼看出NALU中SPS与PPS与SEI与IDR与P帧

    vc++ADOX创建数据库

    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CADOXCreateDatabaseDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CADOXCreateDatabaseDlg) DDX_Text...

    VC++菜单命令响应函数

    http://blog.csdn.net/xjm199 void CMainFrame::OnTest() { // TODO: Add your command handler code here MessageBox("Test Click!"); }

    IDR_Main.rar_IDR

    3 files (Main.cpp, Main.h and Main.dfm) of IDR (Interactive Delphi Reconstructor) at http://idr32.com/

    使用mp4v2将h264和aac封装成mp4

    我们通过编码得到的h264和aac数据通常需要封装成mp4文件,可以使用mp4v2实现这样的封装,封装的时候需要注意一些细节,比如...文章附件资源,原文链接:https://blog.csdn.net/u013113678/article/details/122833036

    LIDC-XML-only.zip

    LIDC-IDRI LIDC-XML-only 下载来源:https://wiki.cancerimagingarchive.net/display/Public/LIDC-IDRI

    delphi反编译三剑客工具

    IDR (Interactive Delphi Reconstructor) , Delphi反汇编利器,不断更新中。官方主页:http://kpnc.org/idr32/en/download.htm 二、 Delphi Decompiler v1.1.211b Delphi反编译工具 三、 DeDe 3.5原版 反Delphi、 ...

    h.264解码发现IDR帧

    h.264解码发现IDR帧,包括源代码,vc6的工程和可执行程序

    云终端关键技术白皮书(2021).pdf

    云终端关键技术白皮书(2021) 1、 前言 .................................. 1 2、 云终端简介 ................................2 2.1 云终端定义 .............................2 2.2 云终端产品 .............- i -

    多小球碰撞

    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CFallDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CFallDlg) // NOTE: the ClassWizard will add ...

    显示我的文档路径

    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CWENDANGDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CWENDANGDlg) // NOTE: the ClassWizard will...

    VC++访问ACCESS数据库

    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CShujukuDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CShujukuDlg) DDX_Text(pDX, IDC_EDIT1, m_...

    按钮扩展类CxSkinButton

    一般用法: m_btn.SetTextColor(RGB(255,0,0));//设置按钮字体颜色 m_btn.SetSkin(IDB_BITMAP1,IDB_BITMAP2);//设置按钮背景色IDB_BITMAP1弹起颜色;IDB_BITMAP2按下颜色 ...//IDR_MENU1为菜单资源ID,nSel为子菜单ID

    MFC与IP多播技术的局域网聊天器网络课程设计

    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CTask3UIDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTask3UIDlg) DDX_Control(pDX, IDC_RECE, m_...

Global site tag (gtag.js) - Google Analytics