[FFmpeg-devel] Endianness of palette

Reimar Döffinger Reimar.Doeffinger at gmx.de
Sun Feb 28 11:31:45 CET 2016


On 28.02.2016, at 11:19, Mats Peterson <matsp888-at-yahoo.com at ffmpeg.org> wrote:
> From libavutil/pixfmt.h:
> 
> * @note
> * AV_PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA
> * color is put together as:
> *  (A << 24) | (R << 16) | (G << 8) | B
> * This is stored as BGRA on little-endian CPU architectures and ARGB on
> * big-endian CPUs.
> 
> 
> This is not quite true, and you said yourself that the palette isn't stored in a host-specific order, Michael, since one has to use AV_RL32() to get the palette entries correctly on a big-endian machine. Itt is stored BGRA, in that order, in memory, as far as I understand.

1) pixfmt.h applies to AVFrame not AVPacket really, it can be a bit confusing for raw formats that way though
2) this part just says that RGB32 is short for "bigendian ? ARGB : BRGA", it is not really its own format, so I miss a bit of context why it is relevant for palette.



More information about the ffmpeg-devel mailing list