On 03/11/2016 06:06 PM, Mats Peterson wrote:
On 03/11/2016 06:04 PM, Mats Peterson wrote:
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



To get the size of any "global non-palette header" or whatever, just
subtract the size of the BITMAPINFOHEADER (40 bytes) from the size of
the strf chunk.

Mats

Both HuffYUV, ffvhuff and asv1/asv2 work just fine on demuxing when using a biSize of 40, for the record.

Mats

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to