diff --git a/tests/fate/demux.mak b/tests/fate/demux.mak
index 66e26ed..261b004 100644
--- a/tests/fate/demux.mak
+++ b/tests/fate/demux.mak
@@ -37,7 +37,8 @@ FATE_SAMPLES_DEMUX-$(CONFIG_EA_DEMUXER) += fate-d-eavp6-demux
 fate-d-eavp6-demux: CMD = framecrc -i $(TARGET_SAMPLES)/ea-vp6/SmallRing.vp6 -map 0 -vcodec copy

 FATE_SAMPLES_DEMUX-$(CONFIG_FITS_DEMUXER) += fate-fits-demux
-fate-fits-demux: CMD = framecrc -i $(TARGET_SAMPLES)/fits/fits-multi.fits -vcodec copy
+fate-fits-demux: tests/data/fits-multi.fits
+fate-fits-demux: CMD = framecrc -i $(TARGET_PATH)/tests/data/fits-multi.fits -vcodec copy

 FATE_SAMPLES_DEMUX-$(CONFIG_FLV_DEMUXER) += fate-flv-demux
 fate-flv-demux: CMD = framecrc -i $(TARGET_SAMPLES)/flv/Enigma_Principles_of_Lust-part.flv -codec copy
diff --git a/tests/fate/fits.mak b/tests/fate/fits.mak
index 8202870..983946d 100644
--- a/tests/fate/fits.mak
+++ b/tests/fate/fits.mak
@@ -1,25 +1,60 @@
-FATE_FITS += fate-fitsdec-multi
-fate-fitsdec-multi: CMD = framecrc -i $(TARGET_SAMPLES)/fits/fits-multi.fits -pix_fmt gbrap
+tests/data/fits-multi.fits: TAG = GEN
+tests/data/fits-multi.fits: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+	$(M)$(TARGET_EXEC) $(TARGET_PATH)/$< \
+        -i $(TARGET_SAMPLES)/gif/m4nb.gif \
+        -y $(TARGET_PATH)/$(@) 2>/dev/null
+
+#mapping of fits file formats to png filenames
+map.tests/data/lena-gray.fits    := gray8
+map.tests/data/lena-gray16.fits  := gray16
+map.tests/data/lena-gbrp.fits    := rgb24
+map.tests/data/lena-gbrp16.fits  := rgb48
+map.tests/data/lena-gbrap16.fits := rgba64
+
+tests/data/lena%.fits: TAG = GEN
+tests/data/lena%.fits: NAME = $(map.$(@))
+tests/data/lena%.fits: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data
+	$(M)$(TARGET_EXEC) $(TARGET_PATH)/$< \
+        -i $(TARGET_SAMPLES)/png1/lena-$(map.$(@)).png \
+        -y $(TARGET_PATH)/$(@) 2>/dev/null
+
+FATE_FITS_DEC-$(call DEMDEC, FITS, FITS) += fate-fitsdec-ext_data_min_max
+fate-fitsdec-ext_data_min_max: CMD = framecrc -i $(TARGET_SAMPLES)/fits/x0cj010ct_d0h.fit -pix_fmt gray16
+
+FATE_FITS_DEC-$(call DEMDEC, FITS, FITS) += fate-fitsdec-blank_bitpix32
+fate-fitsdec-blank_bitpix32: CMD = framecrc -blank_value 65535 -i $(TARGET_SAMPLES)/fits/file008.fits -pix_fmt gray16
+
+FATE_FITS_DEC-$(call DEMDEC, FITS, FITS) += fate-fitsdec-bitpix-32
+fate-fitsdec-bitpix-32: CMD = framecrc -i $(TARGET_SAMPLES)/fits/tst0005.fits -pix_fmt gray16
+
+FATE_FITS_DEC-$(call DEMDEC, FITS, FITS) += fate-fitsdec-bitpix-64
+fate-fitsdec-bitpix-64: CMD = framecrc -i $(TARGET_SAMPLES)/fits/tst0006.fits -pix_fmt gray16
+
+FATE_FITS_DEC-$(call DEMDEC, FITS, FITS) += fate-fitsdec-multi
+fate-fitsdec-multi: tests/data/fits-multi.fits
+fate-fitsdec-multi: CMD = framecrc -i $(TARGET_PATH)/tests/data/fits-multi.fits -pix_fmt gbrap

 fate-fitsdec%: PIXFMT = $(word 3, $(subst -, ,$(@)))
-fate-fitsdec%: SRC = $(TARGET_SAMPLES)/fits/lena-$(PIXFMT).fits
+fate-fitsdec%: SRC = $(TARGET_PATH)/tests/data/lena-$(PIXFMT).fits
 fate-fitsdec%: CMD = framecrc -i $(SRC) -pix_fmt $(PIXFMT)

 FATE_FITS_DEC_PIXFMT = gray gray16 gbrp gbrp16 gbrap16
-FATE_FITS += $(FATE_FITS_DEC_PIXFMT:%=fate-fitsdec-%)
+$(FATE_FITS_DEC_PIXFMT:%=fate-fitsdec-%): fate-fitsdec-%: tests/data/lena-%.fits
+FATE_FITS_DEC-$(call DEMDEC, FITS, FITS) += $(FATE_FITS_DEC_PIXFMT:%=fate-fitsdec-%)
+
+FATE_FITS += $(FATE_FITS_DEC-yes)
+fate-fitsdec: $(FATE_FITS_DEC-yes)

-fate-fitsenc%: fate-fitsdec-multi
 fate-fitsenc%: PIXFMT = $(word 3, $(subst -, ,$(@)))
-fate-fitsenc%: SRC = $(TARGET_SAMPLES)/fits/fits-multi.fits
+fate-fitsenc%: SRC = $(TARGET_PATH)/tests/data/fits-multi.fits
 fate-fitsenc%: CMD = framecrc -i $(SRC) -c:v fits -pix_fmt $(PIXFMT)

 FATE_FITS_ENC_PIXFMT = gray gray16be gbrp gbrap gbrp16be gbrap16be
-FATE_FITS_ENC-$(call ENCDEC, FITS, FITS) = $(FATE_FITS_ENC_PIXFMT:%=fate-fitsenc-%)
+$(FATE_FITS_ENC_PIXFMT:%=fate-fitsenc-%): tests/data/fits-multi.fits
+FATE_FITS_ENC-$(call ENCDEC, FITS, FITS) += $(FATE_FITS_ENC_PIXFMT:%=fate-fitsenc-%)

 FATE_FITS += $(FATE_FITS_ENC-yes)
 fate-fitsenc: $(FATE_FITS_ENC-yes)

-FATE_FITS-$(call DEMDEC, FITS, FITS) += $(FATE_FITS)
-
-FATE_SAMPLES_FFMPEG += $(FATE_FITS-yes)
-fate-fits: $(FATE_FITS-yes)
+FATE_SAMPLES_FFMPEG += $(FATE_FITS)
+fate-fits: $(FATE_FITS)
diff --git a/tests/ref/fate/fitsdec-bitpix-32 b/tests/ref/fate/fitsdec-bitpix-32
new file mode 100644
index 0000000..9bce361
--- /dev/null
+++ b/tests/ref/fate/fitsdec-bitpix-32
@@ -0,0 +1,6 @@
+#tb 0: 1/1
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 102x109
+#sar 0: 0/1
+0,          0,          0,        1,    22236, 0x34490902
diff --git a/tests/ref/fate/fitsdec-bitpix-64 b/tests/ref/fate/fitsdec-bitpix-64
new file mode 100644
index 0000000..9febdd6
--- /dev/null
+++ b/tests/ref/fate/fitsdec-bitpix-64
@@ -0,0 +1,6 @@
+#tb 0: 1/1
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 77x173
+#sar 0: 0/1
+0,          0,          0,        1,    26642, 0x0ad2a46a
diff --git a/tests/ref/fate/fitsdec-blank_bitpix32 b/tests/ref/fate/fitsdec-blank_bitpix32
new file mode 100644
index 0000000..184fd41
--- /dev/null
+++ b/tests/ref/fate/fitsdec-blank_bitpix32
@@ -0,0 +1,6 @@
+#tb 0: 1/1
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 256x256
+#sar 0: 0/1
+0,          0,          0,        1,   131072, 0x7fb22427
diff --git a/tests/ref/fate/fitsdec-ext_data_min_max b/tests/ref/fate/fitsdec-ext_data_min_max
new file mode 100644
index 0000000..9009a4e
--- /dev/null
+++ b/tests/ref/fate/fitsdec-ext_data_min_max
@@ -0,0 +1,6 @@
+#tb 0: 1/1
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 512x512
+#sar 0: 0/1
+0,          0,          0,        1,   524288, 0xc327ed23
