[FFmpeg-devel] [PATCH 19/19] fate/all: add missing crc/framecrc/md5/framemd5/pipe dependencies

Nicolas Gaullier nicolas.gaullier at cji.paris
Sun Oct 27 03:09:35 EEST 2024


When CMD is crc/framecrc, always use the macros CRC/FRAMECRC, even if it
includes unnecessary requirements for rawvideo/pcm_s16le encoders (as
actually noticed in a comment of the Makefile).

Signed-off-by: Nicolas Gaullier <nicolas.gaullier at cji.paris>
---
 tests/Makefile                |  3 ++
 tests/fate/aac.mak            |  2 +-
 tests/fate/ac3.mak            |  4 +-
 tests/fate/acodec.mak         |  4 +-
 tests/fate/adpcm.mak          | 38 +++++++--------
 tests/fate/alac.mak           |  2 +-
 tests/fate/als.mak            |  3 +-
 tests/fate/amrnb.mak          |  2 +-
 tests/fate/amrwb.mak          |  2 +-
 tests/fate/apng.mak           |  2 +-
 tests/fate/atrac.mak          |  6 +--
 tests/fate/audio.mak          | 20 ++++----
 tests/fate/caf.mak            |  2 +-
 tests/fate/demux.mak          | 90 +++++++++++++++++------------------
 tests/fate/dpcm.mak           |  4 +-
 tests/fate/ffmpeg.mak         |  6 +--
 tests/fate/fifo-muxer.mak     |  2 +-
 tests/fate/filter-audio.mak   | 16 ++++---
 tests/fate/filter-video.mak   |  4 +-
 tests/fate/flac.mak           |  2 +-
 tests/fate/gapless.mak        |  2 +-
 tests/fate/h264.mak           |  8 ++--
 tests/fate/hlsenc.mak         |  2 +
 tests/fate/image.mak          |  4 +-
 tests/fate/imf.mak            |  3 +-
 tests/fate/indeo.mak          | 18 ++++---
 tests/fate/lavf-container.mak | 28 +++++------
 tests/fate/lavf-video.mak     |  2 +-
 tests/fate/libswresample.mak  |  1 +
 tests/fate/lossless-audio.mak |  8 ++--
 tests/fate/matroska.mak       | 24 +++++-----
 tests/fate/microsoft.mak      |  2 +-
 tests/fate/monkeysaudio.mak   |  3 +-
 tests/fate/mov.mak            |  6 +--
 tests/fate/mp3.mak            |  2 +-
 tests/fate/mpc.mak            |  6 +--
 tests/fate/mpegps.mak         |  2 +-
 tests/fate/oma.mak            |  2 +-
 tests/fate/pcm.mak            |  9 ++--
 tests/fate/qoa.mak            |  6 +--
 tests/fate/real.mak           | 16 +++----
 tests/fate/segment.mak        |  6 +--
 tests/fate/subtitles.mak      |  3 +-
 tests/fate/video.mak          |  2 +-
 tests/fate/voice.mak          | 16 +++----
 tests/fate/vpx.mak            |  2 +-
 tests/fate/vqf.mak            |  4 +-
 tests/fate/wma.mak            | 16 +++----
 tests/fate/xvid.mak           |  2 +-
 49 files changed, 215 insertions(+), 204 deletions(-)

diff --git a/tests/Makefile b/tests/Makefile
index da5cd1ccde..03e80d619f 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -106,6 +106,9 @@ FRAMEMD5 = $(call ALLYES, $(1:%=%_DEMUXER) $(2:%=%_DECODER) $(3)              \
 FRAMECRC = $(call ALLYES, $(1:%=%_DEMUXER) $(2:%=%_DECODER) $(3)              \
                           PCM_S16LE_ENCODER RAWVIDEO_ENCODER FRAMECRC_MUXER   \
                           PIPE_PROTOCOL FILE_PROTOCOL)
+CRC = $(call ALLYES, $(1:%=%_DEMUXER) $(2:%=%_DECODER) $(3)              \
+                          PCM_S16LE_ENCODER RAWVIDEO_ENCODER CRC_MUXER   \
+                          PIPE_PROTOCOL FILE_PROTOCOL)
 
 # Variant of DEMDEC for use with the "pcm" command.
 PCM = $(call ALLYES, $(1:%=%_DEMUXER) $(2:%=%_DECODER)  $(3) FILE_PROTOCOL    \
diff --git a/tests/fate/aac.mak b/tests/fate/aac.mak
index de7b912e20..56c35c88f9 100644
--- a/tests/fate/aac.mak
+++ b/tests/fate/aac.mak
@@ -263,7 +263,7 @@ $(FATE_AAC_ALL): FUZZ = 2
 
 FATE_AAC_ENCODE-$(call TRANSCODE, AAC, ADTS AAC, WAV_MUXER WAV_DEMUXER PCM_S16LE_DECODER ARESAMPLE_FILTER) += $(FATE_AAC_ENCODE)
 
-FATE_AAC_BSF-$(call DEMDEC, AAC MATROSKA, AAC, AAC_ADTSTOASC_BSF MATROSKA_MUXER) += fate-aac-autobsf-adtstoasc
+FATE_AAC_BSF-$(call FRAMECRC, AAC MATROSKA, AAC, AAC_ADTSTOASC_BSF MATROSKA_MUXER) += fate-aac-autobsf-adtstoasc
 
 FATE_SAMPLES_FFMPEG += $(FATE_AAC_ALL) $(FATE_AAC_ENCODE-yes) $(FATE_AAC_BSF-yes)
 
diff --git a/tests/fate/ac3.mak b/tests/fate/ac3.mak
index 714ae31990..a2e4522824 100644
--- a/tests/fate/ac3.mak
+++ b/tests/fate/ac3.mak
@@ -65,8 +65,8 @@ fate-eac3-5: REF = $(SAMPLES)/eac3/the_great_wall_7.1.pcm
 
 $(FATE_AC3) $(FATE_EAC3): CMP = oneoff
 
-FATE_AC3-$(call  DEMDEC, AC3,  AC3 AC3_FIXED, PCM_S16LE_MUXER ARESAMPLE_FILTER)  += $(FATE_AC3)
-FATE_EAC3-$(call DEMDEC, EAC3, EAC3,          PCM_S16LE_MUXER ARESAMPLE_FILTER) += $(FATE_EAC3)
+FATE_AC3-$(call  PCM, AC3,  AC3 AC3_FIXED, PCM_S16LE_MUXER ARESAMPLE_FILTER)  += $(FATE_AC3)
+FATE_EAC3-$(call PCM, EAC3, EAC3,          PCM_S16LE_MUXER ARESAMPLE_FILTER) += $(FATE_EAC3)
 
 FATE_AC3-$(call ENCDEC, AC3, AC3, WAV_MUXER WAV_DEMUXER ARESAMPLE_FILTER PCM_S16LE_ENCODER PIPE_PROTOCOL) += fate-ac3-encode
 fate-ac3-encode: CMD = enc_dec_pcm ac3 wav s16le $(subst $(SAMPLES),$(TARGET_SAMPLES),$(REF)) -c:a ac3 -b:a 128k
diff --git a/tests/fate/acodec.mak b/tests/fate/acodec.mak
index 7b09e3bd63..54884371ac 100644
--- a/tests/fate/acodec.mak
+++ b/tests/fate/acodec.mak
@@ -121,7 +121,7 @@ fate-acodec-dca: CMD = md5 -i $(TARGET_PATH)/$(SRC) -c:a dca -strict -2 -f dts -
 fate-acodec-dca: CMP = oneline
 fate-acodec-dca: REF = 2aa580ac67820fce4f581b96ebb34acc
 
-FATE_ACODEC-$(call ENCDEC, DCA, WAV, ARESAMPLE_FILTER) += fate-acodec-dca2
+FATE_ACODEC-$(call ENCDEC, DCA, WAV, ARESAMPLE_FILTER PIPE_PROTOCOL) += fate-acodec-dca2
 fate-acodec-dca2: CMD = enc_dec_pcm dts wav s16le $(SRC) -c:a dca -strict -2 -flags +bitexact -af aresample
 fate-acodec-dca2: REF = $(SRC)
 fate-acodec-dca2: CMP = stddev
@@ -144,7 +144,7 @@ fate-acodec-g723_1: CODEC = g723_1
 fate-acodec-g723_1: ENCOPTS = -b:a 6.3k
 fate-acodec-g723_1: CMP_SHIFT = 8
 
-FATE_ACODEC-$(call ENCDEC, RA_144, WAV) += fate-acodec-ra144
+FATE_ACODEC-$(call ENCDEC, RA_144, WAV, PIPE_PROTOCOL) += fate-acodec-ra144
 fate-acodec-ra144: tests/data/asynth-8000-1.wav
 fate-acodec-ra144: SRC = tests/data/asynth-8000-1.wav
 fate-acodec-ra144: CMD = enc_dec_pcm rm wav s16le $(SRC) -c:a real_144
diff --git a/tests/fate/adpcm.mak b/tests/fate/adpcm.mak
index 7265211f09..70e59191aa 100644
--- a/tests/fate/adpcm.mak
+++ b/tests/fate/adpcm.mak
@@ -1,7 +1,7 @@
-FATE_ADPCM-$(call DEMDEC, FOURXM, ADPCM_4XM, ARESAMPLE_FILTER) += fate-adpcm-4xm
+FATE_ADPCM-$(call FRAMECRC, FOURXM, ADPCM_4XM, ARESAMPLE_FILTER) += fate-adpcm-4xm
 fate-adpcm-4xm: CMD = framecrc -i $(TARGET_SAMPLES)/4xm/dracula.4xm -vn -map 0:6 -af aresample
 
-FATE_ADPCM-$(call DEMDEC, AST, ADPCM_AFC, ARESAMPLE_FILTER) += fate-adpcm-afc
+FATE_ADPCM-$(call FRAMECRC, AST, ADPCM_AFC, ARESAMPLE_FILTER) += fate-adpcm-afc
 fate-adpcm-afc: CMD = framecrc -i $(TARGET_SAMPLES)/ast/demo11_02_partial.ast -af aresample
 
 FATE_ADPCM-$(call DEMDEC, WAV, ADPCM_CT) += fate-adpcm-creative
@@ -16,28 +16,28 @@ fate-adpcm-creative-8-2.6bit: CMD = md5 -i $(TARGET_SAMPLES)/creative/BBC_3BIT.V
 FATE_ADPCM-$(call DEMDEC, VOC, ADPCM_SBPRO_4) += fate-adpcm-creative-8-4bit
 fate-adpcm-creative-8-4bit: CMD = md5 -i $(TARGET_SAMPLES)/creative/BBC_4BIT.VOC -f s16le
 
-FATE_ADPCM-$(call DEMDEC, ADP, ADPCM_DTK, ARESAMPLE_FILTER) += fate-adpcm-dtk
+FATE_ADPCM-$(call FRAMECRC, ADP, ADPCM_DTK, ARESAMPLE_FILTER) += fate-adpcm-dtk
 fate-adpcm-dtk: CMD = framecrc -i $(TARGET_SAMPLES)/adp/shakespr_partial.adp -f s16le -af aresample
 
-FATE_ADPCM-$(call DEMDEC, EA, ADPCM_EA) += fate-adpcm-ea-1
+FATE_ADPCM-$(call FRAMECRC, EA, ADPCM_EA) += fate-adpcm-ea-1
 fate-adpcm-ea-1: CMD = framecrc -i $(TARGET_SAMPLES)/ea-wve/networkBackbone-partial.wve -frames:a 26 -vn
 
-FATE_ADPCM-$(call DEMDEC, EA, ADPCM_EA) += fate-adpcm-ea-2
+FATE_ADPCM-$(call FRAMECRC, EA, ADPCM_EA) += fate-adpcm-ea-2
 fate-adpcm-ea-2: CMD = framecrc -i $(TARGET_SAMPLES)/ea-dct/NFS2Esprit-partial.dct -vn
 
-FATE_ADPCM-$(call DEMDEC, XA, ADPCM_EA_MAXIS_XA) += fate-adpcm-ea-maxis-xa
+FATE_ADPCM-$(call FRAMECRC, XA, ADPCM_EA_MAXIS_XA) += fate-adpcm-ea-maxis-xa
 fate-adpcm-ea-maxis-xa: CMD = framecrc -i $(TARGET_SAMPLES)/maxis-xa/SC2KBUG.XA -frames:a 30
 
-FATE_ADPCM-$(call DEMDEC, EA, ADPCM_EA_R1, ARESAMPLE_FILTER) += fate-adpcm-ea-r1
+FATE_ADPCM-$(call FRAMECRC, EA, ADPCM_EA_R1, ARESAMPLE_FILTER) += fate-adpcm-ea-r1
 fate-adpcm-ea-r1: CMD = framecrc -i $(TARGET_SAMPLES)/ea-mad/NFS6LogoE.mad -vn -af aresample
 
-FATE_ADPCM-$(call DEMDEC, EA, ADPCM_EA_R2, ARESAMPLE_FILTER) += fate-adpcm-ea-r2
+FATE_ADPCM-$(call CRC, EA, ADPCM_EA_R2, ARESAMPLE_FILTER) += fate-adpcm-ea-r2
 fate-adpcm-ea-r2: CMD = crc -i $(TARGET_SAMPLES)/ea-mpc/THX_logo.mpc -vn -af aresample
 
-FATE_ADPCM-$(call DEMDEC, EA, ADPCM_EA_R3, ARESAMPLE_FILTER) += fate-adpcm-ea-r3
+FATE_ADPCM-$(call CRC, EA, ADPCM_EA_R3, ARESAMPLE_FILTER) += fate-adpcm-ea-r3
 fate-adpcm-ea-r3: CMD = crc -i $(TARGET_SAMPLES)/ea-vp6/THX_logo.vp6 -vn -af aresample
 
-FATE_ADPCM-$(call DEMDEC, AVI, ADPCM_IMA_AMV) += fate-adpcm-ima-amv
+FATE_ADPCM-$(call FRAMECRC, AVI, ADPCM_IMA_AMV) += fate-adpcm-ima-amv
 fate-adpcm-ima-amv: CMD = framecrc -i $(TARGET_SAMPLES)/amv/MTV_high_res_320x240_sample_Penguin_Joke_MTV_from_WMV.amv -t 10 -vn
 
 FATE_ADPCM-$(call DEMDEC, APC, ADPCM_IMA_APC) += fate-adpcm-ima-apc
@@ -49,10 +49,10 @@ fate-adpcm-ima-dk3: CMD = md5 -i $(TARGET_SAMPLES)/duck/sop-audio-only.avi -f s1
 FATE_ADPCM-$(call DEMDEC, AVI, ADPCM_IMA_DK4) += fate-adpcm-ima-dk4
 fate-adpcm-ima-dk4: CMD = md5 -i $(TARGET_SAMPLES)/duck/salsa-audio-only.avi -f s16le
 
-FATE_ADPCM-$(call DEMDEC, EA, ADPCM_IMA_EA_EACS) += fate-adpcm-ima-ea-eacs
+FATE_ADPCM-$(call FRAMECRC, EA, ADPCM_IMA_EA_EACS) += fate-adpcm-ima-ea-eacs
 fate-adpcm-ima-ea-eacs: CMD = framecrc -i $(TARGET_SAMPLES)/ea-tgv/INTRO8K-partial.TGV -vn
 
-FATE_ADPCM-$(call DEMDEC, EA, ADPCM_IMA_EA_SEAD) += fate-adpcm-ima-ea-sead
+FATE_ADPCM-$(call FRAMECRC, EA, ADPCM_IMA_EA_SEAD) += fate-adpcm-ima-ea-sead
 fate-adpcm-ima-ea-sead: CMD = framecrc -i $(TARGET_SAMPLES)/ea-tgv/INTEL_S.TGV -vn
 
 FATE_ADPCM-$(call DEMDEC, ISS, ADPCM_IMA_ISS) += fate-adpcm-ima-iss
@@ -64,31 +64,31 @@ fate-adpcm-ima-oki: CMD = md5 -i $(TARGET_SAMPLES)/oki/test.wav -f s16le
 FATE_ADPCM-$(call DEMDEC, RSD, ADPCM_IMA_RAD) += fate-adpcm-ima-rad
 fate-adpcm-ima-rad: CMD = md5 -i $(TARGET_SAMPLES)/rsd/hit_run_partial.rsd -f s16le
 
-FATE_ADPCM-$(call DEMDEC, SMJPEG, ADPCM_IMA_SMJPEG) += fate-adpcm-ima-smjpeg
+FATE_ADPCM-$(call FRAMECRC, SMJPEG, ADPCM_IMA_SMJPEG) += fate-adpcm-ima-smjpeg
 fate-adpcm-ima-smjpeg: CMD = framecrc -i $(TARGET_SAMPLES)/smjpeg/scenwin.mjpg -vn
 
 FATE_ADPCM-$(call DEMDEC, MOV, ADPCM_IMA_WAV, ARESAMPLE_FILTER) += fate-adpcm-ima_wav-stereo
 fate-adpcm-ima_wav-stereo: CMD = md5 -i $(TARGET_SAMPLES)/qt-surge-suite/surge-2-16-L-ms11.mov -f s16le -af aresample
 
-FATE_ADPCM-$(call DEMDEC, WSVQA, ADPCM_IMA_WS) += fate-adpcm-ima-ws
+FATE_ADPCM-$(call FRAMECRC, WSVQA, ADPCM_IMA_WS) += fate-adpcm-ima-ws
 fate-adpcm-ima-ws: CMD = framecrc -i $(TARGET_SAMPLES)/vqa/cc-demo1-partial.vqa -vn
 
-FATE_ADPCM-$(call DEMDEC, WSVQA, ADPCM_IMA_WS, ARESAMPLE_FILTER) += fate-adpcm-ima-ws-vqa3
+FATE_ADPCM-$(call FRAMECRC, WSVQA, ADPCM_IMA_WS, ARESAMPLE_FILTER) += fate-adpcm-ima-ws-vqa3
 fate-adpcm-ima-ws-vqa3: CMD = framecrc -i $(TARGET_SAMPLES)/vqa/small-cut-v3.vqa -vn -af aresample
 
-FATE_ADPCM-$(call DEMDEC, DXA, ADPCM_MS) += fate-adpcm-ms-mono
+FATE_ADPCM-$(call FRAMECRC, DXA, ADPCM_MS) += fate-adpcm-ms-mono
 fate-adpcm-ms-mono: CMD = framecrc -i $(TARGET_SAMPLES)/dxa/meetsquid.dxa -t 2 -vn
 
 FATE_ADPCM-$(call DEMDEC, MOV, ADPCM_MS) += fate-adpcm_ms-stereo
 fate-adpcm_ms-stereo: CMD = md5 -i $(TARGET_SAMPLES)/qt-surge-suite/surge-2-16-L-ms02.mov -f s16le
 
-FATE_ADPCM-$(call DEMDEC, THP, ADPCM_THP, ARESAMPLE_FILTER) += fate-adpcm-thp
+FATE_ADPCM-$(call FRAMECRC, THP, ADPCM_THP, ARESAMPLE_FILTER) += fate-adpcm-thp
 fate-adpcm-thp: CMD = framecrc -i $(TARGET_SAMPLES)/thp/pikmin2-opening1-partial.thp -vn -af aresample
 
-FATE_ADPCM-$(call DEMDEC, SMUSH, ADPCM_VIMA) += fate-adpcm-vima
+FATE_ADPCM-$(call FRAMECRC, SMUSH, ADPCM_VIMA) += fate-adpcm-vima
 fate-adpcm-vima: CMD = framecrc -i $(TARGET_SAMPLES)/smush/ronin_part.znm -vn
 
-FATE_ADPCM-$(call DEMDEC, STR, ADPCM_XA, ARESAMPLE_FILTER) += fate-adpcm-xa
+FATE_ADPCM-$(call FRAMECRC, STR, ADPCM_XA, ARESAMPLE_FILTER) += fate-adpcm-xa
 fate-adpcm-xa: CMD = framecrc -i $(TARGET_SAMPLES)/psx-str/abc000_cut.str -vn -af aresample
 
 FATE_ADPCM-$(call DEMDEC, ARGO_ASF, ADPCM_ARGO, ARESAMPLE_FILTER) += fate-adpcm-argo-mono
diff --git a/tests/fate/alac.mak b/tests/fate/alac.mak
index d582d07ef2..fd58703b6a 100644
--- a/tests/fate/alac.mak
+++ b/tests/fate/alac.mak
@@ -20,7 +20,7 @@ fate-alac-24-%: CMD = enc_dec_pcm mov wav s24le $(subst $(SAMPLES),$(TARGET_SAMP
 fate-alac-%: CMP = oneoff
 fate-alac-%: FUZZ = 0
 
-FATE_ALAC-$(call ENCDEC, ALAC, MOV, ARESAMPLE_FILTER) += $(FATE_ALAC)
+FATE_ALAC-$(call ENCDEC, ALAC, MOV, ARESAMPLE_FILTER PIPE_PROTOCOL) += $(FATE_ALAC)
 
 FATE_SAMPLES_FFMPEG += $(FATE_ALAC-yes)
 fate-alac: $(FATE_ALAC-yes)
diff --git a/tests/fate/als.mak b/tests/fate/als.mak
index c7287dee86..58649bd01c 100644
--- a/tests/fate/als.mak
+++ b/tests/fate/als.mak
@@ -11,5 +11,6 @@ FATE_ALS += fate-mpeg4-als-conformance-09
 
 fate-mpeg4-als-conformance-09: CMD = crc -i $(TARGET_SAMPLES)/lossless-audio/als_09_512ch2k16b.mp4
 
-FATE_SAMPLES_AVCONV-$(call DEMDEC, MOV, ALS) += $(FATE_ALS)
+FATE_ALS := $(if $(call CRC, MOV, ALS), $(FATE_ALS))
+FATE_SAMPLES_AVCONV-yes += $(FATE_ALS)
 fate-als: $(FATE_ALS)
diff --git a/tests/fate/amrnb.mak b/tests/fate/amrnb.mak
index 3dad9d67f6..007174de0a 100644
--- a/tests/fate/amrnb.mak
+++ b/tests/fate/amrnb.mak
@@ -35,6 +35,6 @@ fate-amrnb-remux: CMD = transcode amr $(TARGET_SAMPLES)/amrnb/10.2k.amr amr "-c
 
 $(FATE_AMRNB): CMP = stddev
 
-FATE_SAMPLES_FFMPEG-$(call DEMDEC, AMR, AMRNB, ARESAMPLE_FILTER) += $(FATE_AMRNB)
+FATE_SAMPLES_FFMPEG-$(call PCM, AMR, AMRNB, ARESAMPLE_FILTER) += $(FATE_AMRNB)
 FATE_SAMPLES_FFMPEG += $(FATE_AMRNB_REMUX-yes)
 fate-amrnb: $(FATE_AMRNB) $(FATE_AMRNB_REMUX-yes)
diff --git a/tests/fate/amrwb.mak b/tests/fate/amrwb.mak
index 5e0a47bb82..aec1c9d859 100644
--- a/tests/fate/amrwb.mak
+++ b/tests/fate/amrwb.mak
@@ -46,6 +46,6 @@ fate-amrwb-remux: CMD = transcode mov $(TARGET_SAMPLES)/amrwb/seed-23k85.awb amr
 
 $(FATE_AMRWB): CMP = stddev
 
-FATE_SAMPLES_FFMPEG-$(call DEMDEC, MOV, AMRWB, ARESAMPLE_FILTER) += $(FATE_AMRWB)
+FATE_SAMPLES_FFMPEG-$(call PCM, MOV, AMRWB, ARESAMPLE_FILTER) += $(FATE_AMRWB)
 FATE_SAMPLES_FFMPEG += $(FATE_AMRWB_REMUX-yes)
 fate-amrwb: $(FATE_AMRWB) $(FATE_AMRWB_REMUX-yes)
diff --git a/tests/fate/apng.mak b/tests/fate/apng.mak
index e9d3cf2a02..aec06c28a6 100644
--- a/tests/fate/apng.mak
+++ b/tests/fate/apng.mak
@@ -13,7 +13,7 @@ fate-apng-dispose-background: CMD = framecrc -i $(TARGET_SAMPLES)/apng/015.png
 FATE_APNG += fate-apng-dispose-background2
 fate-apng-dispose-background2: CMD = framecrc -i $(TARGET_SAMPLES)/apng/alogo.png
 
-FATE_APNG-$(call DEMDEC, APNG, APNG) += $(FATE_APNG)
+FATE_APNG-$(call FRAMECRC, APNG, APNG) += $(FATE_APNG)
 
 FATE_SAMPLES_FFMPEG += $(FATE_APNG-yes)
 fate-apng: $(FATE_APNG-yes)
diff --git a/tests/fate/atrac.mak b/tests/fate/atrac.mak
index 592d1819df..098063e298 100644
--- a/tests/fate/atrac.mak
+++ b/tests/fate/atrac.mak
@@ -7,7 +7,7 @@ fate-atrac1-2: CMD = pcm -i $(TARGET_SAMPLES)/atrac1/chirp_tone_10-16000.aea
 fate-atrac1-2: REF = $(SAMPLES)/atrac1/chirp_tone_10-16000.pcm
 fate-atrac1-2: FUZZ = 61
 
-FATE_ATRAC1-$(call DEMDEC, AEA, ATRAC1, ARESAMPLE_FILTER) += $(FATE_ATRAC1)
+FATE_ATRAC1-$(call PCM, AEA, ATRAC1, ARESAMPLE_FILTER) += $(FATE_ATRAC1)
 
 FATE_ATRAC3 += fate-atrac3-1
 fate-atrac3-1: CMD = pcm -i $(TARGET_SAMPLES)/atrac3/mc_sich_at3_066_small.wav
@@ -21,7 +21,7 @@ FATE_ATRAC3 += fate-atrac3-3
 fate-atrac3-3: CMD = pcm -i $(TARGET_SAMPLES)/atrac3/mc_sich_at3_132_small.wav
 fate-atrac3-3: REF = $(SAMPLES)/atrac3/mc_sich_at3_132_small.pcm
 
-FATE_ATRAC3-$(call DEMDEC, WAV, ATRAC3, ARESAMPLE_FILTER) += $(FATE_ATRAC3)
+FATE_ATRAC3-$(call PCM, WAV, ATRAC3, ARESAMPLE_FILTER) += $(FATE_ATRAC3)
 
 FATE_ATRAC3P += fate-atrac3p-1
 fate-atrac3p-1: CMD = pcm -i $(TARGET_SAMPLES)/atrac3p/at3p_sample1.oma
@@ -31,7 +31,7 @@ FATE_ATRAC3P += fate-atrac3p-2
 fate-atrac3p-2: CMD = pcm -i $(TARGET_SAMPLES)/atrac3p/sonateno14op27-2-cut.aa3
 fate-atrac3p-2: REF = $(SAMPLES)/atrac3p/sonateno14op27-2-cut.pcm
 
-FATE_ATRAC3P-$(call DEMDEC, OMA, ATRAC3P, ARESAMPLE_FILTER) += $(FATE_ATRAC3P)
+FATE_ATRAC3P-$(call PCM, OMA, ATRAC3P, ARESAMPLE_FILTER) += $(FATE_ATRAC3P)
 
 FATE_ATRAC_ALL = $(FATE_ATRAC1-yes) $(FATE_ATRAC3-yes) $(FATE_ATRAC3P-yes)
 
diff --git a/tests/fate/audio.mak b/tests/fate/audio.mak
index 00dc9e239e..ae17825d55 100644
--- a/tests/fate/audio.mak
+++ b/tests/fate/audio.mak
@@ -20,10 +20,10 @@ $(FATE_BINKAUDIO-yes): CMP = oneoff
 FATE_SAMPLES_AUDIO += $(FATE_BINKAUDIO-yes)
 fate-binkaudio: $(FATE_BINKAUDIO-yes)
 
-FATE_SAMPLES_AUDIO-$(call DEMDEC, BMV, BMV_AUDIO) += fate-bmv-audio
+FATE_SAMPLES_AUDIO-$(call FRAMECRC, BMV, BMV_AUDIO) += fate-bmv-audio
 fate-bmv-audio: CMD = framecrc -i $(TARGET_SAMPLES)/bmv/SURFING-partial.BMV -vn
 
-FATE_SAMPLES_AUDIO-$(call DEMDEC, DSICIN, DSICINAUDIO) += fate-delphine-cin-audio
+FATE_SAMPLES_AUDIO-$(call FRAMECRC, DSICIN, DSICINAUDIO) += fate-delphine-cin-audio
 fate-delphine-cin-audio: CMD = framecrc -i $(TARGET_SAMPLES)/delphine-cin/LOGO-partial.CIN -vn
 
 FATE_SAMPLES_AUDIO-$(call PCM, S337M, DOLBY_E, ARESAMPLE_FILTER) += fate-dolby-e
@@ -31,10 +31,10 @@ fate-dolby-e: CMD = pcm -i $(TARGET_SAMPLES)/dolby_e/16-11
 fate-dolby-e: CMP = oneoff
 fate-dolby-e: REF = $(SAMPLES)/dolby_e/16-11.pcm
 
-FATE_SAMPLES_AUDIO-$(call DEMDEC, DSS, DSS_SP, ARESAMPLE_FILTER) += fate-dss-lp
+FATE_SAMPLES_AUDIO-$(call FRAMECRC, DSS, DSS_SP, ARESAMPLE_FILTER) += fate-dss-lp
 fate-dss-lp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/lp.dss -frames 30 -af aresample
 
-FATE_SAMPLES_AUDIO-$(call DEMDEC, DSS, DSS_SP) += fate-dss-sp
+FATE_SAMPLES_AUDIO-$(call FRAMECRC, DSS, DSS_SP) += fate-dss-sp
 fate-dss-sp: CMD = framecrc -i $(TARGET_SAMPLES)/dss/sp.dss -frames 30
 
 FATE_SAMPLES_AUDIO-$(call PCM, DSF, DST, ARESAMPLE_FILTER) += fate-dsf-dst
@@ -42,7 +42,7 @@ fate-dsf-dst: CMD = pcm -i $(TARGET_SAMPLES)/dst/dst-64fs44-2ch.dff
 fate-dsf-dst: CMP = oneoff
 fate-dsf-dst: REF = $(SAMPLES)/dst/dst-64fs44-2ch.pcm
 
-FATE_SAMPLES_AUDIO-$(call DEMDEC, AVI, IMC, ARESAMPLE_FILTER) += fate-imc
+FATE_SAMPLES_AUDIO-$(call PCM, AVI, IMC, ARESAMPLE_FILTER) += fate-imc
 fate-imc: CMD = pcm -i $(TARGET_SAMPLES)/imc/imc.avi
 fate-imc: CMP = oneoff
 fate-imc: CMP_TARGET = 59416
@@ -58,7 +58,7 @@ fate-nellymoser: CMD = pcm -i $(TARGET_SAMPLES)/nellymoser/nellymoser.flv
 fate-nellymoser: CMP = oneoff
 fate-nellymoser: REF = $(SAMPLES)/nellymoser/nellymoser.pcm
 
-FATE_SAMPLES_AUDIO-$(call ENCMUX, NELLYMOSER, FLV, ARESAMPLE_FILTER) += fate-nellymoser-aref-encode
+FATE_SAMPLES_AUDIO-$(call ENCMUX, NELLYMOSER, FLV, ARESAMPLE_FILTER PIPE_PROTOCOL) += fate-nellymoser-aref-encode
 fate-nellymoser-aref-encode: $(AREF) ./tests/data/asynth-16000-1.wav
 fate-nellymoser-aref-encode: CMD = enc_dec_pcm flv wav s16le $(REF) -c:a nellymoser
 fate-nellymoser-aref-encode: CMP = stddev
@@ -67,16 +67,16 @@ fate-nellymoser-aref-encode: CMP_SHIFT = -256
 fate-nellymoser-aref-encode: CMP_TARGET = 3863
 fate-nellymoser-aref-encode: SIZE_TOLERANCE = 268
 
-FATE_SAMPLES_AUDIO-$(call DEMDEC, AVI, ON2AVC, ARESAMPLE_FILTER) += fate-on2avc
+FATE_SAMPLES_AUDIO-$(call FRAMECRC, AVI, ON2AVC, ARESAMPLE_FILTER) += fate-on2avc
 fate-on2avc: CMD = framecrc -i $(TARGET_SAMPLES)/vp7/potter-40.vp7 -frames 30 -vn -af aresample
 
-FATE_SAMPLES_AUDIO-$(call DEMDEC, PAF, PAF_AUDIO) += fate-paf-audio
+FATE_SAMPLES_AUDIO-$(call FRAMECRC, PAF, PAF_AUDIO) += fate-paf-audio
 fate-paf-audio: CMD = framecrc -i $(TARGET_SAMPLES)/paf/hod1-partial.paf -vn
 
-FATE_SAMPLES_AUDIO-$(call DEMDEC, VMD, VMDAUDIO, ARESAMPLE_FILTER) += fate-sierra-vmd-audio
+FATE_SAMPLES_AUDIO-$(call FRAMECRC, VMD, VMDAUDIO, ARESAMPLE_FILTER) += fate-sierra-vmd-audio
 fate-sierra-vmd-audio: CMD = framecrc -i $(TARGET_SAMPLES)/vmd/12.vmd -vn -af aresample
 
-FATE_SAMPLES_AUDIO-$(call DEMDEC, SMACKER, SMACKAUD, ARESAMPLE_FILTER) += fate-smacker-audio
+FATE_SAMPLES_AUDIO-$(call FRAMECRC, SMACKER, SMACKAUD, ARESAMPLE_FILTER) += fate-smacker-audio
 fate-smacker-audio: CMD = framecrc -i $(TARGET_SAMPLES)/smacker/wetlogo.smk -vn -af aresample
 
 FATE_SAMPLES_AUDIO-$(call DEMDEC, WSVQA, WS_SND1, ARESAMPLE_FILTER) += fate-ws_snd
diff --git a/tests/fate/caf.mak b/tests/fate/caf.mak
index a53f5fa0f8..4ee9c95a5c 100644
--- a/tests/fate/caf.mak
+++ b/tests/fate/caf.mak
@@ -1,4 +1,4 @@
-FATE_CAF_FFMPEG-$(call ALLYES, CAF_DEMUXER CRC_MUXER) += fate-caf-demux
+FATE_CAF_FFMPEG-$(call CRC, CAF) += fate-caf-demux
 fate-caf-demux: CMD = crc -i $(TARGET_SAMPLES)/caf/caf-pcm16.caf -c copy
 
 FATE_CAF_FFMPEG_FFPROBE-$(call REMUX, CAF, MOV_DEMUXER) += fate-caf-alac-remux
diff --git a/tests/fate/demux.mak b/tests/fate/demux.mak
index f1a00eb1b1..2df9b91cf6 100644
--- a/tests/fate/demux.mak
+++ b/tests/fate/demux.mak
@@ -1,82 +1,82 @@
-FATE_SAMPLES_DEMUX-$(call DEMDEC, AVI, FRAPS) += fate-avio-direct
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, AVI, FRAPS) += fate-avio-direct
 fate-avio-direct: CMD = framecrc -avioflags direct -i $(TARGET_SAMPLES)/fraps/fraps-v5-bouncing-balls-partial.avi -avioflags direct
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, AAC, AAC) += fate-adts-demux fate-adts-id3v1-demux fate-adts-id3v2-demux fate-adts-id3v2-two-tags-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, AAC, AAC, CRC_MUXER) += fate-adts-demux fate-adts-id3v1-demux fate-adts-id3v2-demux fate-adts-id3v2-two-tags-demux
 fate-adts-demux: CMD = crc -i $(TARGET_SAMPLES)/aac/ct_faac-adts.aac -c:a copy
 fate-adts-id3v1-demux: CMD = framecrc -f aac -i $(TARGET_SAMPLES)/aac/id3v1.aac -c:a copy
 fate-adts-id3v2-demux: CMD = framecrc -f aac -i $(TARGET_SAMPLES)/aac/id3v2.aac -c:a copy
 fate-adts-id3v2-two-tags-demux: CMD = framecrc -i $(TARGET_SAMPLES)/aac/id3v2_two_tags.aac -c:a copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, AA,, SIPR_PARSER) += fate-aa-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, AA,, SIPR_PARSER) += fate-aa-demux
 fate-aa-demux: CMD = framecrc -i $(TARGET_SAMPLES)/aa/bush.aa -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_AEA_DEMUXER) += fate-aea-demux
+FATE_SAMPLES_DEMUX-$(call CRC, AEA) += fate-aea-demux
 fate-aea-demux: CMD = crc -i $(TARGET_SAMPLES)/aea/chirp.aea -c:a copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, AV1, AV1, EXTRACT_EXTRADATA_BSF) += fate-av1-annexb-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, AV1, AV1, EXTRACT_EXTRADATA_BSF) += fate-av1-annexb-demux
 fate-av1-annexb-demux: CMD = framecrc -c:v av1 -i $(TARGET_SAMPLES)/av1/annexb.obu -c:v copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_AST_DEMUXER) += fate-ast
+FATE_SAMPLES_DEMUX-$(call CRC, AST) += fate-ast
 fate-ast: CMD = crc -i $(TARGET_SAMPLES)/ast/demo11_02_partial.ast -c copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_BINK_DEMUXER) += fate-bink-demux
+FATE_SAMPLES_DEMUX-$(call CRC, BINK) += fate-bink-demux
 fate-bink-demux: CMD = crc -i $(TARGET_SAMPLES)/bink/Snd0a7d9b58.dee -vn -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_BFSTM_DEMUXER) += fate-bfstm fate-bcstm
+FATE_SAMPLES_DEMUX-$(call CRC, BFSTM) += fate-bfstm fate-bcstm
 fate-bfstm: CMD = crc -i $(TARGET_SAMPLES)/bfstm/spl-forest-day.bfstm -c:a copy
 fate-bcstm: CMD = crc -i $(TARGET_SAMPLES)/bfstm/loz-mm-mikau.bcstm -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_BRSTM_DEMUXER) += fate-brstm
+FATE_SAMPLES_DEMUX-$(call CRC, BRSTM) += fate-brstm
 fate-brstm: CMD = crc -i $(TARGET_SAMPLES)/brstm/lozswd_partial.brstm -c:a copy
 
 FATE_FFPROBE_DEMUX-$(call DEMDEC, CAVSVIDEO, CAVS, CAVSVIDEO_PARSER EXTRACT_EXTRADATA_BSF) += fate-cavs-demux
 fate-cavs-demux: CMD = ffprobe_demux $(TARGET_SAMPLES)/cavs/bunny.mp4
 
-FATE_SAMPLES_DEMUX-$(CONFIG_CDXL_DEMUXER) += fate-cdxl-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, CDXL) += fate-cdxl-demux
 fate-cdxl-demux: CMD = framecrc -i $(TARGET_SAMPLES)/cdxl/mirage.cdxl -c:v copy -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_CINE_DEMUXER) += fate-cine-demux
+FATE_SAMPLES_DEMUX-$(call CRC, CINE) += fate-cine-demux
 fate-cine-demux: CMD = crc -i $(TARGET_SAMPLES)/cine/bayer_gbrg8.cine -c copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_DAUD_DEMUXER) += fate-d-cinema-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, DAUD) += fate-d-cinema-demux
 fate-d-cinema-demux: CMD = framecrc -i $(TARGET_SAMPLES)/d-cinema/THX_Science_FLT_1920-partial.302 -c:a copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, EA, VP6) += fate-d-eavp6-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, EA, VP6) += fate-d-eavp6-demux
 fate-d-eavp6-demux: CMD = framecrc -i $(TARGET_SAMPLES)/ea-vp6/SmallRing.vp6 -map 0 -c:v copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, FITS GIF, FITS GIF, FITS_MUXER FITS_ENCODER GIF_PARSER SCALE_FILTER) += fate-fits-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, FITS GIF, FITS GIF, FITS_MUXER FITS_ENCODER GIF_PARSER SCALE_FILTER) += fate-fits-demux
 fate-fits-demux: tests/data/fits-multi.fits
 fate-fits-demux: CMD = framecrc -i $(TARGET_PATH)/tests/data/fits-multi.fits -c:v copy
 
 FATE_FFPROBE_DEMUX-$(call DEMDEC, FLV, H264 AAC, H264_PARSER) += fate-flv-demux
 fate-flv-demux: CMD = ffprobe_demux $(TARGET_SAMPLES)/flv/Enigma_Principles_of_Lust-part.flv
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, GIF,, GIF_PARSER) += fate-gif-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, GIF,, GIF_PARSER) += fate-gif-demux
 fate-gif-demux: CMD = framecrc -i $(TARGET_SAMPLES)/gif/Newtons_cradle_animation_book_2.gif -c:v copy
 
-FATE_SAMPLES_DEMUX-$(call ALLYES, IV8_DEMUXER MPEG4VIDEO_PARSER EXTRACT_EXTRADATA_BSF) += fate-iv8-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, IV8,, MPEG4VIDEO_PARSER EXTRACT_EXTRADATA_BSF) += fate-iv8-demux
 fate-iv8-demux: CMD = framecrc -i $(TARGET_SAMPLES)/iv8/zzz-partial.mpg -c:v copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_JV_DEMUXER) += fate-jv-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, JV) += fate-jv-demux
 fate-jv-demux: CMD = framecrc -i $(TARGET_SAMPLES)/jv/intro.jv -c:v copy -c:a copy
 
-FATE_SAMPLES_DEMUX-$(call ALLYES, LMLM4_DEMUXER MPEG4VIDEO_PARSER MPEGAUDIO_PARSER EXTRACT_EXTRADATA_BSF) += fate-lmlm4-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, LMLM4,, MPEG4VIDEO_PARSER MPEGAUDIO_PARSER EXTRACT_EXTRADATA_BSF) += fate-lmlm4-demux
 fate-lmlm4-demux: CMD = framecrc -i $(TARGET_SAMPLES)/lmlm4/LMLM4_CIFat30fps.divx -t 3 -c:a copy -c:v copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_XA_DEMUXER) += fate-maxis-xa
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, XA) += fate-maxis-xa
 fate-maxis-xa: CMD = framecrc -i $(TARGET_SAMPLES)/maxis-xa/SC2KBUG.XA -frames:a 30 -c:a copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, MATROSKA, H264) += fate-mkv
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, MATROSKA, H264) += fate-mkv
 fate-mkv: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/test7_cut.mkv -c copy
 
 #No dts errors or duplicate DTS should be in this
-FATE_SAMPLES_DEMUX-$(call DEMDEC, MATROSKA,, H264_PARSER) += fate-mkv-1242
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, MATROSKA,, H264_PARSER) += fate-mkv-1242
 fate-mkv-1242: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/1242-small.mkv -c copy -frames:v 11
 
-FATE_SAMPLES_DEMUX-$(CONFIG_MLV_DEMUXER) += fate-mlv-demux
+FATE_SAMPLES_DEMUX-$(call CRC, MLV) += fate-mlv-demux
 fate-mlv-demux: CMD = crc -i $(TARGET_SAMPLES)/mlv/M19-0333-cut.MLV -c copy
 
-FATE_SAMPLES_DEMUX-$(call ALLYES, MOV_DEMUXER FRAMECRC_MUXER PIPE_PROTOCOL) += fate-mov-mp3-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, MOV) += fate-mov-mp3-demux
 fate-mov-mp3-demux: CMD = framecrc -i $(TARGET_SAMPLES)/mpegaudio/packed_maindata.mp3.mp4 -c copy
 
 FATE_FFPROBE_DEMUX-$(call PARSERDEMDEC, OPUS, MPEGTS, OPUS) += fate-ts-opus-demux
@@ -85,73 +85,73 @@ fate-ts-opus-demux: CMD = ffprobe_demux $(TARGET_SAMPLES)/opus/test-8-7.1.opus-s
 FATE_FFPROBE_DEMUX-$(call PARSERDEMDEC, H264, MPEGTS, H264, EXTRACT_EXTRADATA_BSF) += fate-ts-small-demux
 fate-ts-small-demux: CMD = ffprobe_demux $(TARGET_SAMPLES)/mpegts/h264small.ts
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, MTV,, MPEGAUDIO_PARSER) += fate-mtv
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, MTV,, MPEGAUDIO_PARSER) += fate-mtv
 fate-mtv: CMD = framecrc -i $(TARGET_SAMPLES)/mtv/comedian_auto-partial.mtv -c copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, MXF,, MPEG4VIDEO_PARSER) += fate-mxf-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, MXF,, MPEG4VIDEO_PARSER) += fate-mxf-demux
 fate-mxf-demux: CMD = framecrc -i $(TARGET_SAMPLES)/mxf/C0023S01.mxf -c:a copy -c:v copy
 
-FATE_SAMPLES_DEMUX-$(call ALLYES, NC_DEMUXER MPEG4VIDEO_PARSER EXTRACT_EXTRADATA_BSF) += fate-nc-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, NC,, MPEG4VIDEO_PARSER EXTRACT_EXTRADATA_BSF) += fate-nc-demux
 fate-nc-demux: CMD = framecrc -i $(TARGET_SAMPLES)/nc-camera/nc-sample-partial -c:v copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_NISTSPHERE_DEMUXER) += fate-nistsphere-demux
+FATE_SAMPLES_DEMUX-$(call CRC, NISTSPHERE) += fate-nistsphere-demux
 fate-nistsphere-demux: CMD = crc -i $(TARGET_SAMPLES)/nistsphere/nist-ulaw.nist -c:a copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, NSV,, VP3_PARSER MPEGAUDIO_PARSER) += fate-nsv-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, NSV,, VP3_PARSER MPEGAUDIO_PARSER) += fate-nsv-demux
 fate-nsv-demux: CMD = framecrc -i $(TARGET_SAMPLES)/nsv/witchblade-51kbps.nsv -t 6 -c:v copy -c:a copy
 
 FATE_FFPROBE_DEMUX-$(call DEMDEC, OGG, OPUS) += fate-oggopus-demux
 fate-oggopus-demux: CMD = ffprobe_demux $(TARGET_SAMPLES)/ogg/intro-partial.opus
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, OGG,, VP8_PARSER) += fate-oggvp8-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, OGG,, VP8_PARSER) += fate-oggvp8-demux
 fate-oggvp8-demux: CMD = framecrc -i $(TARGET_SAMPLES)/ogg/videotest.ogv -c:v copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_PAF_DEMUXER) += fate-paf-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, PAF) += fate-paf-demux
 fate-paf-demux: CMD = framecrc -i $(TARGET_SAMPLES)/paf/hod1-partial.paf -c:v copy -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_PMP_DEMUXER) += fate-pmp-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, PMP) += fate-pmp-demux
 fate-pmp-demux: CMD = framecrc -i $(TARGET_SAMPLES)/pmp/demo.pmp -vn -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_RSD_DEMUXER) += fate-rsd-demux
+FATE_SAMPLES_DEMUX-$(call CRC, RSD) += fate-rsd-demux
 fate-rsd-demux: CMD = crc -i $(TARGET_SAMPLES)/rsd/hum01_partial.rsd -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_REDSPARK_DEMUXER) += fate-redspark-demux
+FATE_SAMPLES_DEMUX-$(call CRC, REDSPARK) += fate-redspark-demux
 fate-redspark-demux: CMD = crc -i $(TARGET_SAMPLES)/redspark/jingle04_partial.rsd -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_STR_DEMUXER) += fate-psx-str-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, STR) += fate-psx-str-demux
 fate-psx-str-demux: CMD = framecrc -i $(TARGET_SAMPLES)/psx-str/descent-partial.str -c copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, PVA, MPEG2VIDEO, MPEGAUDIO_PARSER) += fate-pva-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, PVA, MPEG2VIDEO, MPEGAUDIO_PARSER) += fate-pva-demux
 fate-pva-demux: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/pva/PVA_test-partial.pva -t 0.6 -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_QCP_DEMUXER) += fate-qcp-demux
+FATE_SAMPLES_DEMUX-$(call CRC, QCP) += fate-qcp-demux
 fate-qcp-demux: CMD = crc -i $(TARGET_SAMPLES)/qcp/0036580847.QCP -c:a copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, R3D, JPEG2000 PCM_S32BE) += fate-redcode-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, R3D, JPEG2000 PCM_S32BE) += fate-redcode-demux
 fate-redcode-demux: CMD = framecrc -i $(TARGET_SAMPLES)/r3d/4MB-sample.r3d -c:v copy -c:a copy
 
-FATE_SAMPLES_DEMUX-$(call ALLYES, S337M_DEMUXER DOLBY_E_PARSER FRAMECRC_MUXER) += fate-s337m-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, S337M,, DOLBY_E_PARSER) += fate-s337m-demux
 fate-s337m-demux: CMD = framecrc -i $(TARGET_SAMPLES)/dolby_e/16-11 -c copy -ss 2 -t 1
 
-FATE_SAMPLES_DEMUX-$(CONFIG_SIFF_DEMUXER) += fate-siff-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, SIFF) += fate-siff-demux
 fate-siff-demux: CMD = framecrc -i $(TARGET_SAMPLES)/SIFF/INTRO_B.VB -c copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, SMJPEG, MJPEG ADPCM_IMA_SMJPEG) += fate-smjpeg-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, SMJPEG, MJPEG ADPCM_IMA_SMJPEG) += fate-smjpeg-demux
 fate-smjpeg-demux: CMD = framecrc -i $(TARGET_SAMPLES)/smjpeg/scenwin.mjpg -c copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, WAV SPDIF,, AC3_PARSER) += fate-wav-ac3
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, WAV SPDIF,, AC3_PARSER) += fate-wav-ac3
 fate-wav-ac3: CMD = framecrc -i $(TARGET_SAMPLES)/ac3/diatonis_invisible_order_anfos_ac3-small.wav -c copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_WSAUD_DEMUXER) += fate-westwood-aud
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, WSAUD) += fate-westwood-aud
 fate-westwood-aud: CMD = framecrc -i $(TARGET_SAMPLES)/westwood-aud/excellent.aud -c copy
 
-FATE_SAMPLES_DEMUX-$(call DEMDEC, WTV, MJPEG, MPEGVIDEO_PARSER MPEGAUDIO_PARSER EXTRACT_EXTRADATA_BSF) += fate-wtv-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, WTV, MJPEG, MPEGVIDEO_PARSER MPEGAUDIO_PARSER EXTRACT_EXTRADATA_BSF) += fate-wtv-demux
 fate-wtv-demux: CMD = framecrc -i $(TARGET_SAMPLES)/wtv/law-and-order-partial.wtv -c:v copy -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_XMV_DEMUXER) += fate-xmv-demux
+FATE_SAMPLES_DEMUX-$(call FRAMECRC, XMV) += fate-xmv-demux
 fate-xmv-demux: CMD = framecrc -i $(TARGET_SAMPLES)/xmv/logos1p.fmv -c:v copy -c:a copy
 
-FATE_SAMPLES_DEMUX-$(CONFIG_XWMA_DEMUXER) += fate-xwma-demux
+FATE_SAMPLES_DEMUX-$(call CRC, XWMA) += fate-xwma-demux
 fate-xwma-demux: CMD = crc -i $(TARGET_SAMPLES)/xwma/ergon.xwma -c:a copy
 
 FATE_FFPROBE_DEMUX-$(call PARSERDEMDEC, MPEGVIDEO, MPEGTS, MPEG2VIDEO AC3, EXTRACT_EXTRADATA_BSF) += fate-ts-demux
diff --git a/tests/fate/dpcm.mak b/tests/fate/dpcm.mak
index dd27246324..7596bdfb28 100644
--- a/tests/fate/dpcm.mak
+++ b/tests/fate/dpcm.mak
@@ -1,7 +1,7 @@
-FATE_DPCM-$(call DEMDEC, ROQ, ROQ_DPCM) += fate-dpcm-idroq
+FATE_DPCM-$(call FRAMECRC, ROQ, ROQ_DPCM) += fate-dpcm-idroq
 fate-dpcm-idroq: CMD = framecrc -i $(TARGET_SAMPLES)/idroq/idlogo.roq -vn
 
-FATE_DPCM-$(call DEMDEC, IPMOVIE, INTERPLAY_DPCM) += fate-dpcm-interplay
+FATE_DPCM-$(call FRAMECRC, IPMOVIE, INTERPLAY_DPCM) += fate-dpcm-interplay
 fate-dpcm-interplay: CMD = framecrc -i $(TARGET_SAMPLES)/interplay-mve/interplay-logo-2MB.mve -vn
 
 FATE_DPCM-$(call DEMDEC, SOL, SOL_DPCM) += fate-dpcm-sierra
diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak
index 87130428d1..360e62ebbe 100644
--- a/tests/fate/ffmpeg.mak
+++ b/tests/fate/ffmpeg.mak
@@ -40,7 +40,7 @@ fate-force_key_frames-source-dup: CMD = framecrc -i $(TARGET_SAMPLES)/h264/intra
   -c:v mpeg2video -g 400 -sc_threshold 99999 \
   -force_key_frames source -r 39 -force_fps -strict experimental
 
-FATE_SAMPLES_FFMPEG-$(call ENCDEC, MPEG2VIDEO H264, FRAMECRC H264, H264_PARSER CROP_FILTER DRAWBOX_FILTER) += \
+FATE_SAMPLES_FFMPEG-$(call ENCDEC, MPEG2VIDEO H264, FRAMECRC H264, H264_PARSER CROP_FILTER DRAWBOX_FILTER PIPE_PROTOCOL) += \
     fate-force_key_frames-source fate-force_key_frames-source-drop fate-force_key_frames-source-dup
 
 # Tests that the video is properly autorotated using the contained
@@ -97,8 +97,8 @@ fate-shortest: tests/data/vsynth1.yuv
 fate-shortest: CMD = framecrc -auto_conversion_filters -f lavfi -i "sine=3000:d=10" -f lavfi -i "sine=1000:d=1" -sws_flags +accurate_rnd+bitexact -fflags +bitexact -flags +bitexact -idct simple -f rawvideo -s 352x288 -pix_fmt yuv420p -i $(TARGET_PATH)/tests/data/vsynth1.yuv -filter_complex "[0:a:0][1:a:0]amix=inputs=2[audio]" -map 2:v:0 -map "[audio]" -sws_flags +accurate_rnd+bitexact -fflags +bitexact -flags +bitexact -idct simple -dct fastint -qscale 10 -threads 1 -c:v mpeg4 -c:a ac3_fixed -shortest
 
 # test interleaving video with a sparse subtitle stream
-FATE_SAMPLES_FFMPEG-$(call ALLYES, COLOR_FILTER, VOBSUB_DEMUXER, MATROSKA_DEMUXER,, \
-                           RAWVIDEO_ENCODER, MATROSKA_MUXER, FRAMECRC_MUXER) += fate-shortest-sub
+FATE_SAMPLES_FFMPEG-$(call FRAMECRC, MATROSKA,, COLOR_FILTER VOBSUB_DEMUXER \
+                           RAWVIDEO_ENCODER MATROSKA_MUXER) += fate-shortest-sub
 fate-shortest-sub: CMD = transcode                                                                    \
         vobsub $(TARGET_SAMPLES)/sub/vobsub.idx matroska                                              \
         "-filter_complex 'color=s=1x1:rate=1:duration=400' -pix_fmt rgb24 -allow_raw_vfw 1 -c:s copy -c:v rawvideo"  \
diff --git a/tests/fate/fifo-muxer.mak b/tests/fate/fifo-muxer.mak
index 9c13954cf7..441f0fb5ed 100644
--- a/tests/fate/fifo-muxer.mak
+++ b/tests/fate/fifo-muxer.mak
@@ -2,7 +2,7 @@ fate-fifo-muxer-h264: CMD = ffmpeg -i $(TARGET_SAMPLES)/mkv/1242-small.mkv -fram
                             -c:v copy -c:a copy -map v:0 -map a:0 -flags +bitexact\
                             -fflags +bitexact -f fifo -fifo_format framecrc -
 fate-fifo-muxer-h264: REF = $(SRC_PATH)/tests/ref/fate/mkv-1242
-FATE_SAMPLES_FIFO_MUXER-$(call ALLYES, FIFO_MUXER, MATROSKA_DEMUXER, H264_DECODER) += fate-fifo-muxer-h264
+FATE_SAMPLES_FIFO_MUXER-$(call FRAMECRC, MATROSKA, H264, FIFO_MUXER) += fate-fifo-muxer-h264
 
 fate-fifo-muxer-wav: CMD = ffmpeg -i $(TARGET_SAMPLES)/audio-reference/chorusnoise_2ch_44kHz_s16.wav\
                            -c:a copy -map a:0 -flags +bitexact\
diff --git a/tests/fate/filter-audio.mak b/tests/fate/filter-audio.mak
index dcadd5cacd..c05de05221 100644
--- a/tests/fate/filter-audio.mak
+++ b/tests/fate/filter-audio.mak
@@ -52,7 +52,8 @@ fate-filter-afade-log: CMD = framecrc -i $(SRC) -af afade=t=in:ss=1:d=2.5:curve=
 
 FATE_AFILTER-$(call FILTERDEMDECENCMUX, AFADE, WAV, PCM_S16LE, PCM_S16LE, WAV) += $(FATE_FILTER_AFADE)
 
-FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, ACROSSFADE, WAV, PCM_S16LE, PCM_S16LE, WAV) += fate-filter-acrossfade
+FATE_FILTER_ACROSSFADE-$(call FRAMECRC) += fate-filter-acrossfade
+FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, ACROSSFADE, WAV, PCM_S16LE, PCM_S16LE, WAV) += $(FATE_FILTER_ACROSSFADE-yes)
 fate-filter-acrossfade: tests/data/asynth-44100-2.wav
 fate-filter-acrossfade: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav
 fate-filter-acrossfade: SRC2 = $(TARGET_SAMPLES)/audio-reference/luckynight_2ch_44kHz_s16.wav
@@ -186,11 +187,13 @@ fate-filter-pan-downmix2: CMD = framecrc -ss 3.14 -i $(SRC) -frames:a 20 -filter
 FATE_AFILTER-$(call ALLYES, LAVFI_INDEV AEVALSRC_FILTER SILENCEREMOVE_FILTER ARESAMPLE_FILTER) += fate-filter-silenceremove
 fate-filter-silenceremove: CMD = framecrc -auto_conversion_filters -f lavfi -i "aevalsrc=between(t\,1\,2)+between(t\,4\,5)+between(t\,7\,9):d=10:n=8192,silenceremove=start_periods=0:start_duration=0:start_threshold=0:stop_periods=-1:stop_duration=0:stop_threshold=-90dB:window=0:detection=avg"
 
-FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, STEREOTOOLS ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, WAV) += fate-filter-stereotools
+FATE_FILTER_STEREOTOOLS-$(call FRAMECRC) += fate-filter-stereotools
+FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, STEREOTOOLS ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, WAV) += $(FATE_FILTER_STEREOTOOLS-yes)
 fate-filter-stereotools: SRC = $(TARGET_SAMPLES)/audio-reference/luckynight_2ch_44kHz_s16.wav
 fate-filter-stereotools: CMD = framecrc -i $(SRC) -frames:a 20 -af aresample,stereotools=mlev=0.015625,aresample
 
-FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, TREMOLO ATRIM ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, WAV) += fate-filter-tremolo
+FATE_FILTER_TREMOLO-$(call FRAMECRC) += fate-filter-tremolo
+FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, TREMOLO ATRIM ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, WAV) += $(FATE_FILTER_TREMOLO-yes)
 fate-filter-tremolo: tests/data/asynth-44100-2.wav
 fate-filter-tremolo: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav
 fate-filter-tremolo: CMD = ffmpeg -auto_conversion_filters -i $(SRC) -af tremolo,atrim=end_sample=20480 -f wav -f s16le -
@@ -242,14 +245,14 @@ fate-filter-amix-transition: SRC2 = $(TARGET_PATH)/tests/data/asynth-44100-2-3.w
 fate-filter-amix-transition: CMD = ffmpeg -auto_conversion_filters -filter_complex amix=inputs=3:dropout_transition=0.5 -max_size 4096 -i $(SRC) -ss 2 -max_size 4096 -i $(SRC1) -ss 4 -max_size 4096 -i $(SRC2) -f f32le -
 fate-filter-amix-transition: REF = $(SAMPLES)/filter/amix_transition.pcm
 
-FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, AMIX ARESAMPLE, WAV, PCM_S16LE, PCM_F32LE, PCM_F32LE) += $(FATE_AMIX)
+FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, AMIX ARESAMPLE, WAV, PCM_S16LE, PCM_F32LE, PCM_F32LE, PIPE_PROTOCOL) += $(FATE_AMIX)
 $(FATE_AMIX): tests/data/asynth-44100-2.wav tests/data/asynth-44100-2-2.wav
 $(FATE_AMIX): SRC  = $(TARGET_PATH)/tests/data/asynth-44100-2.wav
 $(FATE_AMIX): SRC1 = $(TARGET_PATH)/tests/data/asynth-44100-2-2.wav
 $(FATE_AMIX): CMP  = oneoff
 $(FATE_AMIX): CMP_UNIT = f32
 
-FATE_AFILTER_SAMPLES-$(call DEMDEC, FLV, NELLYMOSER, PCM_S16LE_MUXER ARESAMPLE_FILTER) += fate-filter-aresample
+FATE_AFILTER_SAMPLES-$(call PCM, FLV, NELLYMOSER, PCM_S16LE_MUXER ARESAMPLE_FILTER) += fate-filter-aresample
 fate-filter-aresample: SRC = $(TARGET_SAMPLES)/nellymoser/nellymoser-discont.flv
 fate-filter-aresample: CMD = pcm -analyzeduration 10000000 -i $(SRC) -af aresample=min_comp=0.001:min_hard_comp=0.1:first_pts=0
 fate-filter-aresample: CMP = oneoff
@@ -412,7 +415,7 @@ fate-filter-hdcd-s32p: CMD = md5 -i $(SRC) -af hdcd -f s32le
 fate-filter-hdcd-s32p: CMP = oneline
 fate-filter-hdcd-s32p: REF = 0c5513e83eedaa10ab6fac9ddc173cf5
 
-FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, ATEMPO, WAV, PCM_S16LE, PCM_S16LE, PCM_S16LE WAV) += fate-filter-atempo
+FATE_AFILTER_SAMPLES-$(call FILTERDEMDECENCMUX, ATEMPO, WAV, PCM_S16LE, PCM_S16LE, PCM_S16LE WAV, PIPE_PROTOCOL) += fate-filter-atempo
 fate-filter-atempo: tests/data/asynth-44100-1.wav
 fate-filter-atempo: CMD = pcm -i $(TARGET_PATH)/tests/data/asynth-44100-1.wav -af "atempo=2.0"
 fate-filter-atempo: CMP = oneoff
@@ -426,6 +429,7 @@ FATE_AFILTER-yes += fate-filter-formats
 fate-filter-formats: libavfilter/tests/formats$(EXESUF)
 fate-filter-formats: CMD = run libavfilter/tests/formats$(EXESUF)
 
+FATE_AFILTER-yes := $(if $(call FRAMECRC), $(FATE_AFILTER-yes))
 FATE_SAMPLES_AVCONV += $(FATE_AFILTER_SAMPLES-yes)
 FATE_FFMPEG += $(FATE_AFILTER-yes)
 fate-afilter: $(FATE_AFILTER-yes) $(FATE_AFILTER_SAMPLES-yes)
diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak
index ca1093b521..604c0c5572 100644
--- a/tests/fate/filter-video.mak
+++ b/tests/fate/filter-video.mak
@@ -574,8 +574,8 @@ fate-filter-pixelize-min: CMD = video_filter "pixelize=mode=min"
 FATE_FILTER_VSYNTH_VIDEO_FILTER-$(CONFIG_PIXELIZE_FILTER) += fate-filter-pixelize-max
 fate-filter-pixelize-max: CMD = video_filter "pixelize=mode=max"
 
-FATE_FILTER_VSYNTH_VIDEO_FILTER-$(CONFIG_TILTANDSHIFT_FILTER) += fate-filter-tiltandshift
-FATE_FILTER_VSYNTH_VIDEO_FILTER-$(call ALLYES, SCALE_FILTER TILTANDSHIFT_FILTER) += fate-filter-tiltandshift-410 fate-filter-tiltandshift-422 fate-filter-tiltandshift-444
+FATE_FILTER_VSYNTH_VIDEO_FILTER-$(call FRAMECRC,,, TILTANDSHIFT_FILTER) += fate-filter-tiltandshift
+FATE_FILTER_VSYNTH_VIDEO_FILTER-$(call FRAMECRC,,, SCALE_FILTER TILTANDSHIFT_FILTER) += fate-filter-tiltandshift-410 fate-filter-tiltandshift-422 fate-filter-tiltandshift-444
 fate-filter-tiltandshift: CMD = framecrc -c:v pgmyuv -i $(SRC) -flags +bitexact -vf tiltandshift
 fate-filter-tiltandshift-410: CMD = framecrc -c:v pgmyuv -i $(SRC) -flags +bitexact -vf scale=sws_flags=+accurate_rnd+bitexact,format=yuv410p,tiltandshift
 fate-filter-tiltandshift-422: CMD = framecrc -c:v pgmyuv -i $(SRC) -flags +bitexact -vf scale=sws_flags=+accurate_rnd+bitexact,format=yuv422p,tiltandshift
diff --git a/tests/fate/flac.mak b/tests/fate/flac.mak
index 3424b2bf82..62f2126d92 100644
--- a/tests/fate/flac.mak
+++ b/tests/fate/flac.mak
@@ -30,7 +30,7 @@ fate-flac-rice-params: CMD = enc_dec_pcm flac wav s16le $(subst $(SAMPLES),$(TAR
 fate-flac-%: CMP = oneoff
 fate-flac-%: FUZZ = 0
 
-FATE_FLAC-$(call ENCMUX, FLAC, FLAC) += $(FATE_FLAC)
+FATE_FLAC-$(call ENCMUX, FLAC, FLAC, PIPE_PROTOCOL) += $(FATE_FLAC)
 
 FATE_SAMPLES_AVCONV += $(FATE_FLAC-yes)
 fate-flac: $(FATE_FLAC)
diff --git a/tests/fate/gapless.mak b/tests/fate/gapless.mak
index e6fba1436b..e2013ea854 100644
--- a/tests/fate/gapless.mak
+++ b/tests/fate/gapless.mak
@@ -1,4 +1,4 @@
-FATE_GAPLESS-$(call DEMDEC, MP3, MP3, ARESAMPLE_FILTER) += fate-gapless-mp3
+FATE_GAPLESS-$(call FRAMECRC, MP3, MP3, ARESAMPLE_FILTER) += fate-gapless-mp3
 fate-gapless-mp3: CMD = gapless $(TARGET_SAMPLES)/gapless/gapless.mp3 "-c:a mp3"
 
 FATE_GAPLESSINFO_PROBE-$(CONFIG_MP3_DEMUXER) += fate-gapless-mp3-side-data
diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak
index 33bc3b78f1..c2c0017c89 100644
--- a/tests/fate/h264.mak
+++ b/tests/fate/h264.mak
@@ -224,15 +224,15 @@ FATE_H264-$(call FRAMECRC, MOV, H264) += fate-h264-unescaped-extradata
 # this sample contains field-coded frames, with both fields in a single packet
 FATE_H264-$(call FRAMECRC, MOV, H264) += fate-h264-twofields-packet
 
-FATE_H264-$(call DEMDEC, MOV H264, H264, H264_PARSER H264_MUXER H264_MP4TOANNEXB_BSF SCALE_FILTER) += fate-h264-bsf-mp4toannexb-new-extradata
+FATE_H264-$(call FRAMECRC, MOV H264, H264, H264_PARSER H264_MUXER H264_MP4TOANNEXB_BSF SCALE_FILTER) += fate-h264-bsf-mp4toannexb-new-extradata
 
-FATE_H264-$(call DEMMUX, MOV, H264, H264_MP4TOANNEXB_BSF) += fate-h264-bsf-mp4toannexb \
+FATE_H264-$(call FRAMECRC, MOV,, H264_MUXER H264_MP4TOANNEXB_BSF) += fate-h264-bsf-mp4toannexb \
                                                              fate-h264-bsf-mp4toannexb-2 \
 
-FATE_H264-$(call DEMDEC, MOV H264, H264, H264_PARSER H264_MUXER H264_MP4TOANNEXB_BSF EXTRACT_EXTRADATA_BSF) += fate-h264_mp4toannexb_ticket5927 \
+FATE_H264-$(call FRAMECRC, MOV H264, H264, H264_PARSER H264_MUXER H264_MP4TOANNEXB_BSF EXTRACT_EXTRADATA_BSF) += fate-h264_mp4toannexb_ticket5927 \
                                                              fate-h264_mp4toannexb_ticket5927_2
 
-FATE_H264-$(call DEMMUX, H264, MOV, H264_PARSER DTS2PTS_BSF) += fate-h264-bsf-dts2pts
+FATE_H264-$(call FRAMECRC, H264,, H264_PARSER MOV_MUXER DTS2PTS_BSF) += fate-h264-bsf-dts2pts
 
 FATE_H264-$(call FRAMECRC, MATROSKA, H264) += fate-h264-direct-bff
 FATE_H264-$(call FRAMECRC, FLV, H264, SCALE_FILTER) += fate-h264-brokensps-2580
diff --git a/tests/fate/hlsenc.mak b/tests/fate/hlsenc.mak
index 72c75bec3a..b7455b7a33 100644
--- a/tests/fate/hlsenc.mak
+++ b/tests/fate/hlsenc.mak
@@ -105,6 +105,8 @@ tests/data/hls_fmp4_ac3.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
 	-hls_time 2 -hls_segment_filename "$(TARGET_PATH)/tests/data/hls_fmp4_ac3_%d.m4s" \
 	$(TARGET_PATH)/tests/data/hls_fmp4_ac3.m3u8 2>/dev/null
 
+FATE_HLSENC-yes := $(if $(call FRAMECRC), $(FATE_HLSENC-yes))
+
 FATE_HLSENC_PROBE-$(call DEMMUX, HLS AC3, HLS MP4, AC3_DECODER) += fate-hls-fmp4_ac3
 fate-hls-fmp4_ac3: tests/data/hls_fmp4_ac3.m3u8
 fate-hls-fmp4_ac3: CMD = probeaudiostream $(TARGET_PATH)/tests/data/now_ac3.mp4
diff --git a/tests/fate/image.mak b/tests/fate/image.mak
index 3cedf9e877..98c4e0fdcc 100644
--- a/tests/fate/image.mak
+++ b/tests/fate/image.mak
@@ -331,7 +331,7 @@ FATE_EXR-$(call DEMDEC, IMAGE2, EXR, SCALE_FILTER) += $(FATE_EXR)
 FATE_IMAGE_FRAMECRC += $(FATE_EXR-yes)
 fate-exr: $(FATE_EXR-yes)
 
-FATE_JPG-$(call DEMDEC, IMAGE2, MJPEG, SCALE_FILTER SETSAR_FILTER) += fate-jpg-12bpp
+FATE_JPG-$(call FRAMECRC, IMAGE2, MJPEG, SCALE_FILTER SETSAR_FILTER) += fate-jpg-12bpp
 fate-jpg-12bpp: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpg/12bpp.jpg -f rawvideo -pix_fmt gray16le -vf setsar=sar=sar,scale
 
 FATE_JPG += fate-jpg-jfif
@@ -360,7 +360,7 @@ fate-jpg-rgb-5: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/jpg/jpg-8930-5.
 FATE_JPG_TRANSCODE-$(call TRANSCODE, MJPEG, MJPEG IMAGE_JPEG_PIPE, IMAGE_PNG_PIPE_DEMUXER PNG_DECODER SCALE_FILTER) += fate-jpg-icc
 fate-jpg-icc: CMD = transcode png_pipe $(TARGET_SAMPLES)/png1/lena-int_rgb24.png mjpeg "-vf scale" "" "-show_frames"
 
-FATE_JPG-$(call DEMDEC, IMAGE2, MJPEG) += $(FATE_JPG)
+FATE_JPG-$(call FRAMECRC, IMAGE2, MJPEG) += $(FATE_JPG)
 FATE_IMAGE_FRAMECRC += $(FATE_JPG-yes)
 FATE_IMAGE_TRANSCODE += $(FATE_JPG_TRANSCODE-yes)
 fate-jpg: $(FATE_JPG-yes) $(FATE_JPG_TRANSCODE-yes)
diff --git a/tests/fate/imf.mak b/tests/fate/imf.mak
index 100822f5e0..5ff37104d4 100644
--- a/tests/fate/imf.mak
+++ b/tests/fate/imf.mak
@@ -4,6 +4,7 @@ fate-imf-cpl-with-repeat: CMD = framecrc -i $(TARGET_SAMPLES)/imf/countdown/CPL_
 FATE_IMF += fate-imf-cpl-with-audio
 fate-imf-cpl-with-audio: CMD = framecrc -i $(TARGET_SAMPLES)/imf/countdown-audio/CPL_688f4f63-a317-4271-99bf-51444ff39c5b.xml -c:a copy
 
-FATE_SAMPLES_FFMPEG-$(CONFIG_IMF_DEMUXER) += $(FATE_IMF)
+FATE_IMF := $(if $(call FRAMECRC, IMF), $(FATE_IMF))
+FATE_SAMPLES_FFMPEG += $(FATE_IMF)
 
 fate-imfdec: $(FATE_IMF)
diff --git a/tests/fate/indeo.mak b/tests/fate/indeo.mak
index bb3c154bb8..158fd52a0b 100644
--- a/tests/fate/indeo.mak
+++ b/tests/fate/indeo.mak
@@ -1,26 +1,24 @@
-FATE_INDEO2 += fate-indeo2-delta
+FATE_INDEO2-$(call FRAMECRC, AVI, INDEO2) += fate-indeo2-delta
 fate-indeo2-delta: CMD = framecrc -i $(TARGET_SAMPLES)/rt21/ISKATE.AVI -an
 
-FATE_INDEO2 += fate-indeo2-intra
+FATE_INDEO2-$(call FRAMECRC, AVI, INDEO2) += fate-indeo2-intra
 fate-indeo2-intra: CMD = framecrc -i $(TARGET_SAMPLES)/rt21/VPAR0026.AVI
 
-FATE_SAMPLES_AVCONV-$(call DEMDEC, AVI, INDEO2) += $(FATE_INDEO2)
-fate-indeo2: $(FATE_INDEO2)
+fate-indeo2: $(FATE_INDEO2-yes)
 
-FATE_INDEO3-$(CONFIG_MOV_DEMUXER) += fate-indeo3-1
+FATE_INDEO3-$(call FRAMECRC, MOV, INDEO3) += fate-indeo3-1
 fate-indeo3-1: CMD = framecrc -i $(TARGET_SAMPLES)/iv32/cubes.mov
 
-FATE_INDEO3-$(CONFIG_AVI_DEMUXER) += fate-indeo3-2
+FATE_INDEO3-$(call FRAMECRC, AVI, INDEO3) += fate-indeo3-2
 fate-indeo3-2: CMD = framecrc -i $(TARGET_SAMPLES)/iv32/OPENINGH.avi
 
-FATE_SAMPLES_AVCONV-$(CONFIG_INDEO3_DECODER) += $(FATE_INDEO3-yes)
 fate-indeo3: $(FATE_INDEO3-yes)
 
-FATE_INDEO-$(call DEMDEC, AVI, INDEO4) += fate-indeo4
+FATE_INDEO-$(call FRAMECRC, AVI, INDEO4) += fate-indeo4
 fate-indeo4: CMD = framecrc -i $(TARGET_SAMPLES)/iv41/indeo41-partial.avi -an
 
-FATE_INDEO-$(call DEMDEC, AVI, INDEO5) += fate-indeo5
+FATE_INDEO-$(call FRAMECRC, AVI, INDEO5) += fate-indeo5
 fate-indeo5: CMD = framecrc -i $(TARGET_SAMPLES)/iv50/Educ_Movie_DeadlyForce.avi -an
 
-FATE_SAMPLES_AVCONV += $(FATE_INDEO-yes)
+FATE_SAMPLES_AVCONV += $(FATE_INDEO2-yes) $(FATE_INDEO3-yes) $(FATE_INDEO-yes)
 fate-indeo: $(FATE_INDEO2) $(FATE_INDEO3-yes) $(FATE_INDEO-yes)
diff --git a/tests/fate/lavf-container.mak b/tests/fate/lavf-container.mak
index 5d9e769458..2485c6088b 100644
--- a/tests/fate/lavf-container.mak
+++ b/tests/fate/lavf-container.mak
@@ -71,20 +71,20 @@ fate-lavf-wtv: CMD = lavf_container "" "-c:a mp2 -threads 1"
 FATE_AVCONV += $(FATE_LAVF_CONTAINER)
 fate-lavf-container fate-lavf: $(FATE_LAVF_CONTAINER)
 
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, IVF, AV1,           AV1_PARSER EXTRACT_EXTRADATA_BSF MP4_MUXER)      += av1.mp4
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, IVF MATROSKA, AV1,  AV1_PARSER EXTRACT_EXTRADATA_BSF MATROSKA_MUXER) += av1.mkv
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, EVC,,               EVC_PARSER MP4_MUXER) += evc.mp4
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, H264,,              H264_PARSER EXTRACT_EXTRADATA_BSF MP4_MUXER) += h264.mp4
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, HEVC,,              HEVC_PARSER EXTRACT_EXTRADATA_BSF MP4_MUXER) += hevc.mp4
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, MOV,,               MOV_MUXER)   += mv_hevc.mov
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, VVC,,               VVC_PARSER EXTRACT_EXTRADATA_BSF MP4_MUXER)  += vvc.mp4
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, MATROSKA OGG, VP3 THEORA, OGG_MUXER)               += vp3.ogg
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, MATROSKA OGG, VP8 VORBIS, VORBIS_PARSER OGV_MUXER) += vp8.ogg
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, MOV LOAS, AAC_LATM, LATM_MUXER) += latm
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, MP3,,               MP3_MUXER)  += mp3
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, MOV, QTRLE MACE6,         MOV_MUXER ARESAMPLE_FILTER) += qtrle_mace6.mov
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, AVI, MSVIDEO1 PCM_U8,     AVI_MUXER ARESAMPLE_FILTER) += cram.avi
-FATE_LAVF_CONTAINER_FATE-$(call DEMDEC, AVI,,               FLV_MUXER)  += hevc.flv
+FATE_LAVF_CONTAINER_FATE-$(call CRC, IVF, AV1,           AV1_PARSER EXTRACT_EXTRADATA_BSF MP4_MUXER)      += av1.mp4
+FATE_LAVF_CONTAINER_FATE-$(call CRC, IVF MATROSKA, AV1,  AV1_PARSER EXTRACT_EXTRADATA_BSF MATROSKA_MUXER) += av1.mkv
+FATE_LAVF_CONTAINER_FATE-$(call CRC, EVC,,               EVC_PARSER MP4_MUXER) += evc.mp4
+FATE_LAVF_CONTAINER_FATE-$(call CRC, H264,,              H264_PARSER EXTRACT_EXTRADATA_BSF MP4_MUXER) += h264.mp4
+FATE_LAVF_CONTAINER_FATE-$(call CRC, HEVC,,              HEVC_PARSER EXTRACT_EXTRADATA_BSF MP4_MUXER) += hevc.mp4
+FATE_LAVF_CONTAINER_FATE-$(call CRC, MOV,,               MOV_MUXER)   += mv_hevc.mov
+FATE_LAVF_CONTAINER_FATE-$(call CRC, VVC,,               VVC_PARSER EXTRACT_EXTRADATA_BSF MP4_MUXER)  += vvc.mp4
+FATE_LAVF_CONTAINER_FATE-$(call CRC, MATROSKA OGG, VP3 THEORA, OGG_MUXER)               += vp3.ogg
+FATE_LAVF_CONTAINER_FATE-$(call CRC, MATROSKA OGG, VP8 VORBIS, VORBIS_PARSER OGV_MUXER) += vp8.ogg
+FATE_LAVF_CONTAINER_FATE-$(call CRC, MOV LOAS, AAC_LATM, LATM_MUXER) += latm
+FATE_LAVF_CONTAINER_FATE-$(call CRC, MP3,,               MP3_MUXER)  += mp3
+FATE_LAVF_CONTAINER_FATE-$(call CRC, MOV, QTRLE MACE6,         MOV_MUXER ARESAMPLE_FILTER) += qtrle_mace6.mov
+FATE_LAVF_CONTAINER_FATE-$(call CRC, AVI, MSVIDEO1 PCM_U8,     AVI_MUXER ARESAMPLE_FILTER) += cram.avi
+FATE_LAVF_CONTAINER_FATE-$(call CRC, AVI,,               FLV_MUXER)  += hevc.flv
 
 FATE_LAVF_CONTAINER_FATE = $(FATE_LAVF_CONTAINER_FATE-yes:%=fate-lavf-fate-%)
 
diff --git a/tests/fate/lavf-video.mak b/tests/fate/lavf-video.mak
index da3b114bc8..971a21d161 100644
--- a/tests/fate/lavf-video.mak
+++ b/tests/fate/lavf-video.mak
@@ -12,7 +12,7 @@ FATE_LAVF_VIDEO-$(call ENCDEC, WRAPPED_AVFRAME RAWVIDEO, YUV4MPEGPIPE) += y4m
 FATE_LAVF_VIDEO-$(CONFIG_SCALE_FILTER) += $(FATE_LAVF_VIDEO_SCALE-yes)
 FATE_LAVF_VIDEO = $(FATE_LAVF_VIDEO-yes:%=fate-lavf-%)
 FATE_LAVF_VIDEO := $(if $(call ALLYES, IMAGE2_DEMUXER PGMYUV_DECODER \
-                                       RAWVIDEO_ENCODER CRC_MUXER, PIPE_PROTOCOL), \
+                                       RAWVIDEO_ENCODER CRC_MUXER PIPE_PROTOCOL), \
                         $(FATE_LAVF_VIDEO))
 
 $(FATE_LAVF_VIDEO): CMD = lavf_video
diff --git a/tests/fate/libswresample.mak b/tests/fate/libswresample.mak
index a1e5ab91fa..4f1eab923a 100644
--- a/tests/fate/libswresample.mak
+++ b/tests/fate/libswresample.mak
@@ -1097,5 +1097,6 @@ fate-swr-audioconvert: CMP = stddev
 fate-swr-audioconvert: FUZZ = 0
 
 FATE_SWR += $(FATE_SWR_AUDIOCONVERT-yes)
+FATE_SWR := $(if $(CONFIG_PIPE_PROTOCOL), $(FATE_SWR))
 FATE_FFMPEG += $(FATE_SWR)
 fate-swr: $(FATE_SWR)
diff --git a/tests/fate/lossless-audio.mak b/tests/fate/lossless-audio.mak
index 7c5af885b4..8be62b5244 100644
--- a/tests/fate/lossless-audio.mak
+++ b/tests/fate/lossless-audio.mak
@@ -16,13 +16,13 @@ fate-lossless-rka: CMD = md5 -i $(TARGET_SAMPLES)/lossless-audio/luckynight-part
 FATE_SAMPLES_LOSSLESS_AUDIO-$(call DEMDEC, OSQ, OSQ, ARESAMPLE_FILTER) += fate-lossless-osq
 fate-lossless-osq: CMD = md5 -i $(TARGET_SAMPLES)/lossless-audio/luckynight-partial.osq -f s16le -af aresample
 
-FATE_SAMPLES_LOSSLESS_AUDIO-$(call DEMDEC, TAK, TAK, ARESAMPLE_FILTER) += fate-lossless-tak
+FATE_SAMPLES_LOSSLESS_AUDIO-$(call CRC, TAK, TAK, ARESAMPLE_FILTER) += fate-lossless-tak
 fate-lossless-tak: CMD = crc -i $(TARGET_SAMPLES)/lossless-audio/luckynight-partial.tak -af aresample
 
-FATE_SAMPLES_LOSSLESS_AUDIO-$(call DEMDEC, TTA, TTA) += fate-lossless-tta
+FATE_SAMPLES_LOSSLESS_AUDIO-$(call CRC, TTA, TTA) += fate-lossless-tta
 fate-lossless-tta: CMD = crc -i $(TARGET_SAMPLES)/lossless-audio/inside.tta
 
-FATE_SAMPLES_LOSSLESS_AUDIO-$(call DEMDEC, TTA, TTA) += fate-lossless-tta-encrypted
+FATE_SAMPLES_LOSSLESS_AUDIO-$(call CRC, TTA, TTA) += fate-lossless-tta-encrypted
 fate-lossless-tta-encrypted: CMD = crc -password ffmpeg -i $(TARGET_SAMPLES)/lossless-audio/encrypted.tta
 
 FATE_SAMPLES_LOSSLESS_AUDIO-$(call DEMDEC, ASF, WMALOSSLESS, ARESAMPLE_FILTER) += fate-lossless-wma fate-lossless-wma24-1 fate-lossless-wma24-2 fate-lossless-wma24-rawtile
@@ -35,5 +35,5 @@ fate-lossless-wmall: fate-lossless-wma fate-lossless-wma24-1 fate-lossless-wma24
 FATE_SAMPLES_LOSSLESS_AUDIO += $(FATE_SAMPLES_LOSSLESS_AUDIO-yes)
 
 FATE_SAMPLES_FFMPEG += $(FATE_SAMPLES_LOSSLESS_AUDIO)
-fate-lossless-audio: $(FATE_SAMPLES_LOSSLESS_AUDIO)
 
+fate-lossless-audio: $(FATE_SAMPLES_LOSSLESS_AUDIO)
diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak
index 76b8a5e6db..bcd01928fc 100644
--- a/tests/fate/matroska.mak
+++ b/tests/fate/matroska.mak
@@ -1,9 +1,9 @@
-FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER ZLIB) += fate-matroska-prores-zlib
+FATE_MATROSKA-$(call FRAMECRC, MATROSKA,, ZLIB) += fate-matroska-prores-zlib
 fate-matroska-prores-zlib: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/prores_zlib.mkv -c:v copy
 
 # This tests that the matroska demuxer correctly adds the icpf header atom
 # upon demuxing; it also tests bz2 decompression and unknown-length cluster.
-FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER BZLIB) += fate-matroska-prores-header-insertion-bz2
+FATE_MATROSKA-$(call FRAMECRC, MATROSKA,, BZLIB) += fate-matroska-prores-header-insertion-bz2
 fate-matroska-prores-header-insertion-bz2: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/prores_bz2.mkv -map 0 -c copy
 
 # This tests that the matroska demuxer supports modifying the colorspace
@@ -14,21 +14,21 @@ fate-matroska-remux: CMD = md5pipe -i $(TARGET_SAMPLES)/vp9-test-vectors/vp90-2-
 fate-matroska-remux: CMP = oneline
 fate-matroska-remux: REF = b9c7b650349972c9dce42ab79b472917
 
-FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER VORBIS_PARSER) += fate-matroska-xiph-lacing
+FATE_MATROSKA-$(call FRAMECRC, MATROSKA,,  VORBIS_PARSER) += fate-matroska-xiph-lacing
 fate-matroska-xiph-lacing: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/xiph_lacing.mka -c:a copy
 
 # This tests that the Matroska demuxer correctly demuxes WavPack
 # without CodecPrivate; it also tests zlib compressed WavPack.
-FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER ZLIB) += fate-matroska-wavpack-missing-codecprivate
+FATE_MATROSKA-$(call FRAMECRC, MATROSKA,,  ZLIB) += fate-matroska-wavpack-missing-codecprivate
 fate-matroska-wavpack-missing-codecprivate: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/wavpack_missing_codecprivate.mka -c copy
 
 # This tests that the matroska demuxer supports decompressing
 # zlib compressed tracks (both the CodecPrivate as well as the actual frames).
-FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER ZLIB) += fate-matroska-zlib-decompression
+FATE_MATROSKA-$(call FRAMECRC, MATROSKA,,  ZLIB) += fate-matroska-zlib-decompression
 fate-matroska-zlib-decompression: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/subtitle_zlib.mks -c:s copy
 
 # This tests that the matroska demuxer can decompress lzo compressed tracks.
-FATE_MATROSKA-$(CONFIG_MATROSKA_DEMUXER) += fate-matroska-lzo-decompression
+FATE_MATROSKA-$(call FRAMECRC, MATROSKA) += fate-matroska-lzo-decompression
 fate-matroska-lzo-decompression: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/lzo.mka -c copy
 
 # This tests that the ALAC extradata is correctly transformed upon remuxing.
@@ -40,7 +40,7 @@ fate-matroska-alac-remux: CMD = transcode mov $(TARGET_SAMPLES)/lossless-audio/i
 # This tests that the matroska demuxer correctly propagates
 # the channel layout contained in vorbis comments in the CodecPrivate
 # of flac tracks. It also tests header removal compression.
-FATE_MATROSKA-$(call ALLYES, MATROSKA_DEMUXER FLAC_PARSER) += fate-matroska-flac-channel-mapping
+FATE_MATROSKA-$(call FRAMECRC, MATROSKA,, FLAC_PARSER) += fate-matroska-flac-channel-mapping
 fate-matroska-flac-channel-mapping: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/flac_channel_layouts.mka -map 0 -c:a copy
 
 # This tests that the Matroska muxer writes the channel layout
@@ -50,8 +50,7 @@ fate-matroska-flac-channel-mapping: CMD = framecrc -i $(TARGET_SAMPLES)/mkv/flac
 # Furthermore it tests everything the matroska-flac-channel-mapping test
 # tests and it also tests the FLAC decoder and encoder, in particular
 # the latter's ability to send updated extradata.
-FATE_MATROSKA-$(call ALLYES, FLAC_DECODER FLAC_ENCODER FLAC_PARSER \
-                MATROSKA_DEMUXER MATROSKA_MUXER) += fate-matroska-flac-extradata-update
+FATE_MATROSKA-$(call TRANSCODE, FLAC, MATROSKA, FLAC_PARSER) += fate-matroska-flac-extradata-update
 fate-matroska-flac-extradata-update: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/flac_channel_layouts.mka \
                                            matroska "-map 0 -map 0:0 -c flac -frames:a:2 8" "-map 0 -c copy"
 
@@ -64,9 +63,8 @@ fate-webm-av1-extradata-update: CMD = transcode ivf $(TARGET_SAMPLES)/av1/decode
 # This test tests demuxing Vorbis and chapters from ogg and muxing it in and
 # demuxing it from Matroska/WebM. It furthermore tests the WebM muxer, in
 # particular its DASH mode. Finally, it tests writing the Cues at the front.
-FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, MATROSKA_DEMUXER OGG_DEMUXER  \
-                                 VORBIS_DECODER VORBIS_PARSER WEBM_MUXER) \
-                               += fate-webm-dash-chapters
+FATE_MATROSKA_FFMPEG_FFPROBE-$(call REMUX, WEBM MATROSKA, OGG_DEMUXER VORBIS_DECODER VORBIS_PARSER) \
+                                += fate-webm-dash-chapters
 fate-webm-dash-chapters: CMD = transcode ogg $(TARGET_SAMPLES)/vorbis/vorbis_chapter_extension_demo.ogg webm "-c copy -cluster_time_limit 1500 -dash 1 -dash_track_number 124 -reserve_index_space 400" "-c copy -t 0.5" -show_chapters
 
 # The input file has a Block whose payload has a size of zero before reversing
@@ -75,7 +73,7 @@ fate-webm-dash-chapters: CMD = transcode ogg $(TARGET_SAMPLES)/vorbis/vorbis_cha
 # For the muxer this tests that it can correctly write huge TrackNumbers and
 # that it can expand the Cues element's length field by one byte if necessary.
 # It furthermore tests correct propagation of the description tag.
-FATE_MATROSKA_FFMPEG_FFPROBE-$(call DEMMUX, MATROSKA, MATROSKA) \
+FATE_MATROSKA_FFMPEG_FFPROBE-$(call FRAMECRC, MATROSKA,, MATROSKA_MUXER) \
                                += fate-matroska-zero-length-block
 fate-matroska-zero-length-block: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/zero_length_block.mks matroska "-c:s copy -dash 1 -dash_track_number 2000000000 -reserve_index_space 62 -metadata_header_padding 1 -default_mode infer_no_subs" "-c:s copy" "-show_entries stream_tags=description"
 
diff --git a/tests/fate/microsoft.mak b/tests/fate/microsoft.mak
index 15ca874c7f..8d8e92575a 100644
--- a/tests/fate/microsoft.mak
+++ b/tests/fate/microsoft.mak
@@ -47,7 +47,7 @@ fate-wmv3-drm-nodec: CMD = framecrc -cryptokey 137381538c84c068111902a59c5cf6c34
 FATE_MICROSOFT += $(FATE_WMV3_DRM-yes)
 fate-wmv3-drm: $(FATE_WMV3_DRM-yes)
 
-FATE_MICROSOFT-$(call DEMDEC, ASF, WMV2) += fate-wmv8-x8intra
+FATE_MICROSOFT-$(call FRAMECRC, ASF, WMV2) += fate-wmv8-x8intra
 fate-wmv8-x8intra: CMD = framecrc -flags +bitexact -i $(TARGET_SAMPLES)/wmv8/wmv8_x8intra.wmv -an
 
 FATE_VC1 += fate-vc1_sa00040
diff --git a/tests/fate/monkeysaudio.mak b/tests/fate/monkeysaudio.mak
index 55d47b4539..eaca9005c8 100644
--- a/tests/fate/monkeysaudio.mak
+++ b/tests/fate/monkeysaudio.mak
@@ -19,5 +19,6 @@ fate-lossless-monkeysaudio-399: CMD = md5 -i $(TARGET_SAMPLES)/lossless-audio/lu
 FATE_APE += fate-lossless-monkeysaudio-legacy
 fate-lossless-monkeysaudio-legacy: CMD = md5 -i $(TARGET_SAMPLES)/lossless-audio/NoLegacy-cut.ape -f s32le -af aresample
 
-FATE_SAMPLES_FFMPEG-$(call DEMDEC, APE, APE, ARESAMPLE_FILTER) += $(FATE_APE)
+FATE_APE := $(if $(call CRC, APE, APE, ARESAMPLE_FILTER), $(FATE_APE))
+FATE_SAMPLES_FFMPEG += $(FATE_APE)
 fate-lossless-monkeysaudio: $(FATE_APE)
diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak
index 78da66a6f7..c752ad2f7f 100644
--- a/tests/fate/mov.mak
+++ b/tests/fate/mov.mak
@@ -177,19 +177,19 @@ fate-mov-heic-demux-clap-irot-imir: CMD = stream_demux mov $(TARGET_SAMPLES)/hei
   "-show_entries stream=index,id:stream_disposition:stream_side_data_list"
 
 # heic demuxing - still image with multiple items in a grid.
-FATE_MOV_FFMPEG_FFPROBE_SAMPLES-$(call DEMMUX, MOV, FRAMECRC, HEVC_DECODER HEVC_PARSER) \
+FATE_MOV_FFMPEG_FFPROBE_SAMPLES-$(call FRAMECRC, MOV, HEVC, HEVC_PARSER) \
                            += fate-mov-heic-demux-still-image-grid
 fate-mov-heic-demux-still-image-grid: CMD = stream_demux mov $(TARGET_SAMPLES)/heif-conformance/C007.heic "" "-c:v copy -map 0:g:0" \
   "-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_disposition:stream_group_tags:stream_group_stream=index,id:stream_group_stream_disposition"
 
 # heic demuxing - still image with multiple items in an overlay canvas.
-FATE_MOV_FFMPEG_FFPROBE_SAMPLES-$(call DEMMUX, MOV, FRAMECRC, HEVC_DECODER HEVC_PARSER) \
+FATE_MOV_FFMPEG_FFPROBE_SAMPLES-$(call FRAMECRC, MOV, HEVC, HEVC_PARSER) \
                            += fate-mov-heic-demux-still-image-iovl
 fate-mov-heic-demux-still-image-iovl: CMD = stream_demux mov $(TARGET_SAMPLES)/heif-conformance/C015.heic "" "-c:v copy -map 0:g:0" \
   "-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_disposition:stream_group_tags:stream_group_stream=index,id:stream_group_stream_disposition"
 
 # heic demuxing - still image where one image item is placed twice on an overlay canvas.
-FATE_MOV_FFMPEG_FFPROBE_SAMPLES-$(call DEMMUX, MOV, FRAMECRC, HEVC_DECODER HEVC_PARSER) \
+FATE_MOV_FFMPEG_FFPROBE_SAMPLES-$(call FRAMECRC, MOV, HEVC, HEVC_PARSER) \
                            += fate-mov-heic-demux-still-image-iovl-2
 fate-mov-heic-demux-still-image-iovl-2: CMD = stream_demux mov $(TARGET_SAMPLES)/heif-conformance/C021.heic "" "-c:v copy -map 0:g:0" \
   "-show_entries stream_group=index,id,nb_streams,type:stream_group_components:stream_group_disposition:stream_group_tags:stream_group_stream=index,id:stream_group_stream_disposition"
diff --git a/tests/fate/mp3.mak b/tests/fate/mp3.mak
index 638ff63264..145ce72a6e 100644
--- a/tests/fate/mp3.mak
+++ b/tests/fate/mp3.mak
@@ -36,7 +36,7 @@ $(FATE_MP3): FUZZ = 18
 
 fate-mp3-float-extra_overread: FUZZ = 23
 
-FATE_MP3-$(call DEMDEC, MP3, MP3FLOAT, ARESAMPLE_FILTER) += $(FATE_MP3)
+FATE_MP3-$(call DEMDEC, MP3, MP3FLOAT, ARESAMPLE_FILTER PIPE_PROTOCOL) += $(FATE_MP3)
 
 FATE_SAMPLES_AVCONV += $(FATE_MP3-yes)
 fate-mp3: $(FATE_MP3-yes)
diff --git a/tests/fate/mpc.mak b/tests/fate/mpc.mak
index 1a034da197..7c194c268d 100644
--- a/tests/fate/mpc.mak
+++ b/tests/fate/mpc.mak
@@ -1,10 +1,10 @@
-FATE_MPC-$(CONFIG_MPC_DEMUXER) += fate-mpc7-demux
+FATE_MPC-$(call CRC, MPC) += fate-mpc7-demux
 fate-mpc7-demux: CMD = crc -i $(TARGET_SAMPLES)/musepack/inside-mp7.mpc -c:a copy
 
-FATE_MPC-$(CONFIG_MPC8_DEMUXER) += fate-mpc8-demux
+FATE_MPC-$(call CRC, MPC) += fate-mpc8-demux
 fate-mpc8-demux: CMD = crc -i $(TARGET_SAMPLES)/musepack/inside-mp8.mpc -c:a copy
 
-FATE_MPC-$(call DEMDEC, MPC, MPC7, ARESAMPLE_FILTER) += fate-musepack7
+FATE_MPC-$(call PCM, MPC, MPC7, ARESAMPLE_FILTER) += fate-musepack7
 fate-musepack7: CMD = pcm -i $(TARGET_SAMPLES)/musepack/inside-mp7.mpc
 fate-musepack7: CMP = oneoff
 fate-musepack7: REF = $(SAMPLES)/musepack/inside-mp7.pcm
diff --git a/tests/fate/mpegps.mak b/tests/fate/mpegps.mak
index 43cd2aa22b..a6114b1a8a 100644
--- a/tests/fate/mpegps.mak
+++ b/tests/fate/mpegps.mak
@@ -1,5 +1,5 @@
 # This tests that a 16-bit pcm_dvd stream is correctly remuxed in mpegps
-FATE_MPEGPS-$(call DEMMUX, MPEGPS, MPEG1SYSTEM) += fate-mpegps-remuxed-pcm-demux
+FATE_MPEGPS-$(call REMUX, MPEG1SYSTEM MPEGPS) += fate-mpegps-remuxed-pcm-demux
 fate-mpegps-remuxed-pcm-demux: $(SAMPLES)/mpegps/pcm_aud.mpg
 fate-mpegps-remuxed-pcm-demux: CMD = stream_remux "mpeg" "$(TARGET_SAMPLES)/mpegps/pcm_aud.mpg" "" "mpeg" "-map 0:a:0" "" "-codec copy"
 
diff --git a/tests/fate/oma.mak b/tests/fate/oma.mak
index 8f872242f4..cf670a69bb 100644
--- a/tests/fate/oma.mak
+++ b/tests/fate/oma.mak
@@ -1,4 +1,4 @@
-FATE_OMA_FFMPEG-$(call ALLYES, OMA_DEMUXER CRC_MUXER) += fate-oma-demux
+FATE_OMA_FFMPEG-$(call CRC, OMA) += fate-oma-demux
 fate-oma-demux: CMD = crc -i $(TARGET_SAMPLES)/oma/01-Untitled-partial.oma -c:a copy
 
 # Also tests splitting and joining the date into TYER and TDAT id3v2.3 tags.
diff --git a/tests/fate/pcm.mak b/tests/fate/pcm.mak
index fe432b0852..b4e405d58b 100644
--- a/tests/fate/pcm.mak
+++ b/tests/fate/pcm.mak
@@ -1,10 +1,10 @@
 FATE_SAMPLES_PCM-$(call TRANSCODE, PCM_S16LE PCM_U8, PCM_S16LE WAV, ARESAMPLE_FILTER) += fate-iff-pcm
 fate-iff-pcm: CMD = md5 -i $(TARGET_SAMPLES)/iff/Bells -f s16le -af aresample
 
-FATE_SAMPLES_PCM-$(call DEMDEC, MPEGPS, PCM_DVD, ARESAMPLE_FILTER) += fate-pcm_dvd
+FATE_SAMPLES_PCM-$(call FRAMECRC, MPEGPS, PCM_DVD, ARESAMPLE_FILTER) += fate-pcm_dvd
 fate-pcm_dvd: CMD = framecrc -i $(TARGET_SAMPLES)/pcm-dvd/coolitnow-partial.vob -vn -af aresample
 
-FATE_SAMPLES_PCM-$(call DEMDEC, EA, PCM_S16LE_PLANAR, ARESAMPLE_FILTER) += fate-pcm-planar
+FATE_SAMPLES_PCM-$(call FRAMECRC, EA, PCM_S16LE_PLANAR, ARESAMPLE_FILTER) += fate-pcm-planar
 fate-pcm-planar: CMD = framecrc -i $(TARGET_SAMPLES)/ea-mad/xeasport.mad -vn -af aresample
 
 FATE_SAMPLES_PCM-$(call DEMDEC, MOV, PCM_S16BE, PCM_S16LE_MUXER) += fate-pcm_s16be-stereo
@@ -19,10 +19,11 @@ fate-pcm_u8-mono: CMD = md5 -i $(TARGET_SAMPLES)/qt-surge-suite/surge-1-8-raw.mo
 FATE_SAMPLES_PCM-$(call TRANSCODE, PCM_S16LE PCM_U8, PCM_S16LE MOV, ARESAMPLE_FILTER) += fate-pcm_u8-stereo
 fate-pcm_u8-stereo: CMD = md5 -i $(TARGET_SAMPLES)/qt-surge-suite/surge-2-8-raw.mov -f s16le -af aresample
 
-FATE_SAMPLES_PCM-$(call DEMDEC, W64, PCM_S16LE) += fate-w64
+FATE_SAMPLES_PCM-$(call CRC, W64, PCM_S16LE) += fate-w64
 fate-w64: CMD = crc -i $(TARGET_SAMPLES)/w64/w64-pcm16.w64
 
-FATE_PCM-$(call ENCMUX, PCM_S24DAUD, DAUD, WAV_DEMUXER FILE_PROTOCOL) += fate-dcinema-encode
+FATE_DCINEMA_ENCODE-$(call FRAMEMD5) := fate-dcinema-encode
+FATE_PCM-$(call ENCMUX, PCM_S24DAUD, DAUD, WAV_DEMUXER) += $(FATE_DCINEMA_ENCODE-yes)
 fate-dcinema-encode: tests/data/asynth-96000-6.wav
 fate-dcinema-encode: SRC = tests/data/asynth-96000-6.wav
 fate-dcinema-encode: CMD = enc_dec_pcm daud framemd5 s16le $(SRC) -c:a pcm_s24daud -frames:a 20
diff --git a/tests/fate/qoa.mak b/tests/fate/qoa.mak
index 2e20ee5ee1..f0868e7825 100644
--- a/tests/fate/qoa.mak
+++ b/tests/fate/qoa.mak
@@ -1,10 +1,10 @@
-FATE_QOA-$(call DEMDEC, QOA, QOA) += fate-qoa-152
+FATE_QOA-$(call FRAMECRC, QOA, QOA) += fate-qoa-152
 fate-qoa-152: CMD = framecrc -i $(TARGET_SAMPLES)/qoa/coin_48_1_152.qoa
 
-FATE_QOA-$(call DEMDEC, QOA, QOA) += fate-qoa-278
+FATE_QOA-$(call FRAMECRC, QOA, QOA) += fate-qoa-278
 fate-qoa-278: CMD = framecrc -i $(TARGET_SAMPLES)/qoa/vibra_44_2_278.qoa
 
-FATE_QOA-$(call DEMDEC, QOA, QOA) += fate-qoa-303
+FATE_QOA-$(call FRAMECRC, QOA, QOA) += fate-qoa-303
 fate-qoa-303: CMD = framecrc -i $(TARGET_SAMPLES)/qoa/banjo_48_2_303.qoa
 
 fate-qoa: fate-qoa-152 fate-qoa-278 fate-qoa-303
diff --git a/tests/fate/real.mak b/tests/fate/real.mak
index 13ceab7adf..1935619d1b 100644
--- a/tests/fate/real.mak
+++ b/tests/fate/real.mak
@@ -1,4 +1,4 @@
-FATE_REALAUDIO-$(call DEMDEC, RM, RA_144) += fate-ra3-144
+FATE_REALAUDIO-$(call FRAMECRC, RM, RA_144) += fate-ra3-144
 fate-ra3-144: CMD = framecrc -i $(TARGET_SAMPLES)/realaudio/ra3.ra
 
 #FATE_REALAUDIO-$(call DEMDEC, RM, RA_288) += fate-ra4-288
@@ -6,27 +6,27 @@ fate-ra4-288: CMD = pcm -i $(TARGET_SAMPLES)/realaudio/ra4_288.ra
 fate-ra4-288: REF = $(SAMPLES)/realaudio/ra4_288.pcm
 fate-ra4-288: CMP = oneoff
 
-FATE_REALMEDIA_AUDIO-$(call DEMDEC, RM, RA_144) += fate-ra-144
+FATE_REALMEDIA_AUDIO-$(call PCM, RM, RA_144) += fate-ra-144
 fate-ra-144: CMD = md5 -i $(TARGET_SAMPLES)/real/ra3_in_rm_file.rm -f s16le
 
-FATE_REALMEDIA_AUDIO-$(call DEMDEC, RM, RA_288, ARESAMPLE_FILTER) += fate-ra-288
+FATE_REALMEDIA_AUDIO-$(call PCM, RM, RA_288, ARESAMPLE_FILTER) += fate-ra-288
 fate-ra-288: CMD = pcm -i $(TARGET_SAMPLES)/real/ra_288.rm
 fate-ra-288: CMP = oneoff
 fate-ra-288: REF = $(SAMPLES)/real/ra_288.pcm
 fate-ra-288: FUZZ = 2
 
-FATE_REALMEDIA_AUDIO-$(call DEMDEC, RM, COOK, ARESAMPLE_FILTER) += fate-ra-cook
+FATE_REALMEDIA_AUDIO-$(call PCM, RM, COOK, ARESAMPLE_FILTER) += fate-ra-cook
 fate-ra-cook: CMD = pcm -i $(TARGET_SAMPLES)/real/ra_cook.rm
 fate-ra-cook: CMP = oneoff
 fate-ra-cook: REF = $(SAMPLES)/real/ra_cook.pcm
 
-FATE_REALMEDIA_VIDEO-$(call DEMDEC, RM, RV20) += fate-rv20-1239
+FATE_REALMEDIA_VIDEO-$(call FRAMECRC, RM, RV20) += fate-rv20-1239
 fate-rv20-1239: CMD = framecrc -flags +bitexact -idct simple -lowres 1 -i $(TARGET_SAMPLES)/real/G2_with_SVT_320_240.rm
 
-FATE_REALMEDIA_VIDEO-$(call DEMDEC, RM, RV30) += fate-rv30
+FATE_REALMEDIA_VIDEO-$(call FRAMECRC, RM, RV30) += fate-rv30
 fate-rv30: CMD = framecrc -flags +bitexact -idct simple -i $(TARGET_SAMPLES)/real/rv30.rm -an
 
-FATE_REALMEDIA_VIDEO-$(call DEMDEC, RM, RV40) += fate-rv40
+FATE_REALMEDIA_VIDEO-$(call FRAMECRC, RM, RV40) += fate-rv40
 fate-rv40: CMD = framecrc -i $(TARGET_SAMPLES)/real/spygames-2MB.rmvb -t 10 -an
 
 FATE_SIPR += fate-sipr-5k0
@@ -48,7 +48,7 @@ fate-sipr-16k: SIZE_TOLERANCE = 40000
 
 $(FATE_SIPR): CMP = oneoff
 
-FATE_REALMEDIA_AUDIO-$(call DEMDEC, RM, SIPR, ARESAMPLE_FILTER) += $(FATE_SIPR)
+FATE_REALMEDIA_AUDIO-$(call PCM, RM, SIPR, ARESAMPLE_FILTER) += $(FATE_SIPR)
 fate-sipr: $(FATE_SIPR)
 
 fate-realaudio: $(FATE_REALAUDIO-yes)
diff --git a/tests/fate/segment.mak b/tests/fate/segment.mak
index cd906ad57a..343af73b10 100644
--- a/tests/fate/segment.mak
+++ b/tests/fate/segment.mak
@@ -35,20 +35,20 @@ tests/data/adts-to-mkv-cated-%.mkv: tests/data/adts-to-mkv-header.mkv tests/data
 FATE_SEGMENT += fate-segment-mp4-to-ts
 fate-segment-mp4-to-ts: tests/data/mp4-to-ts.m3u8
 fate-segment-mp4-to-ts: CMD = framecrc -flags +bitexact -i $(TARGET_PATH)/tests/data/mp4-to-ts.m3u8 -c copy
-FATE_SEGMENT-$(call DEMDEC, MOV HLS MATROSKA, H264, H264_PARSER H264_MP4TOANNEXB_BSF MPEGTS_MUXER STREAM_SEGMENT_MUXER EXTRACT_EXTRADATA_BSF) += fate-segment-mp4-to-ts
+FATE_SEGMENT-$(call FRAMECRC, MOV HLS MATROSKA, H264, H264_PARSER H264_MP4TOANNEXB_BSF MPEGTS_MUXER STREAM_SEGMENT_MUXER EXTRACT_EXTRADATA_BSF) += fate-segment-mp4-to-ts
 
 FATE_SEGMENT += fate-segment-adts-to-mkv
 fate-segment-adts-to-mkv: tests/data/adts-to-mkv.m3u8
 fate-segment-adts-to-mkv: CMD = framecrc -flags +bitexact -i $(TARGET_PATH)/tests/data/adts-to-mkv.m3u8 -c copy
 fate-segment-adts-to-mkv: REF = $(SRC_PATH)/tests/ref/fate/segment-adts-to-mkv-header-all
-FATE_SEGMENT-$(call DEMDEC, AAC HLS MATROSKA, AAC, AAC_ADTSTOASC_BSF MATROSKA_MUXER SEGMENT_MUXER) += fate-segment-adts-to-mkv
+FATE_SEGMENT-$(call FRAMECRC, AAC HLS MATROSKA, AAC, AAC_ADTSTOASC_BSF MATROSKA_MUXER SEGMENT_MUXER) += fate-segment-adts-to-mkv
 
 FATE_SEGMENT_ALLPARTS = $(FATE_SEGMENT_PARTS)
 FATE_SEGMENT_ALLPARTS += all
 FATE_SEGMENT_SPLIT += $(FATE_SEGMENT_ALLPARTS:%=fate-segment-adts-to-mkv-header-%)
 $(foreach N,$(FATE_SEGMENT_ALLPARTS),$(eval $(N:%=fate-segment-adts-to-mkv-header-%): tests/data/adts-to-mkv-cated-$(N).mkv))
 fate-segment-adts-to-mkv-header-%: CMD = framecrc -flags +bitexact -i $(TARGET_PATH)/tests/data/$(@:fate-segment-adts-to-mkv-header-%=adts-to-mkv-cated-%).mkv -c copy
-FATE_SEGMENT-$(call DEMDEC, AAC HLS MATROSKA, AAC, AAC_ADTSTOASC_BSF MATROSKA_MUXER SEGMENT_MUXER) += $(FATE_SEGMENT_SPLIT)
+FATE_SEGMENT-$(call FRAMECRC, AAC HLS MATROSKA, AAC, AAC_ADTSTOASC_BSF MATROSKA_MUXER SEGMENT_MUXER) += $(FATE_SEGMENT_SPLIT)
 
 FATE_SAMPLES_FFMPEG += $(FATE_SEGMENT-yes)
 
diff --git a/tests/fate/subtitles.mak b/tests/fate/subtitles.mak
index fa0c09fc9c..6aef4090d9 100644
--- a/tests/fate/subtitles.mak
+++ b/tests/fate/subtitles.mak
@@ -124,7 +124,7 @@ fate-sub-rcwt: CMD = md5 -i $(TARGET_SAMPLES)/sub/witch.scc -map 0 -c copy -f rc
 fate-sub-rcwt: CMP = oneline
 fate-sub-rcwt: REF = d86f179094a5752d68aa97d82cf887b0
 
-FATE_SUBTITLES-$(call ALLYES, MPEGTS_DEMUXER DVBSUB_DECODER DVBSUB_ENCODER) += fate-sub-dvb
+FATE_SUBTITLES-$(call FRAMECRC, MPEGTS, DVBSUB, DVBSUB_ENCODER) += fate-sub-dvb
 fate-sub-dvb: CMD = framecrc -i $(TARGET_SAMPLES)/sub/dvbsubtest_filter.ts -map s:0 -c dvbsub
 
 FATE_SUBTITLES-$(call ALLYES, PIPE_PROTOCOL SRT_DEMUXER SUBRIP_DECODER TTML_ENCODER TTML_MUXER) += fate-sub-ttmlenc
@@ -132,6 +132,7 @@ fate-sub-ttmlenc: CMD = fmtstdout ttml -i $(TARGET_SAMPLES)/sub/SubRip_capabilit
 
 FATE_SUBTITLES-$(call ENCMUX, ASS, ASS) += $(FATE_SUBTITLES_ASS-yes)
 FATE_SUBTITLES += $(FATE_SUBTITLES-yes)
+FATE_SUBTITLES := $(if $(CONFIG_PIPE_PROTOCOL), $(FATE_SUBTITLES))
 
 fate-sub-%: CMP = rawdiff
 
diff --git a/tests/fate/video.mak b/tests/fate/video.mak
index 84a67e55a0..c5e5056e8b 100644
--- a/tests/fate/video.mak
+++ b/tests/fate/video.mak
@@ -288,7 +288,7 @@ fate-nuv-rtjpeg: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/nuv/Today.nuv
 FATE_NUV += fate-nuv-rtjpeg-fh
 fate-nuv-rtjpeg-fh: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/nuv/rtjpeg_frameheader.nuv -an
 
-FATE_VIDEO-$(call DEMDEC, NUV, NUV) += $(FATE_NUV)
+FATE_VIDEO-$(call FRAMECRC, NUV, NUV) += $(FATE_NUV)
 fate-nuv: $(FATE_NUV)
 
 FATE_VIDEO-$(call FRAMECRC, PAF, PAF_VIDEO, SCALE_FILTER) += fate-paf-video
diff --git a/tests/fate/voice.mak b/tests/fate/voice.mak
index 84eb83e07f..945b8624ac 100644
--- a/tests/fate/voice.mak
+++ b/tests/fate/voice.mak
@@ -1,7 +1,7 @@
-FATE_G722-$(call DEMDEC, G722, ADPCM_G722) += fate-g722dec-1
+FATE_G722-$(call FRAMECRC, G722, ADPCM_G722) += fate-g722dec-1
 fate-g722dec-1: CMD = framecrc -i $(TARGET_SAMPLES)/g722/conf-adminmenu-162.g722
 
-FATE_G722-$(call TRANSCODE, ADPCM_G722, WAV, PCM_S16LE_DECODER) += fate-g722-encode
+FATE_G722-$(call FRAMEMD5, WAV, ADPCM_G722, WAV_MUXER ADPCM_G722_ENCODER PCM_S16LE_DECODER) += fate-g722-encode
 fate-g722-encode: tests/data/asynth-16000-1.wav
 fate-g722-encode: SRC = tests/data/asynth-16000-1.wav
 fate-g722-encode: CMD = enc_dec_pcm wav framemd5 s16le $(SRC) -c:a g722
@@ -33,7 +33,7 @@ fate-g723_1-dec-7: CMD = framecrc -postfilter 1 -i $(TARGET_SAMPLES)/g723_1/dtx6
 FATE_G723_1 += fate-g723_1-dec-8
 fate-g723_1-dec-8: CMD = framecrc -postfilter 1 -i $(TARGET_SAMPLES)/g723_1/dtx63e.tco -af aresample
 
-FATE_VOICE-$(call DEMDEC, G723_1, G723_1, ARESAMPLE_FILTER) += $(FATE_G723_1)
+FATE_VOICE-$(call FRAMECRC, G723_1, G723_1, ARESAMPLE_FILTER) += $(FATE_G723_1)
 fate-g723_1: $(FATE_G723_1)
 
 FATE_G726 += fate-g726-encode-2bit
@@ -51,24 +51,24 @@ fate-g726-encode-5bit: CMD = enc_dec_pcm wav framemd5 s16le $(SRC) -c:a g726 -b:
 $(FATE_G726): tests/data/asynth-8000-1.wav
 $(FATE_G726): SRC = tests/data/asynth-8000-1.wav
 
-FATE_VOICE-$(call TRANSCODE, ADPCM_G726, WAV, PCM_S16LE_DECODER) += $(FATE_G726)
+FATE_VOICE-$(call FRAMEMD5, WAV, ADPCM_G726, WAV_MUXER ADPCM_G726_ENCODER PCM_S16LE_DECODER) += $(FATE_G726)
 fate-g726: $(FATE_G726)
 
-FATE_GSM-$(call DEMDEC, WAV, GSM) += fate-gsm-ms
+FATE_GSM-$(call FRAMECRC, WAV, GSM) += fate-gsm-ms
 fate-gsm-ms: CMD = framecrc -i $(TARGET_SAMPLES)/gsm/ciao.wav
 
-FATE_GSM-$(call DEMDEC, MOV, GSM) += fate-gsm-toast
+FATE_GSM-$(call FRAMECRC, MOV, GSM) += fate-gsm-toast
 fate-gsm-toast: CMD = framecrc -i $(TARGET_SAMPLES)/gsm/sample-gsm-8000.mov -t 10
 
 FATE_VOICE-yes += $(FATE_GSM-yes)
 fate-gsm: $(FATE_GSM-yes)
 
-FATE_VOICE-$(call DEMDEC, QCP, QCELP, ARESAMPLE_FILTER) += fate-qcelp
+FATE_VOICE-$(call PCM, QCP, QCELP, ARESAMPLE_FILTER) += fate-qcelp
 fate-qcelp: CMD = pcm -i $(TARGET_SAMPLES)/qcp/0036580847.QCP
 fate-qcelp: CMP = oneoff
 fate-qcelp: REF = $(SAMPLES)/qcp/0036580847.pcm
 
-FATE_VOICE-$(call DEMDEC, WAV, TRUESPEECH) += fate-truespeech
+FATE_VOICE-$(call PCM, WAV, TRUESPEECH) += fate-truespeech
 fate-truespeech: CMD = pcm -i $(TARGET_SAMPLES)/truespeech/a6.wav
 fate-truespeech: CMP = oneoff
 fate-truespeech: REF = $(SAMPLES)/truespeech/a6.pcm
diff --git a/tests/fate/vpx.mak b/tests/fate/vpx.mak
index 5f688b296e..e54dd69092 100644
--- a/tests/fate/vpx.mak
+++ b/tests/fate/vpx.mak
@@ -138,7 +138,7 @@ fate-vp9-05-resize: REF = $(SRC_PATH)/tests/ref/fate/vp9-05-resize
 fate-vp9-encparams: CMD = venc_data $(TARGET_SAMPLES)/vp9-test-vectors/vp90-2-segmentation-aq-akiyo.webm 0 5
 FATE_SAMPLES_DUMP_DATA-$(call DEMDEC, MATROSKA, VP9) += fate-vp9-encparams
 
-FATE_VP9-$(call ALLYES, MATROSKA_DEMUXER VP9_PARSER VP9_SUPERFRAME_SPLIT_BSF \
+FATE_VP9-$(call FRAMECRC, MATROSKA,, VP9_PARSER VP9_SUPERFRAME_SPLIT_BSF \
                         VP9_SUPERFRAME_BSF FRAMECRC_MUXER) += fate-vp9-superframe-bsf
 fate-vp9-superframe-bsf: CMD = framecrc -i $(TARGET_SAMPLES)/vp9-test-vectors/vp90-2-segmentation-sf-akiyo.webm -c:v copy -bsf:v vp9_superframe_split,vp9_superframe
 
diff --git a/tests/fate/vqf.mak b/tests/fate/vqf.mak
index ccdbe50033..16db9c828a 100644
--- a/tests/fate/vqf.mak
+++ b/tests/fate/vqf.mak
@@ -1,9 +1,9 @@
-FATE_VQF-$(call DEMDEC, VQF, TWINVQ, ARESAMPLE_FILTER) += fate-twinvq
+FATE_VQF-$(call PCM, VQF, TWINVQ, ARESAMPLE_FILTER) += fate-twinvq
 fate-twinvq: CMD = pcm -i $(TARGET_SAMPLES)/vqf/achterba.vqf
 fate-twinvq: CMP = oneoff
 fate-twinvq: REF = $(SAMPLES)/vqf/achterba.pcm
 
-FATE_VQF-$(CONFIG_VQF_DEMUXER) += fate-vqf-demux
+FATE_VQF-$(call FRAMECRC, VQF) += fate-vqf-demux
 fate-vqf-demux: CMD = md5 -i $(TARGET_SAMPLES)/vqf/achterba.vqf -c:a copy -flags bitexact -fflags +bitexact -f framecrc
 
 FATE_VQF += $(FATE_VQF-yes)
diff --git a/tests/fate/wma.mak b/tests/fate/wma.mak
index ed29edae3a..62914c84dd 100644
--- a/tests/fate/wma.mak
+++ b/tests/fate/wma.mak
@@ -1,14 +1,14 @@
-FATE_WMAPRO-$(call DEMDEC, ASF, WMAPRO, ARESAMPLE_FILTER) += fate-wmapro-2ch
+FATE_WMAPRO-$(call PCM, ASF, WMAPRO, ARESAMPLE_FILTER) += fate-wmapro-2ch
 fate-wmapro-2ch: CMD = pcm -i $(TARGET_SAMPLES)/wmapro/Beethovens_9th-1_small.wma -frames 43
 fate-wmapro-2ch: REF = $(SAMPLES)/wmapro/Beethovens_9th-1_small.pcm
 fate-wmapro-2ch: SIZE_TOLERANCE = 8192
 
-FATE_WMAPRO-$(call DEMDEC, ASF, WMAPRO, ARESAMPLE_FILTER) += fate-wmapro-5.1
+FATE_WMAPRO-$(call PCM, ASF, WMAPRO, ARESAMPLE_FILTER) += fate-wmapro-5.1
 fate-wmapro-5.1: CMD = pcm -i $(TARGET_SAMPLES)/wmapro/latin_192_mulitchannel_cut.wma -frames 101
 fate-wmapro-5.1: REF = $(SAMPLES)/wmapro/latin_192_mulitchannel_cut.pcm
 fate-wmapro-5.1: SIZE_TOLERANCE = 24576
 
-FATE_WMAPRO-$(call DEMDEC, MOV, WMAPRO, ARESAMPLE_FILTER) += fate-wmapro-ism
+FATE_WMAPRO-$(call PCM, MOV, WMAPRO, ARESAMPLE_FILTER) += fate-wmapro-ism
 fate-wmapro-ism: CMD = pcm -i $(TARGET_SAMPLES)/isom/vc1-wmapro.ism -vn
 fate-wmapro-ism: REF = $(SAMPLES)/isom/vc1-wmapro.pcm
 fate-wmapro-ism: SIZE_TOLERANCE = 4784
@@ -18,19 +18,19 @@ $(FATE_WMAPRO-yes): CMP = oneoff
 FATE_SAMPLES_AVCONV += $(FATE_WMAPRO-yes)
 fate-wmapro: $(FATE_WMAPRO-yes)
 
-FATE_WMAVOICE-$(call DEMDEC, ASF, WMAVOICE, ARESAMPLE_FILTER) += fate-wmavoice-7k
+FATE_WMAVOICE-$(call PCM, ASF, WMAVOICE, ARESAMPLE_FILTER) += fate-wmavoice-7k
 fate-wmavoice-7k: CMD = pcm -i $(TARGET_SAMPLES)/wmavoice/streaming_CBR-7K.wma
 fate-wmavoice-7k: REF = $(SAMPLES)/wmavoice/streaming_CBR-7K_ref.pcm
 fate-wmavoice-7k: CMP_TARGET = 1368.61
 fate-wmavoice-7k: FUZZ = 3
 
-FATE_WMAVOICE-$(call DEMDEC, ASF, WMAVOICE, ARESAMPLE_FILTER) += fate-wmavoice-11k
+FATE_WMAVOICE-$(call PCM, ASF, WMAVOICE, ARESAMPLE_FILTER) += fate-wmavoice-11k
 fate-wmavoice-11k: CMD = pcm -i $(TARGET_SAMPLES)/wmavoice/streaming_CBR-11K.wma
 fate-wmavoice-11k: REF = $(SAMPLES)/wmavoice/streaming_CBR-11K_ref.pcm
 fate-wmavoice-11k: CMP_TARGET = 965.24
 fate-wmavoice-11k: FUZZ = 3
 
-FATE_WMAVOICE-$(call DEMDEC, ASF, WMAVOICE, ARESAMPLE_FILTER) += fate-wmavoice-19k
+FATE_WMAVOICE-$(call PCM, ASF, WMAVOICE, ARESAMPLE_FILTER) += fate-wmavoice-19k
 fate-wmavoice-19k: CMD = pcm -i $(TARGET_SAMPLES)/wmavoice/streaming_CBR-19K.wma
 fate-wmavoice-19k: REF = $(SAMPLES)/wmavoice/streaming_CBR-19K_ref.pcm
 fate-wmavoice-19k: CMP_TARGET = 689.33
@@ -41,13 +41,13 @@ $(FATE_WMAVOICE-yes): CMP = stddev
 FATE_SAMPLES_AVCONV += $(FATE_WMAVOICE-yes)
 fate-wmavoice: $(FATE_WMAVOICE-yes)
 
-FATE_WMA_ENCODE-$(call ENCDEC, WMAV1, ASF, ARESAMPLE_FILTER) += fate-wmav1-encode
+FATE_WMA_ENCODE-$(call ENCDEC, WMAV1, ASF, ARESAMPLE_FILTER PIPE_PROTOCOL) += fate-wmav1-encode
 fate-wmav1-encode: CMD = enc_dec_pcm asf wav s16le $(subst $(SAMPLES),$(TARGET_SAMPLES),$(REF)) -c:a wmav1 -b:a 128k
 fate-wmav1-encode: CMP_SHIFT = 8192
 fate-wmav1-encode: CMP_TARGET = 299.99
 fate-wmav1-encode: SIZE_TOLERANCE = 4632
 
-FATE_WMA_ENCODE-$(call ENCDEC, WMAV2, ASF, ARESAMPLE_FILTER) += fate-wmav2-encode
+FATE_WMA_ENCODE-$(call ENCDEC, WMAV2, ASF, ARESAMPLE_FILTER PIPE_PROTOCOL) += fate-wmav2-encode
 fate-wmav2-encode: CMD = enc_dec_pcm asf wav s16le $(subst $(SAMPLES),$(TARGET_SAMPLES),$(REF)) -c:a wmav2 -b:a 128k
 fate-wmav2-encode: CMP_SHIFT = 8192
 fate-wmav2-encode: CMP_TARGET = 267.92
diff --git a/tests/fate/xvid.mak b/tests/fate/xvid.mak
index 68e75b1139..6461d8dbac 100644
--- a/tests/fate/xvid.mak
+++ b/tests/fate/xvid.mak
@@ -1,7 +1,7 @@
 fate-xvid-custom-matrix: CMD = framemd5 -flags +bitexact -idct simple  -i $(TARGET_SAMPLES)/mpeg4/xvid_vlc_trac7411.h263
 fate-xvid-idct:          CMD = framemd5 -flags +bitexact -cpuflags all -i $(TARGET_SAMPLES)/mpeg4/xvid_vlc_trac7411.h263
 
-FATE_XVID-$(call DEMDEC, M4V, MPEG4, MPEG4VIDEO_PARSER) += fate-xvid-custom-matrix fate-xvid-idct
+FATE_XVID-$(call FRAMEMD5, M4V, MPEG4, MPEG4VIDEO_PARSER) += fate-xvid-custom-matrix fate-xvid-idct
 
 FATE_SAMPLES_AVCONV += $(FATE_XVID-yes)
 
-- 
2.30.2



More information about the ffmpeg-devel mailing list