summaryrefslogtreecommitdiffstats
path: root/libass
diff options
context:
space:
mode:
Diffstat (limited to 'libass')
-rw-r--r--libass/ass.h2
-rw-r--r--libass/ass_render.c10
2 files changed, 8 insertions, 4 deletions
diff --git a/libass/ass.h b/libass/ass.h
index 304b42ee..6dd28ecc 100644
--- a/libass/ass.h
+++ b/libass/ass.h
@@ -83,7 +83,7 @@ void ass_renderer_done(ass_renderer_t *priv);
void ass_set_frame_size(ass_renderer_t *priv, int w, int h);
void ass_set_margins(ass_renderer_t *priv, int t, int b, int l, int r);
void ass_set_use_margins(ass_renderer_t *priv, int use);
-void ass_set_aspect_ratio(ass_renderer_t *priv, double ar);
+void ass_set_aspect_ratio(ass_renderer_t *priv, double ar, double par);
void ass_set_font_scale(ass_renderer_t *priv, double font_scale);
void ass_set_hinting(ass_renderer_t *priv, ass_hinting_t ht);
void ass_set_line_spacing(ass_renderer_t *priv, double line_spacing);
diff --git a/libass/ass_render.c b/libass/ass_render.c
index d3d53e40..79722e2a 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -69,6 +69,7 @@ typedef struct ass_settings_s {
int use_margins; // 0 - place all subtitles inside original frame
// 1 - use margins for placing toptitles and subtitles
double aspect; // frame aspect ratio, d_width / d_height.
+ double pixel_ratio; // pixel ratio of the source image
ass_hinting_t hinting;
char *default_font;
@@ -2742,10 +2743,11 @@ void ass_set_use_margins(ass_renderer_t *priv, int use)
priv->settings.use_margins = use;
}
-void ass_set_aspect_ratio(ass_renderer_t *priv, double ar)
+void ass_set_aspect_ratio(ass_renderer_t *priv, double ar, double par)
{
- if (priv->settings.aspect != ar) {
+ if (priv->settings.aspect != ar || priv->settings.pixel_ratio != par) {
priv->settings.aspect = ar;
+ priv->settings.pixel_ratio = par;
ass_reconfigure(priv);
}
}
@@ -2840,7 +2842,9 @@ ass_start_frame(ass_renderer_t *render_priv, ass_track_t *track,
else
render_priv->border_scale = 1.;
- render_priv->font_scale_x = 1.;
+ // PAR correction
+ render_priv->font_scale_x = render_priv->settings.aspect /
+ render_priv->settings.pixel_ratio;
render_priv->prev_images_root = render_priv->images_root;
render_priv->images_root = 0;