mirror of https://git.ffmpeg.org/ffmpeg.git
ffplay: convert float math to int math in calculate_display_rect
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
2a08faba88
commit
9a39c5449f
|
@ -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 scr_xleft, int scr_ytop, int scr_width, int scr_height,
|
||||||
int pic_width, int pic_height, AVRational pic_sar)
|
int pic_width, int pic_height, AVRational pic_sar)
|
||||||
{
|
{
|
||||||
float aspect_ratio;
|
AVRational aspect_ratio = pic_sar;
|
||||||
int width, height, x, y;
|
int64_t width, height, x, y;
|
||||||
|
|
||||||
if (pic_sar.num == 0)
|
if (av_cmp_q(aspect_ratio, av_make_q(0, 1)) <= 0)
|
||||||
aspect_ratio = 0;
|
aspect_ratio = av_make_q(1, 1);
|
||||||
else
|
|
||||||
aspect_ratio = av_q2d(pic_sar);
|
|
||||||
|
|
||||||
if (aspect_ratio <= 0.0)
|
aspect_ratio = av_mul_q(aspect_ratio, av_make_q(pic_width, pic_height));
|
||||||
aspect_ratio = 1.0;
|
|
||||||
aspect_ratio *= (float)pic_width / (float)pic_height;
|
|
||||||
|
|
||||||
/* XXX: we suppose the screen has a 1.0 pixel ratio */
|
/* XXX: we suppose the screen has a 1.0 pixel ratio */
|
||||||
height = scr_height;
|
height = scr_height;
|
||||||
width = lrint(height * aspect_ratio) & ~1;
|
width = av_rescale(height, aspect_ratio.num, aspect_ratio.den) & ~1;
|
||||||
if (width > scr_width) {
|
if (width > scr_width) {
|
||||||
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;
|
x = (scr_width - width) / 2;
|
||||||
y = (scr_height - height) / 2;
|
y = (scr_height - height) / 2;
|
||||||
rect->x = scr_xleft + x;
|
rect->x = scr_xleft + x;
|
||||||
rect->y = scr_ytop + y;
|
rect->y = scr_ytop + y;
|
||||||
rect->w = FFMAX(width, 1);
|
rect->w = FFMAX((int)width, 1);
|
||||||
rect->h = FFMAX(height, 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)
|
static void get_sdl_pix_fmt_and_blendmode(int format, Uint32 *sdl_pix_fmt, SDL_BlendMode *sdl_blendmode)
|
||||||
|
|
Loading…
Reference in New Issue