only set par if it does not indicates a rotation, ex iphone 3GS
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>
Thu, 25 Jun 2009 00:17:47 +0000 (00:17 +0000)
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>
Thu, 25 Jun 2009 00:17:47 +0000 (00:17 +0000)
Originally committed as revision 19271 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/mov.c

index a5583495c27fccc417f07c6f7b0ac1d7078a5e5a..74698e05479cec2a4a648e7fca03af58df95ddca 100644 (file)
@@ -1671,13 +1671,16 @@ static int mov_read_tkhd(MOVContext *c, ByteIOContext *pb, MOVAtom atom)
     sc->width = width >> 16;
     sc->height = height >> 16;
 
-    //transform the display width/height according to the matrix
+    // 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
     // to keep the same scale, use [width height 1<<16]
     if (width && height &&
-        (display_matrix[0][0] != 65536 || display_matrix[0][1]           ||
-        display_matrix[1][0]           || display_matrix[1][1] != 65536  ||
-        display_matrix[2][0]           || display_matrix[2][1])) {
+        ((display_matrix[0][0] != 65536  ||
+          display_matrix[1][1] != 65536) &&
+         !display_matrix[0][1] &&
+         !display_matrix[1][0] &&
+         !display_matrix[2][0] && !display_matrix[2][1])) {
         for (i = 0; i < 2; i++)
             disp_transform[i] =
                 (int64_t)  width  * display_matrix[0][i] +