diff options
author | Dr.Smile <vabnick@gmail.com> | 2021-09-26 05:06:54 +0300 |
---|---|---|
committer | Dr.Smile <vabnick@gmail.com> | 2021-09-26 17:13:07 +0300 |
commit | 813237b76e3219294a87160407d51932e53d5721 (patch) | |
tree | 093268e0dace26d43e8f68342b65bfb9bf8d0e7a /libass/ass_func_template.h | |
parent | 4c3ace7cdcc740652331dbd57cc500b4ad50be81 (diff) | |
download | libass-813237b76e3219294a87160407d51932e53d5721.tar.bz2 libass-813237b76e3219294a87160407d51932e53d5721.tar.xz |
rasterizer: use max-blending for outline pair merge
Max-blending is more correct than previous addition-blending
in case of small (less than pixel) outline offsets.
Fixes buffer overrun (up to 16 bytes read past rst->tile)
in add_bitmaps() in case of engine->tile_order < engine->align_order
(AVX2 assembly with LARGE_TILES disabled) due to insufficient padding.
Diffstat (limited to 'libass/ass_func_template.h')
-rw-r--r-- | libass/ass_func_template.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libass/ass_func_template.h b/libass/ass_func_template.h index 3556a76..c1ea12a 100644 --- a/libass/ass_func_template.h +++ b/libass/ass_func_template.h @@ -30,6 +30,8 @@ void DECORATE(fill_generic_tile16)(uint8_t *buf, ptrdiff_t stride, void DECORATE(fill_generic_tile32)(uint8_t *buf, ptrdiff_t stride, const struct segment *line, size_t n_lines, int winding); +void DECORATE(merge_tile16)(uint8_t *buf, ptrdiff_t stride, const uint8_t *tile); +void DECORATE(merge_tile32)(uint8_t *buf, ptrdiff_t stride, const uint8_t *tile); void DECORATE(add_bitmaps)(uint8_t *dst, intptr_t dst_stride, uint8_t *src, intptr_t src_stride, @@ -97,11 +99,13 @@ const BitmapEngine DECORATE(bitmap_engine) = { .fill_solid = DECORATE(fill_solid_tile32), .fill_halfplane = DECORATE(fill_halfplane_tile32), .fill_generic = DECORATE(fill_generic_tile32), + .merge_tile = DECORATE(merge_tile32), #else .tile_order = 4, .fill_solid = DECORATE(fill_solid_tile16), .fill_halfplane = DECORATE(fill_halfplane_tile16), .fill_generic = DECORATE(fill_generic_tile16), + .merge_tile = DECORATE(merge_tile16), #endif .add_bitmaps = DECORATE(add_bitmaps), |