From 62d2a75b024bf72e6f3648e33c5bb5baf9018358 Mon Sep 17 00:00:00 2001 From: Piotr Tomasik Date: Tue, 24 Jan 2012 02:16:41 -0800 Subject: [PATCH] Added clockwise rotate values to metadata for 90 and 270 degrees Signed-off-by: Michael Niedermayer --- libavformat/mov.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index 06b2f87b0d..133dd89509 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2156,10 +2156,21 @@ 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