Commit e07d5bbb authored by Kaarlo Raiha's avatar Kaarlo Raiha Committed by Rémi Denis-Courmont

add option to disable dvd subtitle transparency to spudec

Signed-off-by: default avatarRémi Denis-Courmont <remi@remlab.net>
parent d2edbc8e
...@@ -293,11 +293,14 @@ static int ParseControlSeq( decoder_t *p_dec, subpicture_t *p_spu, ...@@ -293,11 +293,14 @@ static int ParseControlSeq( decoder_t *p_dec, subpicture_t *p_spu,
return VLC_EGENERIC; return VLC_EGENERIC;
} }
b_cmd_alpha = true; if(!p_sys->b_disabletrans)
spu_data_cmd.pi_alpha[3] = (p_sys->buffer[i_index+1]>>4)&0x0f; { /* If we want to use original transparency values */
spu_data_cmd.pi_alpha[2] = (p_sys->buffer[i_index+1])&0x0f; b_cmd_alpha = true;
spu_data_cmd.pi_alpha[1] = (p_sys->buffer[i_index+2]>>4)&0x0f; spu_data_cmd.pi_alpha[3] = (p_sys->buffer[i_index+1]>>4)&0x0f;
spu_data_cmd.pi_alpha[0] = (p_sys->buffer[i_index+2])&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; i_index += 3;
break; break;
...@@ -464,7 +467,7 @@ static int ParseRLE( decoder_t *p_dec, ...@@ -464,7 +467,7 @@ static int ParseRLE( decoder_t *p_dec,
bool b_empty_top = true; bool b_empty_top = true;
unsigned int i_skipped_top = 0, i_skipped_bottom = 0; unsigned int i_skipped_top = 0, i_skipped_bottom = 0;
unsigned int i_transparent_code = 0; unsigned int i_transparent_code = 0;
/* Colormap statistics */ /* Colormap statistics */
int i_border = -1; int i_border = -1;
int stats[4]; stats[0] = stats[1] = stats[2] = stats[3] = 0; int stats[4]; stats[0] = stats[1] = stats[2] = stats[3] = 0;
...@@ -613,7 +616,7 @@ static int ParseRLE( decoder_t *p_dec, ...@@ -613,7 +616,7 @@ static int ParseRLE( decoder_t *p_dec,
p_spu->i_width, i_height, p_spu->i_x, i_y ); p_spu->i_width, i_height, p_spu->i_x, i_y );
#endif #endif
} }
/* Handle color if no palette was found */ /* Handle color if no palette was found */
if( !p_spu_data->b_palette ) if( !p_spu_data->b_palette )
{ {
......
...@@ -42,6 +42,10 @@ static int DecoderOpen ( vlc_object_t * ); ...@@ -42,6 +42,10 @@ static int DecoderOpen ( vlc_object_t * );
static int PacketizerOpen( vlc_object_t * ); static int PacketizerOpen( vlc_object_t * );
static void Close ( 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 () vlc_module_begin ()
set_description( N_("DVD subtitles decoder") ) set_description( N_("DVD subtitles decoder") )
set_capability( "decoder", 50 ) set_capability( "decoder", 50 )
...@@ -49,6 +53,8 @@ vlc_module_begin () ...@@ -49,6 +53,8 @@ vlc_module_begin ()
set_subcategory( SUBCAT_INPUT_SCODEC ) set_subcategory( SUBCAT_INPUT_SCODEC )
set_callbacks( DecoderOpen, Close ) set_callbacks( DecoderOpen, Close )
add_bool( "dvdsub-transparency", false, NULL,
DVDSUBTRANS_DISABLE_TEXT, DVDSUBTRANS_DISABLE_LONGTEXT, true )
add_submodule () add_submodule ()
set_description( N_("DVD subtitles packetizer") ) set_description( N_("DVD subtitles packetizer") )
set_capability( "packetizer", 50 ) set_capability( "packetizer", 50 )
...@@ -79,6 +85,7 @@ static int DecoderOpen( vlc_object_t *p_this ) ...@@ -79,6 +85,7 @@ static int DecoderOpen( vlc_object_t *p_this )
p_dec->p_sys = p_sys = malloc( sizeof( decoder_sys_t ) ); p_dec->p_sys = p_sys = malloc( sizeof( decoder_sys_t ) );
p_sys->b_packetizer = false; 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_size = 0;
p_sys->i_spu = 0; p_sys->i_spu = 0;
p_sys->p_block = NULL; p_sys->p_block = NULL;
......
...@@ -25,7 +25,8 @@ ...@@ -25,7 +25,8 @@
struct decoder_sys_t struct decoder_sys_t
{ {
int b_packetizer; bool b_packetizer;
bool b_disabletrans;
mtime_t i_pts; mtime_t i_pts;
unsigned int i_spu_size; unsigned int i_spu_size;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment