]> git.sesse.net Git - vlc/commitdiff
Patch by Soren Bog <avacore@videolan.org> from GSoC: Overlay - Add alpha component...
authorJean-Paul Saman <jean-paul.saman@m2x.nl>
Thu, 28 Feb 2008 10:31:45 +0000 (11:31 +0100)
committerJean-Paul Saman <jean-paul.saman@m2x.nl>
Wed, 9 Apr 2008 08:34:45 +0000 (10:34 +0200)
include/vlc_vout.h
src/video_output/vout_subpictures.c

index 30baf2517827185f3b73f55ae10d33f482ed1e96..4548c503b422639529601a8b8910faab5bc588e4 100644 (file)
@@ -211,6 +211,7 @@ struct subpicture_region_t
     int             i_x;                             /**< position of region */
     int             i_y;                             /**< position of region */
     int             i_align;                  /**< alignment within a region */
+    int             i_alpha;                               /**< transparency */
 
     char            *psz_text;       /**< text string comprising this region */
     char            *psz_html;       /**< HTML version of subtitle (NULL = use psz_text) */
index 9dccc5324d81c405a4e91f76909d401cbac2eaa9..c814964b211539cb7b86f79faa0caea80851763e 100644 (file)
@@ -291,6 +291,7 @@ subpicture_region_t *__spu_CreateRegion( vlc_object_t *p_this,
     if( !p_region ) return NULL;
 
     memset( p_region, 0, sizeof(subpicture_region_t) );
+    p_region->i_alpha = 0xff
     p_region->p_next = NULL;
     p_region->p_cache = NULL;
     p_region->fmt = *p_fmt;
@@ -336,6 +337,7 @@ subpicture_region_t *__spu_MakeRegion( vlc_object_t *p_this,
     (void)p_this;
     if( !p_region ) return NULL;
     memset( p_region, 0, sizeof(subpicture_region_t) );
+    p_region->i_alpha = 0xff;
     p_region->p_next = 0;
     p_region->p_cache = 0;
     p_region->fmt = *p_fmt;
@@ -901,6 +903,7 @@ void spu_RenderSubpictures( spu_t *p_spu, video_format_t *p_fmt,
                 p_region->p_cache->i_x = p_region->i_x * pi_scale_width[ i_scale_idx ] / 1000;
                 p_region->p_cache->i_y = p_region->i_y * pi_scale_height[ i_scale_idx ] / 1000;
                 p_region->p_cache->i_align = p_region->i_align;
+                p_region->p_cache->i_alpha = p_region->i_alpha;
 
                 p_pic = p_spu->p_scale->pf_video_filter(
                                  p_spu->p_scale, &p_region->p_cache->picture );
@@ -1060,7 +1063,7 @@ void spu_RenderSubpictures( spu_t *p_spu, video_format_t *p_fmt,
                 {
                     p_spu->p_blend->pf_video_blend( p_spu->p_blend, p_pic_dst,
                         p_pic_src, &p_region->picture, i_x_offset, i_y_offset,
-                        i_fade_alpha * p_subpic->i_alpha / 255 );
+                        i_fade_alpha * p_subpic->i_alpha * p_region->i_alpha / 65025 );
                 }
                 else
                 {