summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author11rcombs <rodger.combs@gmail.com>2014-01-25 23:14:06 -0600
committer11rcombs <rodger.combs@gmail.com>2014-01-25 23:21:25 -0600
commit0270668b51a37e7632a79fee22cb783bfce71571 (patch)
tree7fe7599559f61e552f03f12810b286264a468e7b
parent33492cb5759413d4229f02fd8998926e9b11f3cb (diff)
downloadlibass-0270668b51a37e7632a79fee22cb783bfce71571.tar.bz2
libass-0270668b51a37e7632a79fee22cb783bfce71571.tar.xz
Make apply_blur and make_shadow_bitmap static; remove an unneeded local variable
-rw-r--r--libass/ass_render.c186
-rw-r--r--libass/ass_render.h2
2 files changed, 92 insertions, 96 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c
index 3954c5b..d299f1b 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -1691,6 +1691,98 @@ static int is_new_bm_run(GlyphInfo *info, GlyphInfo *last)
return 0;
}
+static void apply_blur(CombinedBitmapInfo *info, ASS_Renderer *render_priv)
+{
+ int be = info->be;
+ double blur_radius = info->blur * render_priv->blur_scale * 2;
+ ASS_SynthPriv *priv_blur = render_priv->synth_priv;
+ Bitmap *bm_g = info->bm;
+ Bitmap *bm_o = info->bm_o;
+ int border_style = info->border_style;
+
+ if(blur_radius > 0.0 || be){
+ if (bm_o)
+ resize_tmp(priv_blur, bm_o->w, bm_o->h);
+ if (!bm_o || border_style == 3)
+ resize_tmp(priv_blur, bm_g->w, bm_g->h);
+ }
+
+ // Apply box blur (multiple passes, if requested)
+ if (be) {
+ uint16_t* tmp = (uint16_t*)(((uintptr_t)priv_blur->tmp + 0x0F) & ~0x0F);
+ if (bm_o) {
+ unsigned passes = be;
+ unsigned w = bm_o->w;
+ unsigned h = bm_o->h;
+ unsigned stride = bm_o->stride;
+ unsigned char *buf = bm_o->buffer;
+ if(w && h){
+ while(passes--){
+ memset(tmp, 0, stride * 2);
+ if(w < 16){
+ be_blur_c(buf, w, h, stride, tmp);
+ }else{
+ render_priv->be_blur_func(buf, w, h, stride, tmp);
+ }
+ }
+ }
+ }
+ if (!bm_o || border_style == 3) {
+ unsigned passes = be;
+ unsigned w = bm_g->w;
+ unsigned h = bm_g->h;
+ unsigned stride = bm_g->stride;
+ unsigned char *buf = bm_g->buffer;
+ if(w && h){
+ while(passes--){
+ memset(tmp, 0, stride * 2);
+ render_priv->be_blur_func(buf, w, h, stride, tmp);
+ }
+ }
+ }
+ }
+
+ // Apply gaussian blur
+ if (blur_radius > 0.0) {
+ generate_tables(priv_blur, blur_radius);
+ if (bm_o)
+ ass_gauss_blur(bm_o->buffer, priv_blur->tmp,
+ bm_o->w, bm_o->h, bm_o->stride,
+ priv_blur->gt2, priv_blur->g_r,
+ priv_blur->g_w);
+ if (!bm_o || border_style == 3)
+ ass_gauss_blur(bm_g->buffer, priv_blur->tmp,
+ bm_g->w, bm_g->h, bm_g->stride,
+ priv_blur->gt2, priv_blur->g_r,
+ priv_blur->g_w);
+ }
+}
+
+static void make_shadow_bitmap(CombinedBitmapInfo *info)
+{
+ // VSFilter compatibility: invisible fill and no border?
+ // In this case no shadow is supposed to be rendered.
+ if (!info->has_border && (info->c[0] & 0xFF) == 0xFF) {
+ return;
+ }
+
+ // Create shadow and fix outline as needed
+ if (info->bm_o && info->border_style != 3) {
+ info->bm_s = copy_bitmap(info->bm_o);
+ fix_outline(info->bm, info->bm_o);
+ } else if (info->bm_o && (info->border_x || info->border_y)) {
+ info->bm_s = copy_bitmap(info->bm_o);
+ } else if (info->bm_o) {
+ info->bm_s = info->bm_o;
+ info->bm_o = 0;
+ } else
+ info->bm_s = copy_bitmap(info->bm);
+
+ assert(info->bm_s);
+
+ shift_bitmap(info->bm_s, info->shadow_x, info->shadow_y);
+}
+
/**
* \brief Main ass rendering function, glues everything together
* \param event event to render
@@ -2464,100 +2556,6 @@ static void check_cache_limits(ASS_Renderer *priv, CacheStore *cache)
}
}
-void apply_blur(CombinedBitmapInfo *info, ASS_Renderer *render_priv)
-{
- int be = info->be;
- double blur_radius = info->blur * render_priv->blur_scale * 2;
- ASS_SynthPriv *priv_blur = render_priv->synth_priv;
- Bitmap *bm_g = info->bm;
- Bitmap *bm_o = info->bm_o;
- int border_style = info->border_style;
-
- if(blur_radius > 0.0 || be){
- if (bm_o)
- resize_tmp(priv_blur, bm_o->w, bm_o->h);
- if (!bm_o || border_style == 3)
- resize_tmp(priv_blur, bm_g->w, bm_g->h);
- }
-
- // Apply box blur (multiple passes, if requested)
- if (be) {
- uint16_t* tmp = (uint16_t*)(((uintptr_t)priv_blur->tmp + 0x0F) & ~0x0F);
- if (bm_o) {
- unsigned passes = be;
- unsigned w = bm_o->w;
- unsigned h = bm_o->h;
- unsigned stride = bm_o->stride;
- unsigned char *buf = bm_o->buffer;
- if(w && h){
- while(passes--){
- memset(tmp, 0, stride * 2);
- if(w < 16){
- be_blur_c(buf, w, h, stride, tmp);
- }else{
- render_priv->be_blur_func(buf, w, h, stride, tmp);
- }
- }
- }
- }
- if (!bm_o || border_style == 3) {
- unsigned passes = be;
- unsigned w = bm_g->w;
- unsigned h = bm_g->h;
- unsigned stride = bm_g->stride;
- unsigned char *buf = bm_g->buffer;
- if(w && h){
- while(passes--){
- memset(tmp, 0, stride * 2);
- render_priv->be_blur_func(buf, w, h, stride, tmp);
- }
- }
- }
- }
-
- // Apply gaussian blur
- if (blur_radius > 0.0) {
- generate_tables(priv_blur, blur_radius);
- if (bm_o)
- ass_gauss_blur(bm_o->buffer, priv_blur->tmp,
- bm_o->w, bm_o->h, bm_o->stride,
- priv_blur->gt2, priv_blur->g_r,
- priv_blur->g_w);
- if (!bm_o || border_style == 3)
- ass_gauss_blur(bm_g->buffer, priv_blur->tmp,
- bm_g->w, bm_g->h, bm_g->stride,
- priv_blur->gt2, priv_blur->g_r,
- priv_blur->g_w);
- }
-}
-
-void make_shadow_bitmap(CombinedBitmapInfo *info)
-{
-
- // VSFilter compatibility: invisible fill and no border?
- // In this case no shadow is supposed to be rendered.
- if (!info->has_border && (info->c[0] & 0xFF) == 0xFF) {
- return;
- }
-
- int border_style = info->border_style;
- // Create shadow and fix outline as needed
- if (info->bm_o && border_style != 3) {
- info->bm_s = copy_bitmap(info->bm_o);
- fix_outline(info->bm, info->bm_o);
- } else if (info->bm_o && (info->border_x || info->border_y)) {
- info->bm_s = copy_bitmap(info->bm_o);
- } else if (info->bm_o) {
- info->bm_s = info->bm_o;
- info->bm_o = 0;
- } else
- info->bm_s = copy_bitmap(info->bm);
-
- assert(info->bm_s);
-
- shift_bitmap(info->bm_s, info->shadow_x, info->shadow_y);
-}
-
/**
* \brief Start a new frame
*/
diff --git a/libass/ass_render.h b/libass/ass_render.h
index 52c5855..6552aeb 100644
--- a/libass/ass_render.h
+++ b/libass/ass_render.h
@@ -379,8 +379,6 @@ typedef struct {
void reset_render_context(ASS_Renderer *render_priv, ASS_Style *style);
void ass_free_images(ASS_Image *img);
-void make_shadow_bitmap(CombinedBitmapInfo* info);
-void apply_blur(CombinedBitmapInfo* info, ASS_Renderer *render_priv);
// XXX: this is actually in ass.c, includes should be fixed later on
void ass_lazy_track_init(ASS_Library *lib, ASS_Track *track);