Some devices include metadata in the video that indicate the orientation of the video. Apple devices are an example of that.
This code was lifted from ffmpeg and includes the "rotate" element in the video
metadata.
There were several commits that touched the relevant code, but as this touched
other areas as well I could not use those commits as is:
d3cef0a85
e6ba3d428
62d2a75b0
---
libavformat/mov.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 9b019e1..6dae12d 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -2256,6 +2256,18 @@ static int mov_read_tkhd(MOVContext *c, AVIOContext *pb,
MOVAtom atom)
sc->width = width >> 16;
sc->height = height >> 16;
+ // Assign clockwise rotate values based on transform matrix so that
+ // we can compensate for iPhone orientation during capture.
+
+ if (display_matrix[1][0] == -65536 && display_matrix[0][1] == 65536)
+ av_dict_set(&st->metadata, "rotate", "90", 0);
+
+ if (display_matrix[0][0] == -65536 && display_matrix[1][1] == -65536)
+ av_dict_set(&st->metadata, "rotate", "180", 0);
+
+ if (display_matrix[1][0] == 65536 && display_matrix[0][1] == -65536)
+ av_dict_set(&st->metadata, "rotate", "270", 0);
+
// transform the display width/height according to the matrix
// skip this if the display matrix is the default identity matrix
// or if it is rotating the picture, ex iPhone 3GS
--
1.8.3.4 (Apple Git-47)
signature.asc
Description: Message signed with OpenPGP using GPGMail
_______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
