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

Mats Peterson matsp888 at yahoo.com
Fri Mar 11 15:21:38 CET 2016


On 03/11/2016 03:13 PM, Mats Peterson wrote:
> Michael Niedermayer <michael at niedermayer.cc> skrev: (11 mars 2016 15:05:49 CET)
>> On Fri, Mar 11, 2016 at 02:12:56PM +0100, Mats Peterson wrote:
>>> Mats Peterson <matsp888-at-yahoo.com at ffmpeg.org> skrev: (11 mars 2016
>> 14:06:19 CET)
>>>> Mats Peterson <matsp888-at-yahoo.com at ffmpeg.org> skrev: (11 mars
>> 2016
>>>> 13:55:20 CET)
>>>>> Michael Niedermayer <michael at niedermayer.cc> skrev: (11 mars 2016
>>>>> 13:49:32 CET)
>>>>>> On Fri, Mar 11, 2016 at 01:28:47PM +0100, Mats Peterson wrote:
>>>>>>> On 03/11/2016 01:25 PM, Mats Peterson wrote:
>>>>>>>> On 03/11/2016 01:14 PM, Michael Niedermayer wrote:
>>>>>>>>> On Fri, Mar 11, 2016 at 05:17:18AM +0100, 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
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Once, again, HuffYUV has its own variant of BITMAPINFOHEADER
>>>> that
>>>>>>>>>> *does* include the size of the Huffman tables in biSize.
>> That's
>>>>>> the
>>>>>>>>>> only exception as far as I know.
>>>>>>>>>
>>>>>>>>> is huffyuv really the exception ? and not raw rgb or palettes
>> ?
>>>>>>>>>
>>>>>>>>> asv1 and asv2 do not have 40 there
>>>>>>
>>>>>>>>> which codec with a non-palette global header puts 40 there ?
>>>>>>
>>>>>> [...]
>>>>>>
>>>>>>> As I said before, Microsoft Video 1 in 8-bit mode and RLE4/RLE8
>>>>>>> won't even display in Windows Media Player if this value is
>>>> anything
>>>>>>> else than 40.
>>>>>>
>>>>>> msv1 / RLE4/8 doesnt have a "Non palette global header"
>>>>>>
>>>>>>
>>>>>> [...]
>>>>>
>>>>> That's correct. Sorry. Anyway, the only case I know of is HuffYUV
>> with
>>>>> its special variant of BITMAPINFOHEADER that includes the Huffman
>>>>> tables. Is there stated anywhere in the ASUS specs that the size of
>>>> the
>>>>> extra data following the BITMAPINFOHEADER should be included in
>>>> biSize?
>>>>> If not, it should be 40.
>>>>>
>>>>> Mats
>>>>> --
>>>>> Mats Peterson
>>>>> http://matsp888.no-ip.org/~mats/
>>>>> _______________________________________________
>>>>> ffmpeg-devel mailing list
>>>>> ffmpeg-devel at ffmpeg.org
>>>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>>
>>>> Those asv1/asv2 files play just fine with a biSize of 40, at that.
>>>>
>>>> Mats
>>>> --
>>>> Mats Peterson
>>>> http://matsp888.no-ip.org/~mats/
>>>> _______________________________________________
>>>> ffmpeg-devel mailing list
>>>> ffmpeg-devel at ffmpeg.org
>>>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>>
>>> Should we perhaps "tighten" the "specs" (I saw that you have written
>> some documentation on asv1/asv2 in FFmpeg), and include those extra
>> bytes in biSize? I suppose this is somewhat of a proprietary FFmpeg
>> invention.
>>
>> we didnt invent ASUS video 1 and 2 nor huffyuv
>>
>> which codec with a non-palette global header puts 40 there ?
>>
>> the ms specs just says the color table & mask isnt part of biSize
>> it doesnt say the global header isnt, or iam looking at the wrong text
>> or location in the text/spec
>>
>> [...]
>
> Again, only one I know of is HuffYUV, and the specs define a custom BITMAPINFOHEADER that includes the Huffman tables. The "global data" in ASUS is only 8 bytes. Do they regard the BITMAPINFOHEADER as being part of this global data as well? And should we? A BITMAPINFOHEADER is a BITMAPINFOHEADER is a BITMAPINFOHEADER...
>
> Mats
>

Do you have a sample file with asv1/asv2 *created by ASUS* where biSize 
isn't 40?

Mts

-- 
Mats Peterson
http://matsp888.no-ip.org/~mats/


More information about the ffmpeg-devel mailing list