On 09/01/15 11:24, Vittorio Giovara wrote:
> When the display matrix is not the identity one, but the rotation angle
> is zero, there is no need to update the sample aspect ratio.
> 
> Otherwise, it is possible to obtain negative values which interferes
> with transcoding in later stages. This kind of behaviour is reproducible
> on mov files with "major_brand: MSNV".
> 
> CC: [email protected]
> Signed-off-by: Vittorio Giovara <[email protected]>
> ---
>  libavformat/mov.c | 12 ++++--------
>  1 file changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index aa81661..86b2de0 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -35,6 +35,7 @@
>  #include "libavutil/time_internal.h"
>  #include "libavutil/avstring.h"
>  #include "libavutil/dict.h"
> +#include "libavutil/display.h"
>  #include "libavutil/opt.h"
>  #include "libavcodec/ac3tab.h"
>  #include "avformat.h"
> @@ -2578,15 +2579,10 @@ static int mov_read_tkhd(MOVContext *c, AVIOContext 
> *pb, MOVAtom atom)
>      }
>  
>      // 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
> +    // skip this if the rotation angle is 0 degrees
>      // to keep the same scale, use [width height 1<<16]
> -    if (width && height &&
> -        ((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])) {
> +    if (width && height && sc->display_matrix &&
> +        av_display_rotation_get(sc->display_matrix) != 0.0f) {
>          for (i = 0; i < 2; i++)
>              disp_transform[i] =
>                  (int64_t)  width  * display_matrix[0][i] +
> 

Seems fine.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to