From: Kaarlo Raiha Date: Sat, 23 Jan 2010 13:58:50 +0000 (+0200) Subject: add option to disable dvd subtitle transparency to spudec X-Git-Tag: 1.1.0-ff~1027 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=e07d5bbb42bc96203220dd97e37447d3f5ddfb54;p=vlc add option to disable dvd subtitle transparency to spudec Signed-off-by: RĂ©mi Denis-Courmont --- diff --git a/modules/codec/spudec/parse.c b/modules/codec/spudec/parse.c index 5c2bc30015..6fc4a4dee4 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 61bbd6acb7..6b63100bc6 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 9e5b5fbbc5..ce414200a0 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;