[FFmpeg-devel] [PATCH v1] fate/jpeg2000: add JPEG 2000 tests using ITU/ISO conformance materials

pal at sandflow.com pal at sandflow.com
Mon Dec 26 22:22:08 EET 2022


From: Pierre-Anthony Lemieux <pal at palemieux.com>

Adds JPEG 2000 decoder tests using materials from the conformance suite specified in
Rec. ITU-T T.803 | ISO/IEC 15444-4. The jpeg2000dec-ds0_ht_01_b11 test assumes that
patchset https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=8078 has been applied.

The test materials are available at https://gitlab.com/wg1/htj2k-codestreams

---
 tests/Makefile                           |  1 +
 tests/fate/jpeg2000.mak                  | 64 ++++++++++++++++++++++++
 tests/ref/fate/jpeg2000dec-ds0_ht_01_b11 |  6 +++
 tests/ref/fate/jpeg2000dec-p0_01         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_02         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_03         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_04         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_05         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_07         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_08         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_09         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_11         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_12         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_14         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_15         |  6 +++
 tests/ref/fate/jpeg2000dec-p0_16         |  6 +++
 16 files changed, 149 insertions(+)
 create mode 100644 tests/fate/jpeg2000.mak
 create mode 100644 tests/ref/fate/jpeg2000dec-ds0_ht_01_b11
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_01
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_02
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_03
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_04
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_05
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_07
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_08
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_09
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_11
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_12
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_14
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_15
 create mode 100644 tests/ref/fate/jpeg2000dec-p0_16

diff --git a/tests/Makefile b/tests/Makefile
index 1d50e1d175..d80065a9bf 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -200,6 +200,7 @@ include $(SRC_PATH)/tests/fate/id3v2.mak
 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/libavcodec.mak
 include $(SRC_PATH)/tests/fate/libavdevice.mak
 include $(SRC_PATH)/tests/fate/libavformat.mak
diff --git a/tests/fate/jpeg2000.mak b/tests/fate/jpeg2000.mak
new file mode 100644
index 0000000000..2c22706ad3
--- /dev/null
+++ b/tests/fate/jpeg2000.mak
@@ -0,0 +1,64 @@
+# The following tests are based on the conformance suite specified in
+# Rec. ITU-T T.803 | ISO/IEC 15444-4 available at the following URLs:
+# * https://gitlab.com/wg1/htj2k-codestreams
+# * https://www.itu.int/rec/T-REC-T.803/en
+# * https://www.iso.org/standard/81574.html
+#
+# Notes:
+# * p0_06.j2k is not included because it uses a pixel format that is not
+#   supported (4:2:2:1)
+# * p0_10.j2k is not included because errors are emitted during decoding and
+#   there are significant deviations from the reference image in the bottom-left
+#   quadrant
+# * p0_13.j2k is not included because it uses a pixel format that is not
+#   supported (257 color channels)
+# * p0_04.j2k and p0_05.j2k exceed the error thresholds specified in the
+#   conformance suite
+# * p0_09.j2k matches the reference image exactly when bitexact is not used, but
+#   exceed the error thresholds specified in the conformance suite when bitexact
+#   is used
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_01
+fate-jpeg2000dec-p0_01: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_01.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_02
+fate-jpeg2000dec-p0_02: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_02.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_03
+fate-jpeg2000dec-p0_03: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_03.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_04
+fate-jpeg2000dec-p0_04: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_04.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_05
+fate-jpeg2000dec-p0_05: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_05.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_07
+fate-jpeg2000dec-p0_07: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_07.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_08
+fate-jpeg2000dec-p0_08: CMD = framecrc -flags +bitexact -lowres 1 -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_08.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_09
+fate-jpeg2000dec-p0_09: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_09.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_11
+fate-jpeg2000dec-p0_11: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_11.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_12
+fate-jpeg2000dec-p0_12: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_12.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_14
+fate-jpeg2000dec-p0_14: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_14.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_15
+fate-jpeg2000dec-p0_15: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_15.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-p0_16
+fate-jpeg2000dec-p0_16: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/codestreams_profile0/p0_16.j2k
+
+FATE_JPEG2000DEC += fate-jpeg2000dec-ds0_ht_01_b11
+fate-jpeg2000dec-ds0_ht_01_b11: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/jpeg2000/itu-iso/htj2k_bsets_profile0/ds0_ht_01_b11.j2k
+
+FATE_SAMPLES_FFMPEG += $(FATE_JPEG2000DEC)
+fate-jpeg2000dec: $(FATE_JPEG2000DEC)
diff --git a/tests/ref/fate/jpeg2000dec-ds0_ht_01_b11 b/tests/ref/fate/jpeg2000dec-ds0_ht_01_b11
new file mode 100644
index 0000000000..af3eaa086d
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-ds0_ht_01_b11
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 128x128
+#sar 0: 0/1
+0,          0,          0,        1,    16384, 0x44426324
diff --git a/tests/ref/fate/jpeg2000dec-p0_01 b/tests/ref/fate/jpeg2000dec-p0_01
new file mode 100644
index 0000000000..d923cc2109
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_01
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 128x128
+#sar 0: 0/1
+0,          0,          0,        1,    16384, 0x04a3647e
diff --git a/tests/ref/fate/jpeg2000dec-p0_02 b/tests/ref/fate/jpeg2000dec-p0_02
new file mode 100644
index 0000000000..f96d24c121
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_02
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 64x126
+#sar 0: 0/1
+0,          0,          0,        1,     8064, 0xd634c70c
diff --git a/tests/ref/fate/jpeg2000dec-p0_03 b/tests/ref/fate/jpeg2000dec-p0_03
new file mode 100644
index 0000000000..e508fb61e0
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_03
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 256x256
+#sar 0: 0/1
+0,          0,          0,        1,    65536, 0x252408c0
diff --git a/tests/ref/fate/jpeg2000dec-p0_04 b/tests/ref/fate/jpeg2000dec-p0_04
new file mode 100644
index 0000000000..5de7880c44
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_04
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 640x480
+#sar 0: 0/1
+0,          0,          0,        1,   921600, 0x097d9665
diff --git a/tests/ref/fate/jpeg2000dec-p0_05 b/tests/ref/fate/jpeg2000dec-p0_05
new file mode 100644
index 0000000000..bb215043a1
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_05
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 1024x1024
+#sar 0: 0/1
+0,          0,          0,        1,  2621440, 0x081f5048
diff --git a/tests/ref/fate/jpeg2000dec-p0_07 b/tests/ref/fate/jpeg2000dec-p0_07
new file mode 100644
index 0000000000..e561a1b780
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_07
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 2048x2048
+#sar 0: 0/1
+0,          0,          0,        1, 25165824, 0x9685aad6
diff --git a/tests/ref/fate/jpeg2000dec-p0_08 b/tests/ref/fate/jpeg2000dec-p0_08
new file mode 100644
index 0000000000..5e202b741b
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_08
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 257x1536
+#sar 0: 0/1
+0,          0,          0,        1,  2368512, 0xece49ff9
diff --git a/tests/ref/fate/jpeg2000dec-p0_09 b/tests/ref/fate/jpeg2000dec-p0_09
new file mode 100644
index 0000000000..1755e7cc7d
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_09
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 17x37
+#sar 0: 0/1
+0,          0,          0,        1,      629, 0x5c9c389d
diff --git a/tests/ref/fate/jpeg2000dec-p0_11 b/tests/ref/fate/jpeg2000dec-p0_11
new file mode 100644
index 0000000000..9b15604361
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_11
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 128x1
+#sar 0: 0/1
+0,          0,          0,        1,      128, 0xae9630db
diff --git a/tests/ref/fate/jpeg2000dec-p0_12 b/tests/ref/fate/jpeg2000dec-p0_12
new file mode 100644
index 0000000000..435c124c99
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_12
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 3x5
+#sar 0: 0/1
+0,          0,          0,        1,       15, 0x2a170596
diff --git a/tests/ref/fate/jpeg2000dec-p0_14 b/tests/ref/fate/jpeg2000dec-p0_14
new file mode 100644
index 0000000000..5d28e611a0
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_14
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 49x49
+#sar 0: 0/1
+0,          0,          0,        1,     7203, 0x61d40b41
diff --git a/tests/ref/fate/jpeg2000dec-p0_15 b/tests/ref/fate/jpeg2000dec-p0_15
new file mode 100644
index 0000000000..e508fb61e0
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_15
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 256x256
+#sar 0: 0/1
+0,          0,          0,        1,    65536, 0x252408c0
diff --git a/tests/ref/fate/jpeg2000dec-p0_16 b/tests/ref/fate/jpeg2000dec-p0_16
new file mode 100644
index 0000000000..d923cc2109
--- /dev/null
+++ b/tests/ref/fate/jpeg2000dec-p0_16
@@ -0,0 +1,6 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 128x128
+#sar 0: 0/1
+0,          0,          0,        1,    16384, 0x04a3647e
-- 
2.25.1



More information about the ffmpeg-devel mailing list