[FFmpeg-devel] Question: Indeo frame types

Maxim max_pole
Sun May 24 19:46:33 CEST 2009

Hello Reimar,
>> Frame type 1 is always coded relatively to either type 0 or previous type 1.
>> So the frame type 1 looks for me like a standard P-Frame while type 3 is
>> unknown. I think it should be a kind of backward predictive one.
> Since there is no backward prediction, hardly. It is just a nonref (not
> used as reference) P-frame. No idea why they thought it makes sense,
> maybe it uses code that is more efficient but is too inaccurate to
> bas a prediction on? 

I have an idea why: indeo5 uses scalability intensively. It offers both
spatial (droppable freq bands) and temporal (droppable frames)
scalability. Frames of the type 3 are always placed between 0 and 1 so
can be easily omitted. Furthermore I observed the following rule: if a
video was encoded with <= 15 fps it uses only frame types 0 and 1. If a
video was encoded with > 15 fps (for example 30 fps) it will use frame
types 0, 1 and 3 where frames 3 and 1 are always interleaved. The
decoder could reduce the frame rate from 30fps to 15fps easily just by
dropping the frames of the type 3 if there's not enough processor time
Make that sense?

> Any suggestions about the frame type 3?
> Are you sure it is a separate frame type? Is there a type 2?

Yes and yes...
There is a type 2. It's only present if scalability mode is enabled! The
typical frame sequence looks like this:

0, 3, 2, 3, 2, 3, 1, 3, 2, 3, 2, 3, 1 and so on

I think it's the B-Frame type. I'm not sure the xanim decoder can handle
that because it doesn't contain any frame averaging code! I suppose it
just drops these but I need to proof it. The frame type of 2 occurs only
in videos encoded using the indeo encoder for Windows...

BTW indeo4 has the same two different P-frame types (numbered as 2 and
4) and these occurs even if the bi-directional prediction is disabled
(the bidirectional mode can be controlled by user in indeo4!). Switching
the bi-directional prediction on produces a further frame type of 3...

I would say:
0 - I-Frame
1 - P-Frame
3 - droppable P-Frame



More information about the ffmpeg-devel mailing list