[FFmpeg-devel] [PATCH v2 5/5] libavformat/webp: add WebP demuxer

Thilo Borgmann thilo.borgmann at mail.de
Fri Jul 7 00:08:08 EEST 2023


Am 06.07.23 um 22:24 schrieb James Zern:
> On Thu, Jul 6, 2023 at 4:28 AM Thilo Borgmann <thilo.borgmann at mail.de> wrote:
>>
>> From: Josef Zlomek <josef at pex.com>
>>
>> Adds the demuxer of animated WebP files.
>> It supports non-animated, animated, truncated, and concatenated files.
>> Reading from a pipe (and other non-seekable inputs) is also supported.
>>
>> The WebP demuxer splits the input stream into packets containing one frame.
>> It also marks the key frames properly.
>> The loop count is ignored by default (same behaviour as animated PNG and GIF),
>> it may be enabled by the option '-ignore_loop 0'.
>>
>> The frame rate is set according to the frame delay in the ANMF chunk.
>> If the delay is too low, or the image is not animated, the default frame rate
>> is set to 10 fps, similarly to other WebP libraries and browsers.
>> The fate suite was updated accordingly.
>>
>> Signed-off-by: Josef Zlomek <josef at pex.com>
>> ---
>>   Changelog                                   |   1 +
>>   doc/demuxers.texi                           |  28 +
>>   libavformat/Makefile                        |   1 +
>>   libavformat/allformats.c                    |   1 +
>>   libavformat/version.h                       |   2 +-
>>   libavformat/webpdec.c                       | 733 ++++++++++++++++++++
>>   tests/ref/fate/webp-rgb-lena-lossless       |   2 +-
>>   tests/ref/fate/webp-rgb-lena-lossless-rgb24 |   2 +-
>>   tests/ref/fate/webp-rgb-lossless            |   2 +-
>>   tests/ref/fate/webp-rgb-lossy-q80           |   2 +-
>>   tests/ref/fate/webp-rgba-lossless           |   2 +-
>>   tests/ref/fate/webp-rgba-lossy-q80          |   2 +-
>>   12 files changed, 771 insertions(+), 7 deletions(-)
>>   create mode 100644 libavformat/webpdec.c
>>
> 
> Looks like fate is breaking on fate-exif-image-webp with this change.

Oh will add it!


> I also noticed a few corrupt files could hang this. I'll send some examples.

Looking into them.

>> [...]
>> +        // fallback if VP8X chunk was not present
>> +        if (!canvas_width && width > 0)
>> +            canvas_width = width;
>> +        if (!canvas_height && height > 0)
>> +            canvas_height = height;
>> +    }
>> +
>> +    // WebP format operates with time in "milliseconds", therefore timebase is 1/100
> 
> 1/1000

Fixed locally.

Thanks,
Thilo



More information about the ffmpeg-devel mailing list