summaryrefslogtreecommitdiff
path: root/fftools/ffplay.c
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2018-11-24 23:58:04 +0100
committerMarton Balint <cus@passwd.hu>2018-12-02 00:57:09 +0100
commit9a39c5449f5aef1c02bd46538bbbad4590064602 (patch)
treececf567d3bfbe348971b7942abbbc5a81ef6ca25 /fftools/ffplay.c
parent2a08faba88027ec4679910bab9ff23925d8f6142 (diff)
downloadffmpeg-9a39c5449f5aef1c02bd46538bbbad4590064602.tar.gz
ffplay: convert float math to int math in calculate_display_rect
Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'fftools/ffplay.c')
-rw-r--r--fftools/ffplay.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/fftools/ffplay.c b/fftools/ffplay.c
index ab1f9faccf..37a853fbd9 100644
--- a/fftools/ffplay.c
+++ b/fftools/ffplay.c
@@ -861,31 +861,27 @@ static void calculate_display_rect(SDL_Rect *rect,
int scr_xleft, int scr_ytop, int scr_width, int scr_height,
int pic_width, int pic_height, AVRational pic_sar)
{
- float aspect_ratio;
- int width, height, x, y;
+ AVRational aspect_ratio = pic_sar;
+ int64_t width, height, x, y;
- if (pic_sar.num == 0)
- aspect_ratio = 0;
- else
- aspect_ratio = av_q2d(pic_sar);
+ if (av_cmp_q(aspect_ratio, av_make_q(0, 1)) <= 0)
+ aspect_ratio = av_make_q(1, 1);
- if (aspect_ratio <= 0.0)
- aspect_ratio = 1.0;
- aspect_ratio *= (float)pic_width / (float)pic_height;
+ aspect_ratio = av_mul_q(aspect_ratio, av_make_q(pic_width, pic_height));
/* XXX: we suppose the screen has a 1.0 pixel ratio */
height = scr_height;
- width = lrint(height * aspect_ratio) & ~1;
+ width = av_rescale(height, aspect_ratio.num, aspect_ratio.den) & ~1;
if (width > scr_width) {
width = scr_width;
- height = lrint(width / aspect_ratio) & ~1;
+ height = av_rescale(width, aspect_ratio.den, aspect_ratio.num) & ~1;
}
x = (scr_width - width) / 2;
y = (scr_height - height) / 2;
rect->x = scr_xleft + x;
rect->y = scr_ytop + y;
- rect->w = FFMAX(width, 1);
- rect->h = FFMAX(height, 1);
+ rect->w = FFMAX((int)width, 1);
+ rect->h = FFMAX((int)height, 1);
}
static void get_sdl_pix_fmt_and_blendmode(int format, Uint32 *sdl_pix_fmt, SDL_BlendMode *sdl_blendmode)