mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-11 17:55:21 +00:00
mov: Do not compute negative SAR values
This partially reverts cf70ba37ba
, since
it didn't take into account when rotation is 0, but there is another
valid operation (eg. translation) in the matrix.
Found-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
2a06c2a03e
commit
4c5fa628da
@ -35,7 +35,6 @@
|
||||
#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"
|
||||
@ -2579,10 +2578,9 @@ static int mov_read_tkhd(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||
}
|
||||
|
||||
// transform the display width/height according to the matrix
|
||||
// skip this if the rotation angle is 0 degrees
|
||||
// skip this when the display matrix is the identity one
|
||||
// to keep the same scale, use [width height 1<<16]
|
||||
if (width && height && sc->display_matrix &&
|
||||
av_display_rotation_get(sc->display_matrix) != 0.0f) {
|
||||
if (width && height && sc->display_matrix) {
|
||||
for (i = 0; i < 2; i++)
|
||||
disp_transform[i] =
|
||||
(int64_t) width * display_matrix[0][i] +
|
||||
@ -2590,9 +2588,10 @@ static int mov_read_tkhd(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
||||
((int64_t) display_matrix[2][i] << 16);
|
||||
|
||||
//sample aspect ratio is new width/height divided by old width/height
|
||||
st->sample_aspect_ratio = av_d2q(
|
||||
((double) disp_transform[0] * height) /
|
||||
((double) disp_transform[1] * width), INT_MAX);
|
||||
if (disp_transform[0] > 0 && disp_transform[1] > 0)
|
||||
st->sample_aspect_ratio = av_d2q(
|
||||
((double) disp_transform[0] * height) /
|
||||
((double) disp_transform[1] * width), INT_MAX);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user