sd_lavc: strictly letter-box PGS subtitles

Getting subtitle scaling and positioning right even if there are video
filters, which completely change the image (like cropping), doesn't seem
to have a single, correct solution. To some degree, the results are
arbitrary, so we may as well do what is most useful to the user.

In this case, if the PGS resolution aspect ratio and the video output
aspect ratio mismatch, letter-box it, instead of stretching the subs
over the video frame. (This will require additional fixes, should it
turn out that there are PGS subtitles which are stretched by design.)

Fixes #1205.
This commit is contained in:
wm4
2014-10-21 11:37:32 +02:00
parent 38420eb49e
commit bcc3d72995
3 changed files with 9 additions and 4 deletions

View File

@@ -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);