[vlc-devel] commit: add option to disable dvd subtitle transparency to spudec ( Kaarlo Raiha )
git version control
git at videolan.org
Sat Jan 23 15:26:32 CET 2010
vlc | branch: master | Kaarlo Raiha <kaarlo.raiha at tut.fi> | Sat Jan 23 15:58:50 2010 +0200| [e07d5bbb42bc96203220dd97e37447d3f5ddfb54] | committer: Rémi Denis-Courmont
add option to disable dvd subtitle transparency to spudec
Signed-off-by: Rémi Denis-Courmont <remi at remlab.net>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e07d5bbb42bc96203220dd97e37447d3f5ddfb54
---
modules/codec/spudec/parse.c | 17 ++++++++++-------
modules/codec/spudec/spudec.c | 7 +++++++
modules/codec/spudec/spudec.h | 3 ++-
3 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/modules/codec/spudec/parse.c b/modules/codec/spudec/parse.c
index 5c2bc30..6fc4a4d 100644
--- a/modules/codec/spudec/parse.c
+++ b/modules/codec/spudec/parse.c
@@ -293,11 +293,14 @@ static int ParseControlSeq( decoder_t *p_dec, subpicture_t *p_spu,
return VLC_EGENERIC;
}
- b_cmd_alpha = true;
- spu_data_cmd.pi_alpha[3] = (p_sys->buffer[i_index+1]>>4)&0x0f;
- spu_data_cmd.pi_alpha[2] = (p_sys->buffer[i_index+1])&0x0f;
- spu_data_cmd.pi_alpha[1] = (p_sys->buffer[i_index+2]>>4)&0x0f;
- spu_data_cmd.pi_alpha[0] = (p_sys->buffer[i_index+2])&0x0f;
+ if(!p_sys->b_disabletrans)
+ { /* If we want to use original transparency values */
+ b_cmd_alpha = true;
+ spu_data_cmd.pi_alpha[3] = (p_sys->buffer[i_index+1]>>4)&0x0f;
+ spu_data_cmd.pi_alpha[2] = (p_sys->buffer[i_index+1])&0x0f;
+ spu_data_cmd.pi_alpha[1] = (p_sys->buffer[i_index+2]>>4)&0x0f;
+ spu_data_cmd.pi_alpha[0] = (p_sys->buffer[i_index+2])&0x0f;
+ }
i_index += 3;
break;
@@ -464,7 +467,7 @@ static int ParseRLE( decoder_t *p_dec,
bool b_empty_top = true;
unsigned int i_skipped_top = 0, i_skipped_bottom = 0;
unsigned int i_transparent_code = 0;
-
+
/* Colormap statistics */
int i_border = -1;
int stats[4]; stats[0] = stats[1] = stats[2] = stats[3] = 0;
@@ -613,7 +616,7 @@ static int ParseRLE( decoder_t *p_dec,
p_spu->i_width, i_height, p_spu->i_x, i_y );
#endif
}
-
+
/* Handle color if no palette was found */
if( !p_spu_data->b_palette )
{
diff --git a/modules/codec/spudec/spudec.c b/modules/codec/spudec/spudec.c
index 61bbd6a..6b63100 100644
--- a/modules/codec/spudec/spudec.c
+++ b/modules/codec/spudec/spudec.c
@@ -42,6 +42,10 @@ static int DecoderOpen ( vlc_object_t * );
static int PacketizerOpen( vlc_object_t * );
static void Close ( vlc_object_t * );
+#define DVDSUBTRANS_DISABLE_TEXT N_("Disable DVD subtitle transparency")
+#define DVDSUBTRANS_DISABLE_LONGTEXT N_("Removes all transparency effects " \
+ "used in DVD subtitles.")
+
vlc_module_begin ()
set_description( N_("DVD subtitles decoder") )
set_capability( "decoder", 50 )
@@ -49,6 +53,8 @@ vlc_module_begin ()
set_subcategory( SUBCAT_INPUT_SCODEC )
set_callbacks( DecoderOpen, Close )
+ add_bool( "dvdsub-transparency", false, NULL,
+ DVDSUBTRANS_DISABLE_TEXT, DVDSUBTRANS_DISABLE_LONGTEXT, true )
add_submodule ()
set_description( N_("DVD subtitles packetizer") )
set_capability( "packetizer", 50 )
@@ -79,6 +85,7 @@ static int DecoderOpen( vlc_object_t *p_this )
p_dec->p_sys = p_sys = malloc( sizeof( decoder_sys_t ) );
p_sys->b_packetizer = false;
+ p_sys->b_disabletrans = var_InheritBool( p_dec, "dvdsub-transparency" );
p_sys->i_spu_size = 0;
p_sys->i_spu = 0;
p_sys->p_block = NULL;
diff --git a/modules/codec/spudec/spudec.h b/modules/codec/spudec/spudec.h
index 9e5b5fb..ce41420 100644
--- a/modules/codec/spudec/spudec.h
+++ b/modules/codec/spudec/spudec.h
@@ -25,7 +25,8 @@
struct decoder_sys_t
{
- int b_packetizer;
+ bool b_packetizer;
+ bool b_disabletrans;
mtime_t i_pts;
unsigned int i_spu_size;
More information about the vlc-devel
mailing list