Added a selftest to libavutil/display.c
authorPetru Rares Sincraian <psincraian@outlook.com>
Sun, 20 Mar 2016 08:54:07 +0000 (09:54 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Tue, 22 Mar 2016 16:24:55 +0000 (17:24 +0100)
    - Check if av_display_rotation_get() gets the correct degrees
    - Check if av_display_rotation_set() sets the correct matrix
    - Check if av_display_matrix_flip() changes correct the matrix

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavutil/Makefile
libavutil/display.c
libavutil/display.h
tests/fate/libavutil.mak
tests/ref/fate/display [new file with mode: 0644]

index 58df75a..7a3076f 100644 (file)
@@ -181,6 +181,7 @@ TESTPROGS = adler32                                                     \
             crc                                                         \
             des                                                         \
             dict                                                        \
+            display                                                     \
             error                                                       \
             eval                                                        \
             file                                                        \
index a0076e0..ceed492 100644 (file)
@@ -71,3 +71,46 @@ void av_display_matrix_flip(int32_t matrix[9], int hflip, int vflip)
         for (i = 0; i < 9; i++)
             matrix[i] *= flip[i % 3];
 }
+
+#ifdef TEST
+
+static void print_matrix(int32_t matrix[9])
+{
+    int i, j;
+
+    for (i = 0; i < 3; ++i) {
+        for (j = 0; j < 3 - 1; ++j)
+            printf("%d ", matrix[i*3 + j]);
+
+        printf("%d\n", matrix[i*3 + j]);
+    }
+}
+
+int main(void)
+{
+    int32_t matrix[9];
+
+    // Set the matrix to 90 degrees
+    av_display_rotation_set(matrix, 90);
+    print_matrix(matrix);
+    printf("degrees: %f\n", av_display_rotation_get(matrix));
+
+    // Set the matrix to -45 degrees
+    av_display_rotation_set(matrix, -45);
+    print_matrix(matrix);
+    printf("degrees: %f\n", av_display_rotation_get(matrix));
+
+    // flip horizontal
+    av_display_matrix_flip(matrix, 1, 0);
+    print_matrix(matrix);
+    printf("degrees: %f\n", av_display_rotation_get(matrix));
+
+    // flip vertical
+    av_display_matrix_flip(matrix, 0, 1);
+    print_matrix(matrix);
+    printf("degrees: %f\n", av_display_rotation_get(matrix));
+
+    return 0;
+
+}
+#endif
index c0cfee3..39c15ee 100644 (file)
@@ -22,6 +22,7 @@
 #define AVUTIL_DISPLAY_H
 
 #include <stdint.h>
+#include "common.h"
 
 /**
  * The display transformation matrix specifies an affine transformation that
index 5d8e0e2..7f4fb7a 100644 (file)
@@ -99,6 +99,10 @@ FATE_LIBAVUTIL-$(CONFIG_PIXELUTILS) += fate-pixelutils
 fate-pixelutils: libavutil/pixelutils-test$(EXESUF)
 fate-pixelutils: CMD = run libavutil/pixelutils-test
 
+FATE_LIBAVUTIL += fate-display
+fate-display: libavutil/display-test$(EXESUF)
+fate-display: CMD = run libavutil/display-test
+
 FATE_LIBAVUTIL += fate-random_seed
 fate-random_seed: libavutil/random_seed-test$(EXESUF)
 fate-random_seed: CMD = run libavutil/random_seed-test
diff --git a/tests/ref/fate/display b/tests/ref/fate/display
new file mode 100644 (file)
index 0000000..251e7e0
--- /dev/null
@@ -0,0 +1,16 @@
+0 65536 0
+-65536 0 0
+0 0 1073741824
+degrees: -90.000000
+46340 -46340 0
+46340 46340 0
+0 0 1073741824
+degrees: 45.000000
+-46340 -46340 0
+-46340 46340 0
+0 0 1073741824
+degrees: 135.000000
+-46340 46340 0
+-46340 -46340 0
+0 0 1073741824
+degrees: -135.000000