blob: cfc515e29bb35dba295374e5f66e808a557932d5 [file] [log] [blame]
### Section 3: Compressed Frame Types {#h-03-00}
There are only two types of frames in VP8.
_Intraframes_ (also called _key frames_ and, in MPEG terminology,
_I-frames_) are decoded without reference to any other frame in a
sequence; that is, the decompressor reconstructs such frames
beginning from its "default" state. Key frames provide random access
(or seeking) points in a video stream.
_Interframes_ (also called _prediction frames_ and, in MPEG terminology,
_P-frames_) are encoded with reference to prior frames, specifically
all prior frames up to and including the most recent key frame.
Generally speaking, the correct decoding of an interframe depends on
the correct decoding of the most recent key frame and all ensuing
frames. Consequently, the decoding algorithm is not tolerant of
dropped frames: In an environment in which frames may be dropped or
corrupted, correct decoding will not be possible until a key frame is
correctly received.
In contrast to MPEG, there is no use of bidirectional prediction. No
frame is predicted using frames temporally subsequent to it; there is
no analog to an MPEG B-frame.
Secondly, VP8 augments these notions with that of alternate
prediction frames, called _golden frames_ and _altref frames_
(alternative reference frames). Blocks in an interframe may be
predicted using blocks in the immediately previous frame as well as
the most recent golden frame or altref frame. Every key frame is
automatically golden and altref, and any interframe may optionally
replace the most recent golden or altref frame.
Golden frames and altref frames may also be used to partially
overcome the intolerance to dropped frames discussed above: If a
compressor is configured to code golden frames only with reference to
the prior golden frame (and key frame), then the "substream" of key
and golden frames may be decoded regardless of loss of other
interframes. Roughly speaking, the implementation requires (on the
compressor side) that golden frames subsume and recode any context
updates effected by the intervening interframes. A typical
application of this approach is video conferencing, in which
retransmission of a prior golden frame and/or a delay in playback
until receipt of the next golden frame is preferable to a larger
retransmit and/or delay until the next key frame.