[FFmpeg-devel] [RFC] AVComponentDescriptor and bit-streamed formats
Mon Mar 30 00:26:10 CEST 2009
I'm trying to figure out how to manage the bit-streamed formats using
I'll use the term "bit-streamed format" and "byte-streamead format" to
distinguish between the two types of formats.
These are the concepts used for describing a component:
* plane: this applies perfectly well to both bit-streamed and
* step (range: 1 - 8): it's the number of bytes between 2 horizontally
consecutive pixels (byte-streamed formats).
For bit-streamed formats it may be both the number of *bits* between
two consecutive pixels (only problem is that the range may not
the number of bytes between the pixels, if the number of bytes
between two pixels is not an integer then we need to add to this
value another value.
* offset (range: -1 - 6): number of bytes before the component of the
first pixel, same consideration as for the step field applies.
* shift (range: 0 - 7): it's the number of least significant bits that
must be shifted away to get the value.
This doesn't make sense for bit-streamed filters, but may be used in
combination with step or offset.
* depth: number of bits in the component, works fine with both bit and
So the problem I'm having is with step+offset+shift.
The variables I need for describing a bit-streamed format are:
* step (bits or bytes+remaining bits)
* offset (bits or bytes+remaining bits)
Currently the only bit-streamed formats supported in FFmpeg are:
BGR4, RGB4, MONOWHITE, MONOBLACK, and for these the ranges used for
step and offset may suffice for interpreting those values as a number
of *bits*, but for extensibility sake I think we should:
* extend the range of the step and offset fields
* introduce new fields to express the step/offset remaining bits
(maybe reusing shift)
Once this is clear it should be fairly easy to complete the
read_line() function in pixdesc.h and write a corresponding
write_line() functions (which I almost completely did in my working
copy, but the missing bits for dealing with bit-streamed formats).
FFmpeg = Funny and Fostering Mythic Picky Extravagant Game
More information about the ffmpeg-devel