[FFmpeg-devel] [PATCH v3 4/4] fate/jpegxl_anim: add demuxer fate test for jpegxl_anim
Leo Izen
leo.izen at gmail.com
Sat Jun 24 18:28:29 EEST 2023
On 6/24/23 08:26, James Almer wrote:
> On 6/24/2023 1:38 AM, Leo Izen wrote:
>> Adds a fate test for the jpegxl_anim demuxer, that should allow testing
>> for true positives and false positives for animated jpegxl files. Note
>> that two of the test cases are not animated, in order to help sort out
>> false positives.
>>
>> Signed-off-by: <leo.izen at gmail.com>
>> ---
>> tests/Makefile | 1 +
>> tests/fate/jxl.mak | 16 ++++++++++++++++
>> tests/ref/fate/jxl-anim-demux-belgium | 6 ++++++
>> tests/ref/fate/jxl-anim-demux-icos4d | 6 ++++++
>> tests/ref/fate/jxl-anim-demux-lenna256 | 7 +++++++
>> tests/ref/fate/jxl-anim-demux-newton | 6 ++++++
>> 6 files changed, 42 insertions(+)
>> create mode 100644 tests/fate/jxl.mak
>> create mode 100644 tests/ref/fate/jxl-anim-demux-belgium
>> create mode 100644 tests/ref/fate/jxl-anim-demux-icos4d
>> create mode 100644 tests/ref/fate/jxl-anim-demux-lenna256
>> create mode 100644 tests/ref/fate/jxl-anim-demux-newton
>>
>> diff --git a/tests/Makefile b/tests/Makefile
>> index e09f30a0fc..7b80762e81 100644
>> --- a/tests/Makefile
>> +++ b/tests/Makefile
>> @@ -201,6 +201,7 @@ include $(SRC_PATH)/tests/fate/image.mak
>> include $(SRC_PATH)/tests/fate/imf.mak
>> include $(SRC_PATH)/tests/fate/indeo.mak
>> include $(SRC_PATH)/tests/fate/jpeg2000.mak
>> +include $(SRC_PATH)/tests/fate/jxl.mak
>> include $(SRC_PATH)/tests/fate/libavcodec.mak
>> include $(SRC_PATH)/tests/fate/libavdevice.mak
>> include $(SRC_PATH)/tests/fate/libavformat.mak
>> diff --git a/tests/fate/jxl.mak b/tests/fate/jxl.mak
>> new file mode 100644
>> index 0000000000..057d3be0e1
>> --- /dev/null
>> +++ b/tests/fate/jxl.mak
>> @@ -0,0 +1,16 @@
>> +# These two are animated JXL files
>> +FATE_JPEGXL_ANIM_DEMUX += fate-jxl-anim-demux-newton
>> +fate-jxl-anim-demux-newton: CMD = framecrc -i
>> $(TARGET_SAMPLES)/jxl/newton.jxl -c copy
>> +FATE_JPEGXL_ANIM_DEMUX += fate-jxl-anim-demux-icos4d
>> +fate-jxl-anim-demux-icos4d: CMD = framecrc -i
>> $(TARGET_SAMPLES)/jxl/icos4d.jxl -c copy
>> +
>> +# These two are not animated JXL. They are here to check false
>> positives.
>> +FATE_JPEGXL_ANIM_DEMUX += fate-jxl-anim-demux-belgium
>> +fate-jxl-anim-demux-belgium: CMD = framecrc -i
>> $(TARGET_SAMPLES)/jxl/belgium.jxl -c copy
>> +FATE_JPEGXL_ANIM_DEMUX += fate-jxl-anim-demux-lenna256
>> +fate-jxl-anim-demux-lenna256: CMD = framecrc -i
>> $(TARGET_SAMPLES)/jxl/lenna-256.jxl -c copy
>> +
>> +FATE_JPEGXL_ANIM_DEMUX += $(FATE_JPEGXL_ANIM_DEMUX-yes)
>> +
>> +FATE_SAMPLES_FFMPEG-$(call FRAMECRC, JPEGXL_ANIM) +=
>> $(FATE_JPEGXL_ANIM_DEMUX)
>> +fate-jxl-anim-demux: $(FATE_JPEGXL_ANIM_DEMUX)
>> diff --git a/tests/ref/fate/jxl-anim-demux-belgium
>> b/tests/ref/fate/jxl-anim-demux-belgium
>> new file mode 100644
>> index 0000000000..b2fe5035ac
>> --- /dev/null
>> +++ b/tests/ref/fate/jxl-anim-demux-belgium
>> @@ -0,0 +1,6 @@
>> +#tb 0: 1/25
>> +#media_type 0: video
>> +#codec_id 0: jpegxl
>> +#dimensions 0: 768x512
>> +#sar 0: 0/1
>> +0, 0, 0, 1, 32, 0xa2930a20
>> diff --git a/tests/ref/fate/jxl-anim-demux-icos4d
>> b/tests/ref/fate/jxl-anim-demux-icos4d
>> new file mode 100644
>> index 0000000000..eff6ff1f1b
>> --- /dev/null
>> +++ b/tests/ref/fate/jxl-anim-demux-icos4d
>> @@ -0,0 +1,6 @@
>> +#tb 0: 1/1000
>> +#media_type 0: video
>> +#codec_id 0: jpegxl
>> +#dimensions 0: 48x48
>> +#sar 0: 0/1
>> +0, 0, 0, 0, 67898, 0x53b6516b
>> diff --git a/tests/ref/fate/jxl-anim-demux-lenna256
>> b/tests/ref/fate/jxl-anim-demux-lenna256
>> new file mode 100644
>> index 0000000000..0bd286a451
>> --- /dev/null
>> +++ b/tests/ref/fate/jxl-anim-demux-lenna256
>> @@ -0,0 +1,7 @@
>> +#tb 0: 1/25
>> +#media_type 0: video
>> +#codec_id 0: jpegxl
>> +#dimensions 0: 256x256
>> +#sar 0: 0/1
>> +0, 0, 0, 1, 4096, 0x2409e9e3
>> +0, 1, 1, 1, 3992, 0x966dbfcb
>
> Why is this returning two frames when it's not an animation? And why the
> two animated files are returning only one frame? Do the latter have the
> animation bits in the header but still are a single frame?
>
Because this is with -c copy, these are AVPackets, not AVFrames. For
some reason, the image2 demuxer is returning 4k-sized packets when fed
through the parser. This is what prompted the original patch to
libjxldec, to accommodate those 4k-sized packets that aren't complete
frames.
>> diff --git a/tests/ref/fate/jxl-anim-demux-newton
>> b/tests/ref/fate/jxl-anim-demux-newton
>> new file mode 100644
>> index 0000000000..6fcb85c41e
>> --- /dev/null
>> +++ b/tests/ref/fate/jxl-anim-demux-newton
>> @@ -0,0 +1,6 @@
>> +#tb 0: 1/1000
>> +#media_type 0: video
>> +#codec_id 0: jpegxl
>> +#dimensions 0: 128x96
>> +#sar 0: 0/1
>> +0, 0, 0, 0, 43376, 0xb2296182
> _______________________________________________
- Leo Izen
More information about the ffmpeg-devel
mailing list