From: Oneric <oneric@oneric.de> To: ffmpeg-devel@ffmpeg.org Cc: Oneric <oneric@oneric.de> Subject: [FFmpeg-devel] [PATCH] avfilter/vf_subtitles: pass storage size to libass Date: Mon, 14 Mar 2022 20:06:39 +0100 Message-ID: <20220314190638.24816-1-oneric@oneric.de> (raw) Due to a quirk of the ASS format some tags depend on the exact storage resolution of the video, so tell libass via ass_set_storage_size. --- ass_set_storage_size exists since libass 0.10.2; ffmpeg since 5.0 already requires 0.11.0. This resolution dependences of ASS was already recognised when the original_size parameter was added, but it actually goes farther than just the aspect ratio. Conveniently this parameter still has all the required information to retain rendering after resizing :) Sample files to show the difference can be found eg here https://code.videolan.org/videolan/vlc/uploads/b54e0761d0d3f4f79b2947ffb83a3b59/vlc-issue_libass-storage-size.tar.xz ./ffmpeg -i test_1080p.mkv -filter:v ass=./test_1080p.ass tmp_1080.mkv ./ffmpeg -i anamorphic_s720x576_d1024x576.mkv -filter:v ass=./anamorphic_s720x576_d1024x576.ass tmp_anam.mkv --- libavfilter/vf_subtitles.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libavfilter/vf_subtitles.c b/libavfilter/vf_subtitles.c index 3fc4eeb63d..af6352b315 100644 --- a/libavfilter/vf_subtitles.c +++ b/libavfilter/vf_subtitles.c @@ -146,9 +146,14 @@ static int config_input(AVFilterLink *inlink) ff_draw_init(&ass->draw, inlink->format, ass->alpha ? FF_DRAW_PROCESS_ALPHA : 0); ass_set_frame_size (ass->renderer, inlink->w, inlink->h); - if (ass->original_w && ass->original_h) + if (ass->original_w && ass->original_h) { ass_set_pixel_aspect(ass->renderer, (double)inlink->w / inlink->h / ((double)ass->original_w / ass->original_h)); + ass_set_storage_size(ass->renderer, ass->original_w, ass->original_h); + } else { + ass_set_storage_size(ass->renderer, inlink->w, inlink->h); + } + if (ass->shaping != -1) ass_set_shaper(ass->renderer, ass->shaping); -- 2.30.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next reply other threads:[~2022-03-14 19:07 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-03-14 19:06 Oneric [this message] 2022-03-14 19:35 ` Soft Works 2022-03-14 19:49 ` Oneric 2022-03-14 19:57 ` Soft Works 2022-03-14 20:07 ` Oneric 2022-03-14 20:21 ` Soft Works 2022-03-22 16:27 ` Oneric 2022-03-22 16:42 ` Soft Works 2022-03-22 16:45 ` James Almer 2022-03-23 20:26 ` Oneric
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220314190638.24816-1-oneric@oneric.de \ --to=oneric@oneric.de \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git