diff options
Diffstat (limited to 'sub')
-rw-r--r-- | sub/draw_bmp.c | 9 | ||||
-rw-r--r-- | sub/sd_ass.c | 12 |
2 files changed, 9 insertions, 12 deletions
diff --git a/sub/draw_bmp.c b/sub/draw_bmp.c index 2093e5f9d1..0c12c7078a 100644 --- a/sub/draw_bmp.c +++ b/sub/draw_bmp.c @@ -290,8 +290,8 @@ static void draw_ass(struct mp_draw_sub_cache *cache, struct mp_rect bb, struct mp_csp_params cspar = MP_CSP_PARAMS_DEFAULTS; mp_csp_set_image_params(&cspar, &temp->params); cspar.levels_out = MP_CSP_LEVELS_PC; // RGB (libass.color) - cspar.int_bits_in = bits; - cspar.int_bits_out = 8; + cspar.input_bits = bits; + cspar.texture_bits = (bits + 7) / 8 * 8; struct mp_cmat yuv2rgb, rgb2yuv; bool need_conv = temp->fmt.flags & MP_IMGFLAG_YUV; @@ -312,9 +312,10 @@ static void draw_ass(struct mp_draw_sub_cache *cache, struct mp_rect bb, int g = (sb->libass.color >> 16) & 0xFF; int b = (sb->libass.color >> 8) & 0xFF; int a = 255 - (sb->libass.color & 0xFF); - int color_yuv[3] = {r, g, b}; + int color_yuv[3]; if (need_conv) { - mp_map_int_color(&rgb2yuv, bits, color_yuv); + int rgb[3] = {r, g, b}; + mp_map_fixp_color(&rgb2yuv, 8, rgb, cspar.texture_bits, color_yuv); } else { color_yuv[0] = g; color_yuv[1] = b; diff --git a/sub/sd_ass.c b/sub/sd_ass.c index 9e4da9a379..092b260677 100644 --- a/sub/sd_ass.c +++ b/sub/sd_ass.c @@ -667,8 +667,6 @@ static void mangle_colors(struct sd *sd, struct sub_bitmaps *parts) struct mp_csp_params vs_params = MP_CSP_PARAMS_DEFAULTS; vs_params.colorspace = csp; vs_params.levels_in = levels; - vs_params.int_bits_in = 8; - vs_params.int_bits_out = 8; struct mp_cmat vs_yuv2rgb, vs_rgb2yuv; mp_get_yuv2rgb_coeffs(&vs_params, &vs_yuv2rgb); mp_invert_yuv2rgb(&vs_rgb2yuv, &vs_yuv2rgb); @@ -677,8 +675,6 @@ static void mangle_colors(struct sd *sd, struct sub_bitmaps *parts) struct mp_csp_params rgb_params = MP_CSP_PARAMS_DEFAULTS; rgb_params.colorspace = params.colorspace; rgb_params.levels_in = params.colorlevels; - rgb_params.int_bits_in = 8; - rgb_params.int_bits_out = 8; struct mp_cmat vs2rgb; mp_get_yuv2rgb_coeffs(&rgb_params, &vs2rgb); @@ -689,9 +685,9 @@ static void mangle_colors(struct sd *sd, struct sub_bitmaps *parts) int g = (color >> 16u) & 0xff; int b = (color >> 8u) & 0xff; int a = 0xff - (color & 0xff); - int c[3] = {r, g, b}; - mp_map_int_color(&vs_rgb2yuv, 8, c); - mp_map_int_color(&vs2rgb, 8, c); - sb->libass.color = MP_ASS_RGBA(c[0], c[1], c[2], a); + int rgb[3] = {r, g, b}, yuv[3]; + mp_map_fixp_color(&vs_rgb2yuv, 8, rgb, 8, yuv); + mp_map_fixp_color(&vs2rgb, 8, yuv, 8, rgb); + sb->libass.color = MP_ASS_RGBA(rgb[0], rgb[1], rgb[2], a); } } |