theora: support different visible and coded frame size
[ffmpeg.git] / libavutil / display.c
index ae6c1c2..74aceb2 100644 (file)
@@ -23,6 +23,7 @@
 #include <math.h>
 
 #include "display.h"
+#include "mathematics.h"
 
 // fixed point to double
 #define CONV_FP(x) ((double) (x)) / (1 << 16)
@@ -62,3 +63,13 @@ void av_display_rotation_set(int32_t matrix[9], double angle)
     matrix[4] = CONV_DB(c);
     matrix[8] = 1 << 30;
 }
+
+void av_display_matrix_flip(int32_t matrix[9], int hflip, int vflip)
+{
+    int i;
+    const int flip[] = { 1 - 2 * (!!hflip), 1 - 2 * (!!vflip), 1 };
+
+    if (hflip || vflip)
+        for (i = 0; i < 9; i++)
+            matrix[i] *= flip[i % 3];
+}