diff options
author | Dr.Smile <vabnick@gmail.com> | 2015-07-04 22:39:26 +0300 |
---|---|---|
committer | Dr.Smile <vabnick@gmail.com> | 2015-07-04 22:39:26 +0300 |
commit | d787615845d78d8f8e6d1a4ffc3dc3eecd8a92f6 (patch) | |
tree | 24c6eafef192fbb0755bd514554d81d456068726 /libass/ass_render.c | |
parent | c7bfc62080728a5863e600ecc9df614ba28a40cf (diff) | |
download | libass-d787615845d78d8f8e6d1a4ffc3dc3eecd8a92f6.tar.bz2 libass-d787615845d78d8f8e6d1a4ffc3dc3eecd8a92f6.tar.xz |
Implement cascade gaussian blur
That's complete version with SSE2/AVX2 assembly.
Should be much faster than old algorithm even in pure C.
Algorithm description can be found in this article (PDF):
https://github.com/MrSmile/CascadeBlur/releases
Close #9
Diffstat (limited to 'libass/ass_render.c')
-rw-r--r-- | libass/ass_render.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c index 0995b96a..42758c89 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -58,8 +58,6 @@ ASS_Renderer *ass_renderer_init(ASS_Library *library) goto ass_init_exit; } - priv->synth_priv = ass_synth_init(BLUR_MAX_RADIUS); - priv->library = library; priv->ftlibrary = ft; // images_root and related stuff is zero-filled in calloc @@ -151,8 +149,6 @@ void ass_renderer_done(ASS_Renderer *render_priv) FT_Done_FreeType(render_priv->ftlibrary); if (render_priv->fontconfig_priv) fontconfig_done(render_priv->fontconfig_priv); - if (render_priv->synth_priv) - ass_synth_done(render_priv->synth_priv); ass_shaper_free(render_priv->shaper); free(render_priv->eimg); free(render_priv->text_info.glyphs); @@ -2277,10 +2273,7 @@ static void render_and_combine_glyphs(ASS_Renderer *render_priv, continue; } - int bbord = be_padding(info->filter.be); - int gbord = info->filter.blur > 0.0 ? FFMIN(info->filter.blur + 1, INT_MAX) : 0; - int bord = FFMAX(bbord, gbord); - + int bord = be_padding(info->filter.be); if (!bord && info->n_bm == 1) { for (int j = 0; j < info->bitmap_count; ++j) { if (!info->bitmaps[j].image->bm) @@ -2351,8 +2344,7 @@ static void render_and_combine_glyphs(ASS_Renderer *render_priv, } if(info->bm || info->bm_o){ - ass_synth_blur(render_priv->engine, - render_priv->synth_priv, info->filter.flags & FILTER_BORDER_STYLE_3, + ass_synth_blur(render_priv->engine, info->filter.flags & FILTER_BORDER_STYLE_3, info->filter.be, info->filter.blur, info->bm, info->bm_o); if (info->filter.flags & FILTER_DRAW_SHADOW) make_shadow_bitmap(info, render_priv); |