[FFmpeg-devel] [PATCH 3/3] avformat/electronicarts: add option to return alpha channel in the main video stream in VP6A codec

Marton Balint cus at passwd.hu
Wed Nov 23 00:31:25 EET 2022



On Thu, 17 Nov 2022, Peter Ross wrote:

> On Mon, Nov 14, 2022 at 11:05:44PM +0100, Marton Balint wrote:
>>
>>
>> On Mon, 14 Nov 2022, Anton Khirnov wrote:
>>
>>> Quoting Marton Balint (2022-11-13 19:44:41)
>>>> Signed-off-by: Marton Balint <cus at passwd.hu>
>>>> ---
>>>>  doc/demuxers.texi            | 18 ++++++++++++++++
>>>>  libavformat/electronicarts.c | 42 +++++++++++++++++++++++++++++++-----
>>>>  libavformat/version.h        |  2 +-
>>>>  3 files changed, 56 insertions(+), 6 deletions(-)
>>>>
>>>> diff --git a/doc/demuxers.texi b/doc/demuxers.texi
>>>> index 2b6dd86c2a..f07f3f5318 100644
>>>> --- a/doc/demuxers.texi
>>>> +++ b/doc/demuxers.texi
>>>> @@ -285,6 +285,24 @@ This demuxer accepts the following option:
>>>>
>>>>  @end table
>>>>
>>>> + at section ea
>>>> +
>>>> +Electronic Arts Multimedia format demuxer.
>>>> +
>>>> +This format is used by various Electronic Arts games.
>>>> +
>>>> + at subsection Options
>>>> +
>>>> + at table @option
>>>> +
>>>> + at item merge_alpha @var{bool}
>>>> +
>>>> +Normally the VP6 alpha channel (if exists) is returned as a secondary video
>>>> +stream,
>>>
>>> Why? And why keep it as the default?
>>
>> VP6 alpha in EA format is a second VP6 encoded video stream where only the Y
>> component is used and is interpreted as the alpha channel of the first VP6
>> stream. The alpha VP6 stream is muxed separately from the main VP6 stream,
>> has its own stream headers and packet headers. In theory the two streams
>> might not even have the same resolution (although most likely that is not
>> something that is seen or supported in the wild), but the format is capable
>> of doing it.
>>
>> Merged VP6 alpha (also known as the VP6A codec) means that a packet of the
>> video stream contains the corresponding packet of both VP6 substreams like
>> this:
>> {OffsetOfAlpha, DataPacket, AlphaDataPacet}
>> So data and alpha data of a frame is merged to a single packet, this is how
>> VP6 video with alpha is muxed in FLV and SWF.
>>
>> So the first approach is more like how the demuxer sees data in the EA
>> format, unfortunately it is different to what the FLV or SWF format expects,
>> so - having no better place for it in the framework - I decided to do an
>> optional format conversion in the EA demuxer.
>>
>> I did not want to change the default, but certainly doable if people prefer
>> it.
>
> looks good. i have no preference.

Thanks, applied the series.

Regards,
Marton


More information about the ffmpeg-devel mailing list