diff options
author | wm4 <wm4@nowhere> | 2013-06-03 23:00:39 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-06-03 23:00:39 +0200 |
commit | f3871193fcfc5feaee42c883496fa5f8f99eb4f5 (patch) | |
tree | 424653d02ca21c19b793a34db5b37f5643bab4d0 /sub/sd_microdvd.c | |
parent | 61dfe121791adf953386642844cd9258ba99f179 (diff) | |
download | mpv-f3871193fcfc5feaee42c883496fa5f8f99eb4f5.tar.bz2 mpv-f3871193fcfc5feaee42c883496fa5f8f99eb4f5.tar.xz |
sd_srt, sd_microdvd: set ASS script resolution
Both converters can output \pos and deal with font sizes, so they assume
a specific script resolution (PlayResX/PlayResY). The implicit
assumption was that a specific resolution was guaranteed. The
MP_ASS_FONT_PLAYRESY constant is connected to this.
Better make it explicit, so that the implicit dependency on
MP_ASS_FONT_PLAYRESY is removed. (Unfortunately, libavcodec sub
converters still don't set PlayResX/PlayResY explicitly, so the value
set by that constant can't be declared as arbitrary yet.)
PlayResY=288 is most likely the SSA natural script resolution (or
something like this?), as well as the libass and VSFilter default.
PlayResX=384 is the fallback value set by libass if PlayResY is set to
288, and PlayResX is unset.
Diffstat (limited to 'sub/sd_microdvd.c')
-rw-r--r-- | sub/sd_microdvd.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sub/sd_microdvd.c b/sub/sd_microdvd.c index adf8679676..81c8ef92c8 100644 --- a/sub/sd_microdvd.c +++ b/sub/sd_microdvd.c @@ -309,6 +309,12 @@ static void convert_microdvd(const char *orig, char *dest, int dest_buffer_size) new_line.buf[new_line.len] = 0; } +static const char *microdvd_ass_extradata = + "[Script Info]\n" + "ScriptType: v4.00+\n" + "PlayResX: 384\n" + "PlayResY: 288\n"; + static bool supports_format(const char *format) { return format && strcmp(format, "microdvd") == 0; @@ -317,6 +323,8 @@ static bool supports_format(const char *format) static int init(struct sd *sd) { sd->output_codec = "ass-text"; + sd->output_extradata = (char *)microdvd_ass_extradata; + sd->output_extradata_len = strlen(sd->output_extradata); return 0; } |