From: Derk-Jan Hartman Date: Thu, 11 Sep 2008 23:56:50 +0000 (+0200) Subject: zvbi: Fix transparent background when background != black X-Git-Tag: 1.0.0-pre1~3337 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=a112656431a233a3bf58591cd32a7bb589418206;p=vlc zvbi: Fix transparent background when background != black --- diff --git a/modules/codec/zvbi.c b/modules/codec/zvbi.c index b271fc090c..fecac215e2 100644 --- a/modules/codec/zvbi.c +++ b/modules/codec/zvbi.c @@ -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; }