]> git.sesse.net Git - vlc/commitdiff
zvbi: Fix transparent background when background != black
authorDerk-Jan Hartman <hartman@videolan.org>
Thu, 11 Sep 2008 23:56:50 +0000 (01:56 +0200)
committerDerk-Jan Hartman <hartman@videolan.org>
Fri, 12 Sep 2008 00:52:36 +0000 (02:52 +0200)
modules/codec/zvbi.c

index b271fc090cb804c50bc726c7961ed382d8b83841..fecac215e275658e4bb7454c273441b31f93dfe9 100644 (file)
@@ -571,26 +571,27 @@ static int OpaquePage( picture_t *p_src, const vbi_page p_page,
         for( x = 0; x < fmt.i_width; x++ )
         {
             const vbi_opacity opacity = p_page.text[ y/10 * p_page.columns + x/12 ].opacity;
+            const int background = p_page.text[ y/10 * p_page.columns + x/12 ].background;
             uint32_t *p_pixel = (uint32_t*)&p_src->p->p_pixels[y * p_src->p->i_pitch + 4*x];
+
             switch( opacity )
             {
             /* Show video instead of this character */
             case VBI_TRANSPARENT_SPACE:
                 *p_pixel = 0;
                 break;
+            /* Display foreground and background color */
             /* To make the boxed text "closed captioning" transparent
              * change true to false.
              */
             case VBI_OPAQUE:
+            /* alpha blend video into background color */
+            case VBI_SEMI_TRANSPARENT:
                 if( b_opaque )
                     break;
             /* Full text transparency. only foreground color is show */
             case VBI_TRANSPARENT_FULL:
-                *p_pixel = 0;
-                break;
-            /* Transparency for boxed text */
-            case VBI_SEMI_TRANSPARENT:
-                if( (*p_pixel) == 0xff000000 && 0 ) /* Disabled until someone implement borders */
+                if( (*p_pixel) == (0xff000000 | p_page.color_map[background] ) )
                     *p_pixel = 0;
                 break;
             }