Commit 6e90835538 for ffmpeg
commit 6e90835538cc65f87a7d6c64c4b625a6e3a95342
Author: Ruk Doe <info@doany.io>
Date: Sat Aug 15 20:42:34 2026 +0900
fate/subtitles: add libaribcaption bitmap clear-screen test
Add a regression test for the bitmap-mode clear handling in the
libaribcaption wrapper. The sample (sub/aribcaption_clear.ts, 1128 bytes,
synthetic) carries an ARIB STD-B24 profile A caption stream with:
t=1s caption management data
t=2s CS + one DRCS glyph -> visible caption (num_rects=1)
t=3s TIME(1.0s) only -> zero regions, must not emit an event
t=4s CS only -> empty subtitle event (num_rects=0)
The reference contains exactly two SUBTITLE frames. Before the fix the
CS-only statement produced no event (one frame); a region_count == 0
predicate would also erase on the TIME-only statement (three frames).
The visible glyph is a DRCS pattern, so the result does not depend on
installed fonts; the test passes on a system without any fonts.
The test uses ffprobe -show_frames, so only num_rects and timestamps are
compared; no rendered bitmap data enters the reference.
diff --git a/tests/fate/subtitles.mak b/tests/fate/subtitles.mak
index 2b5bc19283..3ded96e044 100644
--- a/tests/fate/subtitles.mak
+++ b/tests/fate/subtitles.mak
@@ -163,6 +163,12 @@ fate-sub-dvb: CMD = framecrc -i $(TARGET_SAMPLES)/sub/dvbsubtest_filter.ts -map
FATE_SUBTITLES-$(call ALLYES, PIPE_PROTOCOL SRT_DEMUXER SUBRIP_DECODER TTML_ENCODER TTML_MUXER) += fate-sub-ttmlenc
fate-sub-ttmlenc: CMD = fmtstdout ttml -i $(TARGET_SAMPLES)/sub/SubRip_capability_tester.srt
+# visible caption -> TIME-only statement -> CS-only statement; in bitmap mode
+# only the explicit clear screen (CS) must emit an empty (num_rects=0) event.
+FATE_SUBTITLES_PROBE-$(call DEMDEC, MPEGTS, LIBARIBCAPTION) += fate-sub-aribcaption-clear
+fate-sub-aribcaption-clear: CMD = probeframes -sub_type bitmap $(TARGET_SAMPLES)/sub/aribcaption_clear.ts
+fate-sub-aribcaption-clear: CMP = diff
+
FATE_SUBTITLES-$(call ENCMUX, ASS, ASS) += $(FATE_SUBTITLES_ASS-yes)
FATE_SUBTITLES += $(FATE_SUBTITLES-yes)
FATE_SUBTITLES := $(if $(CONFIG_PIPE_PROTOCOL), $(FATE_SUBTITLES))
@@ -170,5 +176,6 @@ FATE_SUBTITLES := $(if $(CONFIG_PIPE_PROTOCOL), $(FATE_SUBTITLES))
fate-sub-%: CMP = rawdiff
FATE_SAMPLES_FFMPEG += $(FATE_SUBTITLES)
-fate-subtitles: $(FATE_SUBTITLES) $(FATE_SUB_KARAOKE-yes)
+FATE_SAMPLES_FFPROBE += $(FATE_SUBTITLES_PROBE-yes)
+fate-subtitles: $(FATE_SUBTITLES) $(FATE_SUB_KARAOKE-yes) $(FATE_SUBTITLES_PROBE-yes)
FATE_FFMPEG-yes += $(FATE_SUB_KARAOKE-yes)
diff --git a/tests/ref/fate/sub-aribcaption-clear b/tests/ref/fate/sub-aribcaption-clear
new file mode 100644
index 0000000000..8ba75d0220
--- /dev/null
+++ b/tests/ref/fate/sub-aribcaption-clear
@@ -0,0 +1,18 @@
+[SUBTITLE]
+media_type=subtitle
+pts=2000000
+pts_time=2.000000
+format=0
+start_display_time=0
+end_display_time=4294967295
+num_rects=1
+[/SUBTITLE]
+[SUBTITLE]
+media_type=subtitle
+pts=4000000
+pts_time=4.000000
+format=0
+start_display_time=0
+end_display_time=4294967295
+num_rects=0
+[/SUBTITLE]