]> git.sesse.net Git - vlc/commitdiff
add option to disable dvd subtitle transparency to spudec
authorKaarlo Raiha <kaarlo.raiha@tut.fi>
Sat, 23 Jan 2010 13:58:50 +0000 (15:58 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sat, 23 Jan 2010 14:26:28 +0000 (16:26 +0200)
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
modules/codec/spudec/parse.c
modules/codec/spudec/spudec.c
modules/codec/spudec/spudec.h

index 5c2bc30015ce4e16d27593030df9a5ece926a882..6fc4a4dee441582772326ee2411676a2286ca5cc 100644 (file)
@@ -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 )
     {
index 61bbd6acb7295b7f2ec7a39460f54dac9388e369..6b63100bc6adfe6ad1451c4bca3b58d4dff7602a 100644 (file)
@@ -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;
index 9e5b5fbbc5af385e43374423d114b7bd4cb24aef..ce414200a03ee92c295ed4f42206a9e699bcbb49 100644 (file)
@@ -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;