DR(Instantaneous Decoding Refresh)--即时解码刷新。
I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I帧区别开,所以才把第一个首个I帧叫IDR,这样就方便控制编码和解码流程。IDR帧的作用是立刻刷新,使错误不致传播,从IDR帧开始,重新算一个新的序列开始编码。而I帧不具有随机访问的能力,这个功能是由IDR承担。IDR会导致DPB(DecodedPictureBuffer 参考帧列表——这是关键所在)清空,而I不会。IDR图像一定是I图像,但I图像不一定是IDR图像。一个序列中可以有很多的I图像,I图像之后的图像可以引用I图像之间的图像做运动参考。一个序列中可以有很多的I图像,I图像之后的图象可以引用I图像之间的图像做运动参考。
对于IDR帧来说,在IDR帧之后的所有帧都不能引用任何IDR帧之前的帧的内容,与此相反,对于普通的I-帧来说,位于其之后的B-和P-帧可以引用位于普通I-帧之前的I-帧。从随机存取的视频流中,播放器永远可以从一个IDR帧播放,因为在它之后没有任何帧引用之前的帧。但是,不能在一个没有IDR帧的视频中从任意点开始播放,因为后面的帧总是会引用前面的帧。
上面是转载的,转自:http://blog.csdn.net/heanyu/article/details/6255111
以下是我的理解,I帧和IDR帧从他们自己的角度来看是一样的,都是不参考其他帧,可以独自解码,但是从其他帧的角度就不一样,举例来说:
如有以下的帧序列:
I IDR B I B P I B P。
这样的帧序列中,在IDR后的B、P帧不能参考第一个I帧,因为被IDR分割了,最后一个B和P帧可以参考第三个I帧之前的帧,因为第三个I帧不是IDR分割帧(也许把IDR帧叫做分隔帧好理解一些)。
我们知道x264编码中有组的概念,这个IDR帧就像组与组直接的分隔符一样,2组之间互不影响。