Browse Source

fate/pixfmts: extend the high bit depth test

Also test 8bit formats, and try bitdepth conversion paths.

Signed-off-by: James Almer <jamrial@gmail.com>
James Almer 4 months ago
parent
commit
271aea60a4

+ 1 - 1
libswscale/utils.c

@@ -698,7 +698,7 @@ static av_cold int initFilter(int16_t **outFilter, int32_t **filterPos,
             filterAlign = 1;
     }
 
-    if (HAVE_MMX && cpu_flags & AV_CPU_FLAG_MMX) {
+    if (HAVE_MMX && cpu_flags & AV_CPU_FLAG_MMX || have_neon(cpu_flags)) {
         // special case for unscaled vertical filtering
         if (minFilterSize == 1 && filterAlign == 2)
             filterAlign = 1;

+ 6 - 4
tests/fate-run.sh

@@ -203,7 +203,8 @@ enc_dec_pcm(){
     ffmpeg -auto_conversion_filters -bitexact -i ${encfile} -c:a pcm_${pcm_fmt} -fflags +bitexact -f ${dec_fmt} -
 }
 
-FLAGS="-flags +bitexact -sws_flags +accurate_rnd+bitexact -fflags +bitexact"
+SCALE_FLAGS="+accurate_rnd+bitexact"
+FLAGS="-flags +bitexact -sws_flags $SCALE_FLAGS -fflags +bitexact"
 DEC_OPTS="-threads $threads -thread_type $thread_type -idct simple $FLAGS"
 ENC_OPTS="-threads 1        -idct simple -dct fastint"
 
@@ -335,7 +336,7 @@ echov(){
 }
 
 AVCONV_OPTS="-nostdin -nostats -noauto_conversion_filters -y -cpuflags $cpuflags -filter_threads $threads"
-COMMON_OPTS="-flags +bitexact -idct simple -sws_flags +accurate_rnd+bitexact -fflags +bitexact"
+COMMON_OPTS="-flags +bitexact -idct simple -sws_flags $SCALE_FLAGS -fflags +bitexact"
 DEC_OPTS="$COMMON_OPTS -threads $threads"
 ENC_OPTS="$COMMON_OPTS -threads 1 -dct fastint"
 
@@ -505,14 +506,15 @@ pixfmt_conversion(){
 
 pixfmt_conversion_ext(){
     prefix=$1
+    suffix=$2
     color_range="${test#pixfmt-}"
     color_range=${color_range%-*}
     conversion="${test#pixfmt-$color_range-}"
     outdir="tests/data/pixfmt"
     file=${outdir}/${color_range}-${conversion}.yuv
     cleanfiles="$cleanfiles $file"
-    do_avconv $file $DEC_OPTS -lavfi ${prefix}testsrc=s=352x288,format=${color_range},scale,format=$conversion \
-              $ENC_OPTS -t 1 -f rawvideo -s 352x288 -pix_fmt ${color_range}le -color_range mpeg
+    do_avconv $file $DEC_OPTS -lavfi ${prefix}testsrc=s=352x288,format=${color_range},scale=flags=$SCALE_FLAGS,format=$conversion \
+              $ENC_OPTS -t 1 -f rawvideo -s 352x288 -pix_fmt ${color_range}${suffix} -color_range mpeg
 }
 
 pixdesc(){

+ 62 - 49
tests/fate/pixfmt.mak

@@ -1,7 +1,11 @@
-FATE_PIXFMT-$(CONFIG_SCALE_FILTER) =           bgr24           \
+PIXFMT_8_LIST =         bgr24           \
                         gray            \
+                        nv12            \
+                        nv16            \
+                        nv24            \
                         monob           \
                         monow           \
+                        vuyx            \
                         rgb24           \
                         rgb32           \
                         rgb555          \
@@ -18,14 +22,39 @@ FATE_PIXFMT-$(CONFIG_SCALE_FILTER) =           bgr24           \
                         yuvj440p        \
                         yuvj444p        \
                         yuyv422         \
+                        yvyu422         \
+                        uyvy422         \
+                        vyu444          \
 
-FATE_PIXFMT := $(FATE_PIXFMT-yes:%=fate-pixfmt-%)
+FATE_PIXFMT := $(PIXFMT_8_LIST:%=fate-pixfmt-%)
 
 $(FATE_PIXFMT): CMD = pixfmt_conversion
 $(FATE_PIXFMT): REF = $(SRC_PATH)/tests/ref/pixfmt/$(@:fate-pixfmt-%=%)
 $(FATE_PIXFMT): $(VREF)
 
-PIXFMT_10_LIST =        gray10le        \
+PIXFMT_16_LIST =        gray16le        \
+                        gray16be        \
+                        yuv420p16le     \
+                        yuv420p16be     \
+                        yuv422p16le     \
+                        yuv422p16be     \
+                        yuv444p16le     \
+                        yuv444p16be     \
+                        y216le          \
+                        p016le          \
+                        p016be          \
+                        p216le          \
+                        p216be          \
+                        p416le          \
+                        p416be          \
+                        xv48le          \
+                        xv48be          \
+                        rgb48           \
+                        gbrp16le        \
+                        gbrp16be        \
+
+PIXFMT_EXT_LIST =      $(PIXFMT_8_LIST) \
+                        gray10le        \
                         gray10be        \
                         yuv420p10le     \
                         yuv420p10be     \
@@ -48,20 +77,7 @@ PIXFMT_10_LIST =        gray10le        \
                         x2bgr10le       \
                         gbrp10le        \
                         gbrp10be        \
-
-FATE_PIXFMT_10-YUV-$(call ALLYES, SCALE_FILTER YUVTESTSRC_FILTER LAVFI_INDEV) += $(PIXFMT_10_LIST)
-FATE_PIXFMT_10-RGB-$(call ALLYES, SCALE_FILTER RGBTESTSRC_FILTER LAVFI_INDEV) += $(PIXFMT_10_LIST)
-
-FATE_PIXFMT_10-YUV := $(FATE_PIXFMT_10-YUV-yes:%=fate-pixfmt-yuv444p10-%)
-FATE_PIXFMT_10-RGB := $(FATE_PIXFMT_10-RGB-yes:%=fate-pixfmt-gbrp10-%)
-
-$(FATE_PIXFMT_10-YUV): CMD = pixfmt_conversion_ext "yuv"
-$(FATE_PIXFMT_10-RGB): CMD = pixfmt_conversion_ext "rgb"
-
-FATE_PIXFMT_10 := $(FATE_PIXFMT_10-YUV) $(FATE_PIXFMT_10-RGB)
-$(FATE_PIXFMT_10): REF = $(SRC_PATH)/tests/ref/pixfmt/$(@:fate-pixfmt-%=%)
-
-PIXFMT_12_LIST =        gray12le        \
+                        gray12le        \
                         gray12be        \
                         yuv420p12le     \
                         yuv420p12be     \
@@ -82,39 +98,36 @@ PIXFMT_12_LIST =        gray12le        \
                         xv36be          \
                         gbrp12le        \
                         gbrp12be        \
+                      $(PIXFMT_16_LIST) \
 
-FATE_PIXFMT_12-YUV-$(call ALLYES, SCALE_FILTER YUVTESTSRC_FILTER LAVFI_INDEV) += $(PIXFMT_12_LIST)
-FATE_PIXFMT_12-RGB-$(call ALLYES, SCALE_FILTER RGBTESTSRC_FILTER LAVFI_INDEV) += $(PIXFMT_12_LIST)
 
-FATE_PIXFMT_12-YUV := $(FATE_PIXFMT_12-YUV-yes:%=fate-pixfmt-yuv444p12-%)
-FATE_PIXFMT_12-RGB := $(FATE_PIXFMT_12-RGB-yes:%=fate-pixfmt-gbrp12-%)
+FATE_PIXFMT_8-YUV-$(call ALLYES, SCALE_FILTER YUVTESTSRC_FILTER LAVFI_INDEV) += $(PIXFMT_EXT_LIST)
+FATE_PIXFMT_8-RGB-$(call ALLYES, SCALE_FILTER RGBTESTSRC_FILTER LAVFI_INDEV) += $(PIXFMT_EXT_LIST)
 
-$(FATE_PIXFMT_12-YUV): CMD = pixfmt_conversion_ext "yuv"
-$(FATE_PIXFMT_12-RGB): CMD = pixfmt_conversion_ext "rgb"
+FATE_PIXFMT_8-YUV += $(FATE_PIXFMT_8-YUV-yes:%=fate-pixfmt-yuv444p-%)
+FATE_PIXFMT_8-RGB += $(FATE_PIXFMT_8-RGB-yes:%=fate-pixfmt-gbrp-%)
+FATE_PIXFMT_8-RGB += $(FATE_PIXFMT_8-RGB-yes:%=fate-pixfmt-rgb24-%)
 
-FATE_PIXFMT_12 := $(FATE_PIXFMT_12-YUV) $(FATE_PIXFMT_12-RGB)
-$(FATE_PIXFMT_12): REF = $(SRC_PATH)/tests/ref/pixfmt/$(@:fate-pixfmt-%=%)
+$(FATE_PIXFMT_8-YUV): CMD = pixfmt_conversion_ext "yuv"
+$(FATE_PIXFMT_8-RGB): CMD = pixfmt_conversion_ext "rgb"
 
-PIXFMT_16_LIST =        gray16le        \
-                        gray16be        \
-                        yuv420p16le     \
-                        yuv420p16be     \
-                        yuv422p16le     \
-                        yuv422p16be     \
-                        yuv444p16le     \
-                        yuv444p16be     \
-                        y216le          \
-                        p016le          \
-                        p016be          \
-                        p216le          \
-                        p216be          \
-                        p416le          \
-                        p416be          \
-                        xv48le          \
-                        xv48be          \
-                        rgb48           \
-                        gbrp16le        \
-                        gbrp16be        \
+FATE_PIXFMT_8 := $(FATE_PIXFMT_8-YUV) $(FATE_PIXFMT_8-RGB)
+$(FATE_PIXFMT_8): REF = $(SRC_PATH)/tests/ref/pixfmt/$(@:fate-pixfmt-%=%)
+
+FATE_PIXFMT_EXT-YUV-$(call ALLYES, SCALE_FILTER YUVTESTSRC_FILTER LAVFI_INDEV) += $(PIXFMT_EXT_LIST)
+FATE_PIXFMT_EXT-RGB-$(call ALLYES, SCALE_FILTER RGBTESTSRC_FILTER LAVFI_INDEV) += $(PIXFMT_EXT_LIST)
+
+FATE_PIXFMT_EXT-YUV += $(FATE_PIXFMT_EXT-YUV-yes:%=fate-pixfmt-yuv444p10-%)
+FATE_PIXFMT_EXT-YUV += $(FATE_PIXFMT_EXT-YUV-yes:%=fate-pixfmt-yuv444p12-%)
+FATE_PIXFMT_EXT-RGB += $(FATE_PIXFMT_EXT-RGB-yes:%=fate-pixfmt-gbrp10-%)
+FATE_PIXFMT_EXT-RGB += $(FATE_PIXFMT_EXT-RGB-yes:%=fate-pixfmt-gbrp12-%)
+FATE_PIXFMT_EXT-RGB += $(FATE_PIXFMT_EXT-RGB-yes:%=fate-pixfmt-rgb48-%)
+
+$(FATE_PIXFMT_EXT-YUV): CMD = pixfmt_conversion_ext "yuv" "le"
+$(FATE_PIXFMT_EXT-RGB): CMD = pixfmt_conversion_ext "rgb" "le"
+
+FATE_PIXFMT_EXT := $(FATE_PIXFMT_EXT-YUV) $(FATE_PIXFMT_EXT-RGB)
+$(FATE_PIXFMT_EXT): REF = $(SRC_PATH)/tests/ref/pixfmt/$(@:fate-pixfmt-%=%)
 
 FATE_PIXFMT_16-YUV-$(call ALLYES, SCALE_FILTER YUVTESTSRC_FILTER LAVFI_INDEV) += $(PIXFMT_16_LIST)
 FATE_PIXFMT_16-RGB-$(call ALLYES, SCALE_FILTER RGBTESTSRC_FILTER LAVFI_INDEV) += $(PIXFMT_16_LIST)
@@ -122,11 +135,11 @@ FATE_PIXFMT_16-RGB-$(call ALLYES, SCALE_FILTER RGBTESTSRC_FILTER LAVFI_INDEV) +=
 FATE_PIXFMT_16-YUV := $(FATE_PIXFMT_16-YUV-yes:%=fate-pixfmt-yuv444p16-%)
 FATE_PIXFMT_16-RGB := $(FATE_PIXFMT_16-RGB-yes:%=fate-pixfmt-gbrp16-%)
 
-$(FATE_PIXFMT_16-YUV): CMD = pixfmt_conversion_ext "yuv"
-$(FATE_PIXFMT_16-RGB): CMD = pixfmt_conversion_ext "rgb"
+$(FATE_PIXFMT_16-YUV): CMD = pixfmt_conversion_ext "yuv" "le"
+$(FATE_PIXFMT_16-RGB): CMD = pixfmt_conversion_ext "rgb" "le"
 
 FATE_PIXFMT_16 := $(FATE_PIXFMT_16-YUV) $(FATE_PIXFMT_16-RGB)
 $(FATE_PIXFMT_16): REF = $(SRC_PATH)/tests/ref/pixfmt/$(@:fate-pixfmt-%=%)
 
-FATE_AVCONV += $(FATE_PIXFMT) $(FATE_PIXFMT_8) $(FATE_PIXFMT_10) $(FATE_PIXFMT_12) $(FATE_PIXFMT_16)
-fate-pixfmt:   $(FATE_PIXFMT) $(FATE_PIXFMT_8) $(FATE_PIXFMT_10) $(FATE_PIXFMT_12) $(FATE_PIXFMT_16)
+FATE_AVCONV += $(FATE_PIXFMT) $(FATE_PIXFMT_8) $(FATE_PIXFMT_EXT) $(FATE_PIXFMT_16)
+fate-pixfmt:   $(FATE_PIXFMT) $(FATE_PIXFMT_8) $(FATE_PIXFMT_EXT) $(FATE_PIXFMT_16)

+ 2 - 0
tests/ref/pixfmt/gbrp-bgr24

@@ -0,0 +1,2 @@
+b47e4ab6d421bb8a7f911787aa7ca753 *tests/data/pixfmt/gbrp-bgr24.yuv
+7603200 tests/data/pixfmt/gbrp-bgr24.yuv

+ 2 - 0
tests/ref/pixfmt/gbrp-gbrp10be

@@ -0,0 +1,2 @@
+b47e4ab6d421bb8a7f911787aa7ca753 *tests/data/pixfmt/gbrp-gbrp10be.yuv
+7603200 tests/data/pixfmt/gbrp-gbrp10be.yuv

+ 2 - 0
tests/ref/pixfmt/gbrp-gbrp10le

@@ -0,0 +1,2 @@
+b47e4ab6d421bb8a7f911787aa7ca753 *tests/data/pixfmt/gbrp-gbrp10le.yuv
+7603200 tests/data/pixfmt/gbrp-gbrp10le.yuv

+ 2 - 0
tests/ref/pixfmt/gbrp-gbrp12be

@@ -0,0 +1,2 @@
+b47e4ab6d421bb8a7f911787aa7ca753 *tests/data/pixfmt/gbrp-gbrp12be.yuv
+7603200 tests/data/pixfmt/gbrp-gbrp12be.yuv

+ 2 - 0
tests/ref/pixfmt/gbrp-gbrp12le

@@ -0,0 +1,2 @@
+b47e4ab6d421bb8a7f911787aa7ca753 *tests/data/pixfmt/gbrp-gbrp12le.yuv
+7603200 tests/data/pixfmt/gbrp-gbrp12le.yuv

+ 2 - 0
tests/ref/pixfmt/gbrp-gbrp16be

@@ -0,0 +1,2 @@
+b47e4ab6d421bb8a7f911787aa7ca753 *tests/data/pixfmt/gbrp-gbrp16be.yuv
+7603200 tests/data/pixfmt/gbrp-gbrp16be.yuv

+ 2 - 0
tests/ref/pixfmt/gbrp-gbrp16le

@@ -0,0 +1,2 @@
+b47e4ab6d421bb8a7f911787aa7ca753 *tests/data/pixfmt/gbrp-gbrp16le.yuv
+7603200 tests/data/pixfmt/gbrp-gbrp16le.yuv

Some files were not shown because too many files changed in this diff