summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2015-03-17 17:38:48 +0000
committerVittorio Giovara <vittorio.giovara@gmail.com>2015-03-23 20:53:28 +0000
commite4fe535d12f4f30df2dd672e30304af112a5a827 (patch)
tree1ed7edafbb76a3dadaf01e190c681682f8873896
parente0046bc9c96150fa06146ace9093f06857dd7b23 (diff)
mov: Write the display matrix in order
This will allow to copy the matrix as is and it is just cleaner to keep the matrix in the same order specified by the mov standard (which is also explicitly described in the documentation). In order to preserve compatibility, flip the angle sign in the display API av_display_rotation_set() and av_display_rotation_get(), and improve the documentation mentioning the rotation direction.
-rw-r--r--libavformat/mov.c2
-rw-r--r--libavutil/display.c4
-rw-r--r--libavutil/display.h10
-rw-r--r--libavutil/version.h2
4 files changed, 9 insertions, 9 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 76ce9ee217..ef58492217 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -2606,7 +2606,7 @@ static int mov_read_tkhd(MOVContext *c, AVIOContext *pb, MOVAtom atom)
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
- sc->display_matrix[i * 3 + j] = display_matrix[j][i];
+ sc->display_matrix[i * 3 + j] = display_matrix[i][j];
}
// transform the display width/height according to the matrix
diff --git a/libavutil/display.c b/libavutil/display.c
index 74aceb2847..f7500948ff 100644
--- a/libavutil/display.c
+++ b/libavutil/display.c
@@ -46,12 +46,12 @@ double av_display_rotation_get(const int32_t matrix[9])
rotation = atan2(CONV_FP(matrix[1]) / scale[1],
CONV_FP(matrix[0]) / scale[0]) * 180 / M_PI;
- return rotation;
+ return -rotation;
}
void av_display_rotation_set(int32_t matrix[9], double angle)
{
- double radians = angle * M_PI / 180.0f;
+ double radians = -angle * M_PI / 180.0f;
double c = cos(radians);
double s = sin(radians);
diff --git a/libavutil/display.h b/libavutil/display.h
index 7e37627637..dba3b1e60d 100644
--- a/libavutil/display.h
+++ b/libavutil/display.h
@@ -55,9 +55,9 @@
* Extract the rotation component of the transformation matrix.
*
* @param matrix the transformation matrix
- * @return the angle (in degrees) by which the transformation rotates the frame.
- * The angle will be in range [-180.0, 180.0], or NaN if the matrix is
- * singular.
+ * @return the angle (in degrees) by which the transformation rotates the frame
+ * counterclockwise. The angle will be in range [-180.0, 180.0],
+ * or NaN if the matrix is singular.
*
* @note floating point numbers are inherently inexact, so callers are
* recommended to round the return value to nearest integer before use.
@@ -65,8 +65,8 @@
double av_display_rotation_get(const int32_t matrix[9]);
/**
- * Initialize a transformation matrix describing a pure rotation by the
- * specified angle (in degrees).
+ * Initialize a transformation matrix describing a pure counterclockwise
+ * rotation by the specified angle (in degrees).
*
* @param matrix an allocated transformation matrix (will be fully overwritten
* by this function)
diff --git a/libavutil/version.h b/libavutil/version.h
index 77595a8e54..c1a302966e 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -55,7 +55,7 @@
#define LIBAVUTIL_VERSION_MAJOR 54
#define LIBAVUTIL_VERSION_MINOR 9
-#define LIBAVUTIL_VERSION_MICRO 0
+#define LIBAVUTIL_VERSION_MICRO 1
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \