[FFmpeg-devel] [PATCH 1/3] lavf/riffenc: Improve spec compliance

Mats Peterson matsp888 at yahoo.com
Fri Mar 11 18:04:42 CET 2016

On 03/11/2016 05:10 AM, Mats Peterson wrote:
> Forget patch 2/3 and 3/3 from the old patch set.
>  From the Microsoft documentation for BITMAPINFOHEADER at
> https://msdn.microsoft.com/en-us/library/windows/desktop/dd318229%28v=vs.85%29.aspx:
> "biSize: Specifies the number of bytes required by the structure. This
> value does not include the size of the color table or the size of the
> color masks, if they are appended to the end of structure."
> So, biSize is always 40. Also, Windows Media Player won't detect video
> encoded with Microsoft Video 1 in 8 bpp mode if this value is anything
> else than 40. I don't know about other codecs, they probably work.
> Anyway, we should stick with the specs, and not include the palette size
> in that field.
> Regarding the biClrUsed field, I'm setting it to 1 <<
> bits_per_coded_sample if palettized video, since setting it to 0 is
> another case where it won't work with Windows Media Player and Microsoft
> Video 1 in 8 bpp mode.
> Mats

Regarding HuffYUV, I would say it breaks the specs by using its own 
BITMAPINFOHEADER larger than 40 bytes, but we can't do much about that 
now. For other codecs, anything after the BITMAPINFOHEADER, be it a 
palette or other data, should NOT be included in biSize, since that's 
what Microsoft tells us. They don't mention non-palette data, but that's 
almost implicit.

Remember, biSize is "The number of bytes required by the structure." I'm 
quoting Microsoft. The structure is the BITMAPINFOHEADER, nothing else.


Mats Peterson

More information about the ffmpeg-devel mailing list