diff options
Diffstat (limited to 'sub/ass_mp.c')
-rw-r--r-- | sub/ass_mp.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sub/ass_mp.c b/sub/ass_mp.c index 45328fb920..3e9f83313f 100644 --- a/sub/ass_mp.c +++ b/sub/ass_mp.c @@ -132,9 +132,12 @@ static void message_callback(int level, const char *format, va_list va, void *ct mp_msg(log, level, "\n"); } -ASS_Library *mp_ass_init(struct mpv_global *global, struct mp_log *log) +ASS_Library *mp_ass_init(struct mpv_global *global, + struct osd_style_opts *opts, struct mp_log *log) { - char *path = mp_find_config_file(NULL, global, "fonts"); + char *path = opts->fonts_dir && opts->fonts_dir[0] ? + mp_get_user_path(NULL, global, opts->fonts_dir) : + mp_find_config_file(NULL, global, "fonts"); mp_dbg(log, "ASS library version: 0x%x (runtime 0x%x)\n", (unsigned)LIBASS_VERSION, ass_library_version()); ASS_Library *priv = ass_library_init(); @@ -285,7 +288,7 @@ static bool pack_rgba(struct mp_ass_packer *p, struct sub_bitmaps *res) struct sub_bitmaps imgs = { .change_id = res->change_id, - .format = SUBBITMAP_RGBA, + .format = SUBBITMAP_BGRA, .parts = p->rgba_imgs, .num_parts = num_bb, }; @@ -338,10 +341,10 @@ static bool pack_rgba(struct mp_ass_packer *p, struct sub_bitmaps *res) // repacks all images). preferred_osd_format can be set to a desired // sub_bitmap_format. Currently, only SUBBITMAP_LIBASS is supported. void mp_ass_packer_pack(struct mp_ass_packer *p, ASS_Image **image_lists, - int num_image_lists, bool image_lists_changed, + int num_image_lists, bool image_lists_changed, bool video_color_space, int preferred_osd_format, struct sub_bitmaps *out) { - int format = preferred_osd_format == SUBBITMAP_RGBA ? SUBBITMAP_RGBA + int format = preferred_osd_format == SUBBITMAP_BGRA ? SUBBITMAP_BGRA : SUBBITMAP_LIBASS; if (p->cached_subs_valid && !image_lists_changed && @@ -358,6 +361,7 @@ void mp_ass_packer_pack(struct mp_ass_packer *p, ASS_Image **image_lists, .change_id = image_lists_changed, .format = SUBBITMAP_LIBASS, .parts = p->cached_parts, + .video_color_space = video_color_space, }; for (int n = 0; n < num_image_lists; n++) { @@ -379,7 +383,7 @@ void mp_ass_packer_pack(struct mp_ass_packer *p, ASS_Image **image_lists, } bool r = false; - if (format == SUBBITMAP_RGBA) { + if (format == SUBBITMAP_BGRA) { r = pack_rgba(p, &res); } else { r = pack_libass(p, &res); |