summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--player/discnav.c2
-rw-r--r--sub/osd.c7
-rw-r--r--sub/sd_lavc.c4
3 files changed, 9 insertions, 4 deletions
diff --git a/player/discnav.c b/player/discnav.c
index ceb38bc3f4..5d477d6313 100644
--- a/player/discnav.c
+++ b/player/discnav.c
@@ -344,7 +344,7 @@ void mp_nav_get_highlight(void *priv, struct mp_osd_res res,
if (out_imgs->num_parts) {
out_imgs->parts = nav->outputs;
out_imgs->format = SUBBITMAP_RGBA;
- osd_rescale_bitmaps(out_imgs, sizes[0], sizes[1], res, -1);
+ osd_rescale_bitmaps(out_imgs, sizes[0], sizes[1], res, 0);
}
pthread_mutex_unlock(&nav->osd_lock);
diff --git a/sub/osd.c b/sub/osd.c
index 5b1c070051..995908222b 100644
--- a/sub/osd.c
+++ b/sub/osd.c
@@ -466,8 +466,9 @@ struct mp_osd_res osd_get_vo_res(struct osd_state *osd, int obj)
// Position the subbitmaps in imgs on the screen. Basically, this fits the
// subtitle canvas (of size frame_w x frame_h) onto the screen, such that it
// fills the whole video area (especially if the video is magnified, e.g. on
-// fullscreen). If compensate_par is given, adjust the way the subtitles are
-// "stretched" on the screen, and letter-box the result.
+// fullscreen). If compensate_par is >0, adjust the way the subtitles are
+// "stretched" on the screen, and letter-box the result. If compensate_par
+// is <0, strictly letter-box the subtitles. If it is 0, stretch them.
void osd_rescale_bitmaps(struct sub_bitmaps *imgs, int frame_w, int frame_h,
struct mp_osd_res res, double compensate_par)
{
@@ -475,6 +476,8 @@ void osd_rescale_bitmaps(struct sub_bitmaps *imgs, int frame_w, int frame_h,
int vidh = res.h - res.mt - res.mb;
double xscale = (double)vidw / frame_w;
double yscale = (double)vidh / frame_h;
+ if (compensate_par < 0)
+ compensate_par = xscale / yscale / res.display_par;
if (compensate_par > 0) {
if (compensate_par > 1.0) {
xscale /= compensate_par;
diff --git a/sub/sd_lavc.c b/sub/sd_lavc.c
index 206571e30b..5e0398d41c 100644
--- a/sub/sd_lavc.c
+++ b/sub/sd_lavc.c
@@ -292,7 +292,7 @@ static void get_bitmaps(struct sd *sd, struct mp_osd_res d, double pts,
priv->displayed_id = current->id;
res->format = SUBBITMAP_INDEXED;
- double video_par = -1;
+ double video_par = 0;
if (priv->avctx->codec_id == AV_CODEC_ID_DVD_SUBTITLE &&
opts->stretch_dvd_subs) {
// For DVD subs, try to keep the subtitle PAR at display PAR.
@@ -302,6 +302,8 @@ static void get_bitmaps(struct sd *sd, struct mp_osd_res d, double pts,
if (isnormal(par))
video_par = par;
}
+ if (priv->avctx->codec_id == AV_CODEC_ID_HDMV_PGS_SUBTITLE)
+ video_par = -1;
int insize[2];
get_resolution(sd, insize);
osd_rescale_bitmaps(res, insize[0], insize[1], d, video_par);