Skip to content
Snippets Groups Projects
Commit 02ba1230 authored by Oneric's avatar Oneric Committed by Jean-Baptiste Kempf
Browse files

codec: libass: pass storage size to libass

Due to a quirk in the ASS format some tags do depend on the exact
storage size of the video not just the pixel aspect ratio, so tell
libass via ass_set_storage_size to achieve correct rendering.

For ASS, storage size refers to the size the video is encoded in (stored
at) with codec-level crop applied; further transforms like e.g.
anamorphic de-squeezing or container-level crop must not be applied.
This matches the used fmt_src values despite them being named
visible_{width,height} and the existing PAR calculation already relies
on this.

Fixes videolan/vlc#26634

(cherry picked from commit 2608eb5c)
parent 4e17d578
No related branches found
No related tags found
2 merge requests!3533Backport MR 3236 to 3.0.x,!1738[3.0 backport] codec: libass: pass storage size to libass
Pipeline #209656 passed with stage
in 15 minutes and 43 seconds
......@@ -440,6 +440,9 @@ static int SubpictureValidate( subpicture_t *p_subpic,
if( b_fmt_src || b_fmt_dst )
{
ass_set_frame_size( p_sys->p_renderer, fmt.i_visible_width, fmt.i_visible_height );
#if LIBASS_VERSION > 0x01010000
ass_set_storage_size( p_sys->p_renderer, p_fmt_src->i_visible_width, p_fmt_src->i_visible_height );
#endif
const double src_ratio = (double)p_fmt_src->i_visible_width / p_fmt_src->i_visible_height;
const double dst_ratio = (double)p_fmt_dst->i_visible_width / p_fmt_dst->i_visible_height;
ass_set_aspect_ratio( p_sys->p_renderer, dst_ratio / src_ratio, 1 );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment