diff options
-rw-r--r-- | libass/ass.h | 2 | ||||
-rw-r--r-- | libass/ass_render.c | 10 |
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; |