summaryrefslogtreecommitdiffstats
path: root/sub
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-10-25 19:37:47 +0200
committerwm4 <wm4@nowhere>2012-10-28 15:31:32 +0100
commit65b313a8b0b1a97f7d51f1fec4517adaa9334aa3 (patch)
treecd2bdff738502c6603675b44ee7ac7322a1aa99d /sub
parent18d4eebedb7f80493da87f8506ff0b2db796510a (diff)
downloadmpv-65b313a8b0b1a97f7d51f1fec4517adaa9334aa3.tar.bz2
mpv-65b313a8b0b1a97f7d51f1fec4517adaa9334aa3.tar.xz
draw_bmp, csputils: use function instead of macro
Diffstat (limited to 'sub')
-rw-r--r--sub/draw_bmp.c25
-rw-r--r--sub/spudec.c6
2 files changed, 7 insertions, 24 deletions
diff --git a/sub/draw_bmp.c b/sub/draw_bmp.c
index 120e581af8..4740bec6c1 100644
--- a/sub/draw_bmp.c
+++ b/sub/draw_bmp.c
@@ -281,13 +281,8 @@ static void draw_ass(struct mp_draw_sub_cache **cache, struct mp_rect bb,
struct mp_image *temp, int bits, struct mp_csp_details *csp,
struct sub_bitmaps *sbs)
{
- struct mp_csp_params cspar = {
- .colorspace = *csp,
- .brightness = 0, .contrast = 1,
- .hue = 0, .saturation = 1,
- .rgamma = 1, .ggamma = 1, .bgamma = 1,
- .texture_bits = 8, .input_bits = 8
- };
+ struct mp_csp_params cspar = MP_CSP_PARAMS_DEFAULTS;
+ cspar.colorspace = *csp;
float yuv2rgb[3][4], rgb2yuv[3][4];
mp_get_yuv2rgb_coeffs(&cspar, yuv2rgb);
@@ -305,20 +300,8 @@ 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[4];
- color_yuv[0] =
- rint(MP_MAP_RGB2YUV_COLOR(rgb2yuv, r, g, b, 255, 0)
- * (1 << (bits - 8)));
- color_yuv[1] =
- rint(MP_MAP_RGB2YUV_COLOR(rgb2yuv, r, g, b, 255, 1)
- * (1 << (bits - 8)));
- color_yuv[2] =
- rint(MP_MAP_RGB2YUV_COLOR(rgb2yuv, r, g, b, 255, 2)
- * (1 << (bits - 8)));
- // NOTE: these overflows can actually happen (when subtitles use color
- // 0,0,0 while output levels only allows 16,16,16 upwards...)
- for (int i = 0; i < 3; i++)
- color_yuv[i] = av_clip(color_yuv[i], 0, ((1 << bits) - 1));
+ int color_yuv[3] = {r, g, b};
+ mp_map_color(rgb2yuv, bits, color_yuv);
int bytes = (bits + 7) / 8;
uint8_t *alpha_p = (uint8_t *)sb->bitmap + src_y * sb->stride + src_x;
diff --git a/sub/spudec.c b/sub/spudec.c
index 84b4113251..3f9e5d701a 100644
--- a/sub/spudec.c
+++ b/sub/spudec.c
@@ -198,10 +198,10 @@ static void setup_palette(spudec_handle_t *spu, uint32_t palette[256])
alpha = 0;
int color = spu->custom ? spu->cuspal[i] :
spu->global_palette[spu->palette[i]];
- uint8_t c[3] = {(color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff};
- mp_map_color(cmatrix, c);
+ int c[3] = {(color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff};
+ mp_map_color(cmatrix, 8, c);
// R and G swapped, possibly due to vobsub_palette_to_yuv()
- palette[i] = (alpha << 24) | (c[2] << 16) | (c[1] << 8) | c[0];
+ palette[i] = (alpha << 24u) | (c[2] << 16) | (c[1] << 8) | c[0];
}
}