]> git.sesse.net Git - vlc/commitdiff
Check to see if a particular subtitle channel is selected. All
authorRocky Bernstein <rocky@videolan.org>
Fri, 24 Dec 2004 11:42:55 +0000 (11:42 +0000)
committerRocky Bernstein <rocky@videolan.org>
Fri, 24 Dec 2004 11:42:55 +0000 (11:42 +0000)
subtitles languages were appearing overlayed. I guess some code got
left out in the recent conversion.

Set a category and subcategory.

modules/codec/svcdsub.c

index 0e6778aba55de453326abb18809501dc7ddee920..6923f6694016f6f59cebf94d5f9128d532931ce3 100644 (file)
@@ -43,6 +43,9 @@ static void DecoderClose  ( vlc_object_t * );
 
 vlc_module_begin();
     set_description( _("Philips OGT (SVCD subtitle) decoder") );
+    set_shortname( N_("SVCD subtitles"));
+    set_category( CAT_INPUT );
+    set_subcategory( SUBCAT_INPUT_SCODEC );
     set_capability( "decoder", 50 );
     set_callbacks( DecoderOpen, DecoderClose );
 
@@ -237,6 +240,33 @@ static block_t *Reassemble( decoder_t *p_dec, block_t *p_block )
 
     p_buffer = p_block->p_buffer;
 
+    /* Attach to our input thread and see if subtitle is selected. */
+    {
+        vlc_object_t * p_input;
+        vlc_value_t val;
+
+        p_input = vlc_object_find( p_dec, VLC_OBJECT_INPUT, FIND_PARENT );
+
+        if( !p_input ) return NULL;
+
+        if( var_Get( p_input, "spu-channel", &val ) )
+        {
+            vlc_object_release( p_input );
+            return NULL;
+        }
+
+        vlc_object_release( p_input );
+        msg_Dbg( p_dec, "val.i_int %x p_buffer[i] %x", val.i_int, p_buffer[1]);
+
+        /* The dummy ES that the menu selection uses has an 0x70 at
+           the head which we need to strip off. */
+        if( val.i_int == -1 || (val.i_int & 0x03) != p_buffer[1] )
+        {
+           msg_Dbg( p_dec, "subtitle not for us." );
+            return NULL;
+        }
+    }
+
     if( p_sys->i_state == SUBTITLE_BLOCK_EMPTY )
     {
         i_expected_image  = p_sys->i_image + 1;