diff options
author | wm4 <wm4@nowhere> | 2014-05-10 10:38:47 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-05-10 10:44:16 +0200 |
commit | 3075ea01db452dd86c2e9422a6e61e67de264764 (patch) | |
tree | 682a06bd6ff52f26c94a73f7b83817de6d143dd5 /sub/sd_ass.c | |
parent | 485d033b5f72b9211c2910117ce82b520aea629b (diff) | |
download | mpv-3075ea01db452dd86c2e9422a6e61e67de264764.tar.bz2 mpv-3075ea01db452dd86c2e9422a6e61e67de264764.tar.xz |
sub: fix undefined behavior in ASS color calculation (2)
Same problem as previous commit, fix by using the MP_ASS_RGBA() macro.
Diffstat (limited to 'sub/sd_ass.c')
-rw-r--r-- | sub/sd_ass.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sub/sd_ass.c b/sub/sd_ass.c index 4ae7121bad..d29fefd277 100644 --- a/sub/sd_ass.c +++ b/sub/sd_ass.c @@ -446,10 +446,10 @@ static void mangle_colors(struct sd *sd, struct sub_bitmaps *parts) int r = (color >> 24u) & 0xff; int g = (color >> 16u) & 0xff; int b = (color >> 8u) & 0xff; - int a = color & 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 = (c[0] << 24u) | (c[1] << 16) | (c[2] << 8) | a; + sb->libass.color = MP_ASS_RGBA(c[0], c[1], c[2], a); } } |