diff mbox series

[FFmpeg-devel,v3,4/4] fate/jpegxl_anim: add demuxer fate test for jpegxl_anim

Message ID 20230624043853.12237-5-leo.izen@gmail.com
State New
Headers show
Series JPEG XL Parser addition | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 fail Make fate failed
andriy/make_x86 success Make finished
andriy/make_fate_x86 fail Make fate failed

Commit Message

Leo Izen June 24, 2023, 4:38 a.m. UTC
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@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

Comments

James Almer June 24, 2023, 12:26 p.m. UTC | #1
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@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?

> 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 June 24, 2023, 3:28 p.m. UTC | #2
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@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
diff mbox series

Patch

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
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