[FFmpeg-devel] Adding FATE tests for FFV1 - revisited
Peter B.
pb at das-werkstatt.com
Sun Aug 30 19:06:44 CEST 2015
Hello,
I've been working on FATE tests for FFV1 in the past already [1]. My
tests didn't work on all platforms and therefore never made it upstream.
I think it's better if I try to provide these new tests in smaller
chunks now :)
First of all, there are things I find inconsistent or confusing with the
current tests (vcodec.mak):
- ENCOPTS for FFV1.3 contain "-vcodec ffv1" instead of "CODEC=ffv1"
(this generates "-c ffv1.3" as parameter?)
- Target "fate-vsynth%-*" tests default to sws_flags
"accurate_rnd+bitexact". FFV1.3 tests have "neighbor+bitexact". Why?
- ENCOPTS for "fate-vsynth%-ffv1" are "-slices 4", which is an
FFV1.3-only option.
- What is "ffv1.0"?
My ideas/plans would be something like this:
First steps:
1) Clean the current FFV1 tests (naming, ENCDEC options, etc)
2) Move FFV1 tests to its own file (ffv1.mak). Or at least to
"lossless-video.mak".
3) Have separate tests for different FFV1 versions (1,3)
Then:
4) Add default argument "-g 1"
5) Add tests to cover the following cases:
- Color spaces YUV, RGB, GRAY
- bits-per-component as currently supported
- YUV subsampling 420, 422, 444
- Alpha channel: YUVA, BGRA
Maybe:
6) Multiple coder/context options
7) Multiple slices options
8) Testing SliceCRC
This will produce quite a number of tests :(
I guess it is desired to keep the number of tests as low as necessary?
I've attached my old test Makefile (ffv1.mak), for reference.
:D
What is the best way to proceed?
Thanks in advance,
Pb
== References:
[1] http://ffmpeg.org/pipermail/ffmpeg-user/2013-November/018361.html
-------------- next part --------------
DEC_SRC = $(TARGET_PATH)/tests/data/fate
# Word-size options for PSNR calculations: u8, s16, f32, f64
# Default is "u8" (8bits):
fate-ffv1-enc-%: CMP_UNIT = u8
fate-ffv1-enc-%: CODEC = $(word 2, $(subst -, ,$(@)))
fate-ffv1-enc-%: FMT = avi
fate-ffv1-enc-%: SRC = tests/data/vsynth1.yuv
# Limit the duration of test videos to 4 frames at 25fps:
fate-ffv1-enc-%: DUR = 0:00:00.160
fate-ffv1-enc-%: CMD = enc_dec "rawvideo -s 352x288 -pix_fmt yuv420p $(RAWDECOPTS) -t $(DUR)" $(SRC) $(FMT) "-c $(CODEC) $(ENCOPTS)" rawvideo "-s 352x288 -pix_fmt yuv420p -vsync 0 $(DECOPTS)" -keep "$(DECINOPTS)"
# This Makefile checks for $(CONFIG_...) variables being set, so we can
# include/exclude tests accordingly:
ifdef CONFIG_AVCONV
FLAGS_FFV1_V3 = -strict experimental
else
FLAGS_FFV1_V3 =
endif
FATE_FFV1_LEVEL1 = v1-defaults \
v1-gray \
v1-rgb32 \
v1-yuv410p \
v1-yuv411p \
v1-yuv420p \
v1-yuv422p \
v1-yuv444p \
v1-bgra \
v1-tff \
v1-bff
# Target-specific tests:
ifdef CONFIG_FFMPEG
FATE_FFV1_LEVEL1 += v1-bgr0 \
v1-yuv440p \
v1-yuva420p \
v1-yuva422p \
v1-yuva444p
endif
FATE_FFV1_LEVEL3 = v3-defaults \
v3-rgb32 \
v3-yuv410p \
v3-yuv420p \
v3-yuv422p \
v3-yuv444p \
v3-yuv420p9 \
v3-yuv422p9 \
v3-yuv444p9 \
v3-yuv420p10 \
v3-yuv422p10 \
v3-yuv444p10 \
v3-yuv420p16 \
v3-yuv422p16 \
v3-yuv444p16 \
v3-yuv422p_crc \
v3-yuv422p9_crc \
v3-yuv422p10_crc \
v3-yuv422p16_crc \
v3-yuv422p_pass1 \
v3-yuv422p_pass2 \
v3-tff \
v3-bff
# Target-specific tests:
ifdef CONFIG_FFMPEG
FATE_FFV1_LEVEL3 += v3-gray \
v3-gray16 \
v3-bgr0 \
v3-gbrp9 \
v3-gbrp10 \
v3-gbrp12 \
v3-gbrp14 \
v3-yuva420p9 \
v3-yuva422p9 \
v3-yuva444p9 \
v3-yuva420p10 \
v3-yuva422p10 \
v3-yuva444p10 \
v3-yuva420p16 \
v3-yuva422p16 \
v3-yuva444p16
endif
FATE_FFV1 = $(FATE_FFV1_LEVEL1) \
$(FATE_FFV1_LEVEL3)
# ------------ FFV1 - version 1
###################################################
# Encoding:
###################################################
# YUV (8bit)
# - This also iterates through all coder/context combinations.
fate-ffv1-enc-v1-defaults: ENCOPTS = -level 1
fate-ffv1-enc-v1-yuv410p: ENCOPTS = -level 1 -g 1 -coder 0 -context 0 -pix_fmt yuv410p
fate-ffv1-enc-v1-yuv411p: ENCOPTS = -level 1 -g 1 -coder 0 -context 0 -pix_fmt yuv411p
fate-ffv1-enc-v1-yuv420p: ENCOPTS = -level 1 -g 1 -coder 0 -context 1 -pix_fmt yuv420p
fate-ffv1-enc-v1-yuv422p: ENCOPTS = -level 1 -g 1 -coder 1 -context 0 -pix_fmt yuv422p
fate-ffv1-enc-v1-yuv444p: ENCOPTS = -level 1 -g 1 -coder 1 -context 1 -pix_fmt yuv444p
fate-ffv1-enc-v1-yuv440p: ENCOPTS = -level 1 -g 1 -coder 1 -context 1 -pix_fmt yuv440p
# Gray (8bit)
fate-ffv1-enc-v1-gray: ENCOPTS = -level 1 -g 1 -coder 0 -context 0 -pix_fmt gray
# RGB (8bit)
fate-ffv1-enc-v1-rgb32: ENCOPTS = -level 1 -g 1 -coder 0 -context 0 -pix_fmt rgb32
fate-ffv1-enc-v1-bgr0: ENCOPTS = -level 1 -g 1 -coder 0 -context 0 -pix_fmt bgr0
# Alpha channel / transparency:
fate-ffv1-enc-v1-bgra: ENCOPTS = -level 1 -g 1 -coder 0 -context 0 -pix_fmt bgra
fate-ffv1-enc-v1-yuva420p: ENCOPTS = -level 1 -g 1 -coder 0 -context 1 -pix_fmt yuva420p
fate-ffv1-enc-v1-yuva422p: ENCOPTS = -level 1 -g 1 -coder 1 -context 0 -pix_fmt yuva422p
fate-ffv1-enc-v1-yuva444p: ENCOPTS = -level 1 -g 1 -coder 1 -context 1 -pix_fmt yuva444p
# Interlaced:
fate-ffv1-enc-v1-tff: ENCOPTS = -s pal -level 1 -top 1 -pix_fmt yuv422p
fate-ffv1-enc-v1-bff: ENCOPTS = -s pal -level 1 -top 0 -pix_fmt yuv422p
###################################################
# Decoding:
###################################################
# YUV (8bit)
fate-ffv1-dec-v1-defaults: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-defaults.avi) fate-ffv1-enc-v1-defaults
fate-ffv1-dec-v1-yuv410p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-yuv410p.avi) fate-ffv1-enc-v1-yuv410p
fate-ffv1-dec-v1-yuv411p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-yuv411p.avi) fate-ffv1-enc-v1-yuv411p
fate-ffv1-dec-v1-yuv420p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-yuv420p.avi) fate-ffv1-enc-v1-yuv420p
fate-ffv1-dec-v1-yuv422p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-yuv422p.avi) fate-ffv1-enc-v1-yuv422p
fate-ffv1-dec-v1-yuv444p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-yuv444p.avi) fate-ffv1-enc-v1-yuv444p
fate-ffv1-dec-v1-yuv440p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-yuv440p.avi) fate-ffv1-enc-v1-yuv440p
# Gray (8bit)
fate-ffv1-dec-v1-gray: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-gray.avi) fate-ffv1-enc-v1-gray
# RGB (8bit)
fate-ffv1-dec-v1-rgb32: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-rgb32.avi) fate-ffv1-enc-v1-rgb32
fate-ffv1-dec-v1-bgr0: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-bgr0.avi) fate-ffv1-enc-v1-bgr0
# Alpha channel / transparency:
fate-ffv1-dec-v1-bgra: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-bgra.avi) fate-ffv1-enc-v1-bgra
fate-ffv1-dec-v1-yuva420p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-yuva420p.avi) fate-ffv1-enc-v1-yuva420p
fate-ffv1-dec-v1-yuva422p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-yuva422p.avi) fate-ffv1-enc-v1-yuva422p
fate-ffv1-dec-v1-yuva444p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-yuva444p.avi) fate-ffv1-enc-v1-yuva444p
# Interlaced:
fate-ffv1-dec-v1-tff: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-tff.avi) fate-ffv1-enc-v1-tff
fate-ffv1-dec-v1-bff: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v1-bff.avi) fate-ffv1-enc-v1-bff
# ------------ FFV1 - version 3
###################################################
# Encoding:
###################################################
# - This also iterates through slice variations (4, 12, 24, 30).
#
fate-ffv1-enc-v3-defaults: ENCOPTS = -level 3 $(FLAGS_FFV1_V3)
# YUV (8bit)
# - This also iterates through all coder/context combinations.
fate-ffv1-enc-v3-yuv410p: ENCOPTS = -level 3 -g 1 -coder 0 -context 0 -slices 4 -slicecrc 0 -pix_fmt yuv410p $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv420p: ENCOPTS = -level 3 -g 1 -coder 0 -context 1 -slices 12 -slicecrc 0 -pix_fmt yuv420p $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv422p: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 24 -slicecrc 0 -pix_fmt yuv422p $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv444p: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 30 -slicecrc 0 -pix_fmt yuv444p $(FLAGS_FFV1_V3)
# YUV (9bit)
fate-ffv1-enc-v3-yuv4%p9: CMP_UNIT = s16
fate-ffv1-enc-v3-yuv420p9: ENCOPTS = -level 3 -g 1 -coder -1 -context 1 -slices 24 -slicecrc 0 -pix_fmt yuv420p9 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv422p9: ENCOPTS = -level 3 -g 1 -coder 2 -context 0 -slices 30 -slicecrc 0 -pix_fmt yuv422p9 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv444p9: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 4 -slicecrc 0 -pix_fmt yuv444p9 $(FLAGS_FFV1_V3)
# YUV (10bit)
fate-ffv1-enc-v3-yuv4%p10: CMP_UNIT = s16
fate-ffv1-enc-v3-yuv420p10: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 30 -slicecrc 0 -pix_fmt yuv420p10 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv422p10: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 4 -slicecrc 0 -pix_fmt yuv422p10 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv444p10: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 12 -slicecrc 0 -pix_fmt yuv444p10 $(FLAGS_FFV1_V3)
# YUV (16bit)
fate-ffv1-enc-v3-yuv4%p16: CMP_UNIT = s16
fate-ffv1-enc-v3-yuv420p16: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 4 -slicecrc 0 -pix_fmt yuv420p16 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv422p16: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 12 -slicecrc 0 -pix_fmt yuv422p16 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv444p16: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 24 -slicecrc 0 -pix_fmt yuv444p16 $(FLAGS_FFV1_V3)
# Gray
fate-ffv1-enc-v3-gray: ENCOPTS = -level 3 -g 1 -coder 0 -context 0 -slices 24 -slicecrc 0 -pix_fmt gray $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-gray16: CMP_UNIT = s16
fate-ffv1-enc-v3-gray16: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 24 -slicecrc 0 -pix_fmt gray16 $(FLAGS_FFV1_V3)
# RGB
fate-ffv1-enc-v3-rgb32: ENCOPTS = -level 3 -g 1 -coder 0 -context 0 -slices 24 -slicecrc 0 -pix_fmt rgb32 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-bgr0: ENCOPTS = -level 3 -g 1 -coder 0 -context 0 -slices 24 -slicecrc 0 -pix_fmt bgr0 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-gbrp%: CMP_UNIT = s16
fate-ffv1-enc-v3-gbrp9: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 24 -slicecrc 0 -pix_fmt gbrp9 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-gbrp10: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 24 -slicecrc 0 -pix_fmt gbrp10 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-gbrp12: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 24 -slicecrc 0 -pix_fmt gbrp12 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-gbrp14: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 24 -slicecrc 0 -pix_fmt gbrp14 $(FLAGS_FFV1_V3)
# Interlaced:
fate-ffv1-enc-v3-tff: ENCOPTS = -s pal -level 3 -top 1 -pix_fmt yuv422p $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-bff: ENCOPTS = -s pal -level 3 -top 0 -pix_fmt yuv422p $(FLAGS_FFV1_V3)
# Slice CRC: On
fate-ffv1-enc-v3-yuv422p_crc: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 30 -slicecrc 1 -pix_fmt yuv422p $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv422p9_crc: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 30 -slicecrc 1 -pix_fmt yuv422p9 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv422p10_crc: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 30 -slicecrc 1 -pix_fmt yuv422p10 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv422p16_crc: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 30 -slicecrc 1 -pix_fmt yuv422p16 $(FLAGS_FFV1_V3)
# Multipass:
fate-ffv1-enc-v3-yuv422p_pass1: ENCOPTS = -level 3 -an -pix_fmt yuv422p -pass 1 -passlogfile $(DEC_SRC)/ffv1-multipass $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuv422p_pass2: $(ENCOPTS = -level 3 -pix_fmt yuv422p -pass 2 -passlogfile $(DEC_SRC)/ffv1-multipass $(FLAGS_FFV1_V3)) fate-ffv1-enc-v3-yuv422p_pass1
# Alpha channel / transparency:
# YUV-A (9bit)
fate-ffv1-enc-v3-yuva420p9: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 24 -slicecrc 0 -pix_fmt yuva420p9 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuva422p9: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 30 -slicecrc 0 -pix_fmt yuva422p9 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuva444p9: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 4 -slicecrc 0 -pix_fmt yuva444p9 $(FLAGS_FFV1_V3)
# YUV-A (10bit)
fate-ffv1-enc-v3-yuva420p10: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 24 -slicecrc 0 -pix_fmt yuva420p10 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuva422p10: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 30 -slicecrc 0 -pix_fmt yuva422p10 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuva444p10: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 4 -slicecrc 0 -pix_fmt yuva444p10 $(FLAGS_FFV1_V3)
# YUV-A (16bit)
fate-ffv1-enc-v3-yuva420p16: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 24 -slicecrc 0 -pix_fmt yuva420p16 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuva422p16: ENCOPTS = -level 3 -g 1 -coder 1 -context 0 -slices 30 -slicecrc 0 -pix_fmt yuva422p16 $(FLAGS_FFV1_V3)
fate-ffv1-enc-v3-yuva444p16: ENCOPTS = -level 3 -g 1 -coder 1 -context 1 -slices 4 -slicecrc 0 -pix_fmt yuva444p16 $(FLAGS_FFV1_V3)
###################################################
# Decoding:
###################################################
#
fate-ffv1-dec-v3-defaults: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-defaults.avi) fate-ffv1-enc-v3-defaults
# YUV (8bit)
fate-ffv1-dec-v3-yuv410p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv410p.avi) fate-ffv1-enc-v3-yuv410p
fate-ffv1-dec-v3-yuv420p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv420p.avi) fate-ffv1-enc-v3-yuv420p
fate-ffv1-dec-v3-yuv422p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv422p.avi) fate-ffv1-enc-v3-yuv422p
fate-ffv1-dec-v3-yuv444p: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv444p.avi) fate-ffv1-enc-v3-yuv444p
# YUV (9bit)
fate-ffv1-dec-v3-yuv420p9: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv420p9.avi) fate-ffv1-enc-v3-yuv420p9
fate-ffv1-dec-v3-yuv422p9: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv422p9.avi) fate-ffv1-enc-v3-yuv422p9
fate-ffv1-dec-v3-yuv444p9: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv444p9.avi) fate-ffv1-enc-v3-yuv444p9
# YUV (10bit)
fate-ffv1-dec-v3-yuv420p10: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv420p10.avi) fate-ffv1-enc-v3-yuv420p10
fate-ffv1-dec-v3-yuv422p10: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv422p10.avi) fate-ffv1-enc-v3-yuv422p10
fate-ffv1-dec-v3-yuv444p10: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv444p10.avi) fate-ffv1-enc-v3-yuv444p10
# YUV (16bit)
fate-ffv1-dec-v3-yuv420p16: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv420p16.avi) fate-ffv1-enc-v3-yuv420p16
fate-ffv1-dec-v3-yuv422p16: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv422p16.avi) fate-ffv1-enc-v3-yuv422p16
fate-ffv1-dec-v3-yuv444p16: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv444p16.avi) fate-ffv1-enc-v3-yuv444p16
# Gray
fate-ffv1-dec-v3-gray: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-gray.avi) fate-ffv1-enc-v3-gray
fate-ffv1-dec-v3-gray16: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-gray16.avi) fate-ffv1-enc-v3-gray16
# RGB
fate-ffv1-dec-v3-rgb32: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-rgb32.avi) fate-ffv1-enc-v3-rgb32
fate-ffv1-dec-v3-bgr0: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-bgr0.avi) fate-ffv1-enc-v3-bgr0
fate-ffv1-dec-v3-gbrp9: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-gbrp9.avi) fate-ffv1-enc-v3-gbrp9
fate-ffv1-dec-v3-gbrp10: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-gbrp10.avi) fate-ffv1-enc-v3-gbrp10
fate-ffv1-dec-v3-gbrp12: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-gbrp12.avi) fate-ffv1-enc-v3-gbrp12
fate-ffv1-dec-v3-gbrp14: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-gbrp14.avi) fate-ffv1-enc-v3-gbrp14
# Interlaced:
fate-ffv1-dec-v3-tff: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-tff.avi) fate-ffv1-enc-v3-tff
fate-ffv1-dec-v3-bff: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-bff.avi) fate-ffv1-enc-v3-bff
# Slice CRC: On
fate-ffv1-dec-v3-yuv422p_crc: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv422p_crc.avi) fate-ffv1-enc-v3-yuv422p_crc
fate-ffv1-dec-v3-yuv422p9_crc: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv422p9_crc.avi) fate-ffv1-enc-v3-yuv422p9_crc
fate-ffv1-dec-v3-yuv422p10_crc: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv422p10_crc.avi) fate-ffv1-enc-v3-yuv422p10_crc
fate-ffv1-dec-v3-yuv422p16_crc: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv422p16_crc.avi) fate-ffv1-enc-v3-yuv422p16_crc
# Multipass:
fate-ffv1-dec-v3-yuv422p_pass1: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv422p_pass1.avi) fate-ffv1-enc-v3-yuv422p_pass1
fate-ffv1-dec-v3-yuv422p_pass2: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuv422p_pass2.avi) fate-ffv1-enc-v3-yuv422p_pass2
# Alpha channel / transparency:
# YUV (9bit)
fate-ffv1-dec-v3-yuva420p9: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuva420p9.avi) fate-ffv1-enc-v3-yuva420p9
fate-ffv1-dec-v3-yuva422p9: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuva422p9.avi) fate-ffv1-enc-v3-yuva422p9
fate-ffv1-dec-v3-yuva444p9: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuva444p9.avi) fate-ffv1-enc-v3-yuva444p9
# YUV (10bit)
fate-ffv1-dec-v3-yuva420p10: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuva420p10.avi) fate-ffv1-enc-v3-yuva420p10
fate-ffv1-dec-v3-yuva422p10: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuva422p10.avi) fate-ffv1-enc-v3-yuva422p10
fate-ffv1-dec-v3-yuva444p10: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuva444p10.avi) fate-ffv1-enc-v3-yuva444p10
# YUV (16bit)
fate-ffv1-dec-v3-yuva420p16: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuva420p16.avi) fate-ffv1-enc-v3-yuva420p16
fate-ffv1-dec-v3-yuva422p16: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuva422p16.avi) fate-ffv1-enc-v3-yuva422p16
fate-ffv1-dec-v3-yuva444p16: $(CMD = framecrc -i $(DEC_SRC)/ffv1-enc-v3-yuva444p16.avi) fate-ffv1-enc-v3-yuva444p16
###################################################
# Testing error resilience:
###################################################
fate-ffv1-fuzzed1: CMD = framecrc -i $(TARGET_SAMPLES)/ffv1/ffv1.3-yuv422p-fuzzed.avi
fate-ffv1-fuzzed2: CMD = framecrc -i $(TARGET_SAMPLES)/ffv1/ffv1.3-yuv422p_crc-fuzzed.avi
###################################################
# Testing invalid arguments:
###################################################
fate-ffv1-invalid1: ENCOPTS = -coder 1 -context -1
fate-ffv1-invalid2: ENCOPTS = -level 3 -slices 3
fate-ffv1-invalid3: ENCOPTS = -pix_fmt gbrp16
fate-ffv1-invalid4: ENCOPTS = -level 2
fate-ffv1-invalid5: ENCOPTS = -level 3 -coder 0 -context 0 -slices 24 -slicecrc 0 -pix_fmt gbrp9
###################################################
FATE_FFV1 := $(FATE_FFV1:%=fate-ffv1-enc-%) \
$(FATE_FFV1:%=fate-ffv1-dec-%) \
fate-ffv1-invalid1 \
fate-ffv1-invalid2 \
fate-ffv1-invalid3 \
fate-ffv1-invalid4 \
fate-ffv1-invalid5 \
fate-ffv1-fuzzed1 \
fate-ffv1-fuzzed2
FATE_FFV1_LEVEL1 := $(FATE_FFV1_LEVEL1:%=fate-ffv1-enc-%) \
$(FATE_FFV1_LEVEL1:%=fate-ffv1-dec-%)
FATE_FFV1_LEVEL3 := $(FATE_FFV1_LEVEL3:%=fate-ffv1-enc-%) \
$(FATE_FFV1_LEVEL3:%=fate-ffv1-dec-%)
FATE_FFV1-$(call ENCDEC, FFV1, AVI) += $(FATE_FFV1)
FATE_FFV1_LEVEL1-$(call ENCDEC, FFV1, AVI) += $(FATE_FFV1_LEVEL1)
FATE_FFV1_LEVEL3-$(call ENCDEC, FFV1, AVI) += $(FATE_FFV1_LEVEL3)
FATE_SAMPLES_FFMPEG += $(FATE_FFV1-yes)
fate-ffv1: $(FATE_FFV1-yes)
fate-ffv1.1: $(FATE_FFV1_LEVEL1-yes)
fate-ffv1.3: $(FATE_FFV1_LEVEL3-yes)
# Requires generating vsynth1.yuv as input source:
$(FATE_FFV1-yes): tests/data/vsynth1.yuv
#.PHONY: $(FATE_FFV1)
More information about the ffmpeg-devel
mailing list