Interlaced Video
================

Video buffers have a number of states identifiable through a combination of caps
and buffer flags.

Possible states:
- Progressive
- Interlaced
  - Plain
    - One field
    - Two fields
    - Three fields - this should be a progressive buffer with a repeated 'first'
      field that can be used for telecine pulldown
  - Telecine
    - One field
    - Two fields
      - Progressive
      - Interlaced (a.k.a. 'mixed'; the fields are from different frames)
    - Three fields - this should be a progressive buffer with a repeated 'first'
      field that can be used for telecine pulldown

Note: It can be seen that the difference between the plain interlaced and
telecine states is that in the telecine state, buffers containing two fields may
be progressive.

Tools for identification:
- GstVideoInfo
  - GstVideoInterlaceMode - enum - GST_VIDEO_INTERLACE_MODE_...
    - PROGRESSIVE
    - INTERLEAVED
    - MIXED
- Buffers flags - GST_VIDEO_BUFFER_FLAG_...
  - TFF
  - RFF
  - ONEFIELD
  - INTERLACED


Identification of Buffer States
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Note that flags are not necessarily interpreted in the same way for all
different states nor are they necessarily required nor make sense in all cases.


Progressive
...........

If the interlace mode in the video info corresponding to a buffer is
"progressive", then the buffer is progressive.


Plain Interlaced
................

If the video info interlace mode is "interleaved", then the buffer is plain
interlaced.

GST_VIDEO_BUFFER_FLAG_TFF indicates whether the top or bottom field is to be
displayed first. The timestamp on the buffer corresponds to the first field.

GST_VIDEO_BUFFER_FLAG_RFF indicates that the first field (indicated by the TFF flag)
should be repeated. This is generally only used for telecine purposes but as the
telecine state was added long after the interlaced state was added and defined,
this flag remains valid for plain interlaced buffers.

GST_VIDEO_BUFFER_FLAG_ONEFIELD means that only the field indicated through the TFF
flag is to be used. The other field should be ignored.


Telecine
........

If video info interlace mode is "mixed" then the buffers are in some form of
telecine state.

The TFF and ONEFIELD flags have the same semantics as for the plain interlaced
state.

GST_VIDEO_BUFFER_FLAG_RFF in the telecine state indicates that the buffer contains
only repeated fields that are present in other buffers and are as such
unneeded. For example, in a sequence of three telecined frames, we might have:

AtAb AtBb BtBb

In this situation, we only need the first and third buffers as the second
buffer contains fields present in the first and third.

Note that the following state can have its second buffer identified using the
ONEFIELD flag (and TFF not set):

AtAb AtBb BtCb

The telecine state requires one additional flag to be able to identify
progressive buffers.

The presence of the GST_VIDEO_BUFFER_FLAG_INTERLACED means that the buffer is an
'interlaced' or 'mixed' buffer that contains two fields that, when combined
with fields from adjacent buffers, allow reconstruction of progressive frames.
The absence of the flag implies the buffer containing two fields is a
progressive frame.

For example in the following sequence, the third buffer would be mixed (yes, it
is a strange pattern, but it can happen):

AtAb AtBb BtCb CtDb DtDb
