summaryrefslogtreecommitdiffstats
path: root/libass/ass_render.c
diff options
context:
space:
mode:
authorDr.Smile <vabnick@gmail.com>2015-07-04 22:39:26 +0300
committerDr.Smile <vabnick@gmail.com>2015-07-04 22:39:26 +0300
commitd787615845d78d8f8e6d1a4ffc3dc3eecd8a92f6 (patch)
tree24c6eafef192fbb0755bd514554d81d456068726 /libass/ass_render.c
parentc7bfc62080728a5863e600ecc9df614ba28a40cf (diff)
downloadlibass-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.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c
index 0995b96..42758c8 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);