diff Gui/mplayer/mw.c @ 18118:f9a939c204ad

Adds "cheap" subtitle switching for non-DVD playouts (for ex. OGG or MKV). Patch by Stanislav Maslovski <stanislav POIS maslovski AH gmail POIS com> Original thread: Date: Apr 12, 2006 1:50 PM Subject: [MPlayer-dev-eng] [PATCH] GUI: add cheap subtitle switching for non-DVD
author gpoirier
date Sun, 16 Apr 2006 16:58:36 +0000
parents 0e152834911a
children 34cc93e9848f
line wrap: on
line diff
--- a/Gui/mplayer/mw.c	Sun Apr 16 13:45:21 2006 +0000
+++ b/Gui/mplayer/mw.c	Sun Apr 16 16:58:36 2006 +0000
@@ -32,6 +32,12 @@
 #include "widgets.h"
 
 extern mixer_t mixer; // mixer from mplayer.c
+extern int global_sub_size;
+extern int global_sub_pos;
+extern int global_sub_indices[];
+extern int sub_source(void);
+#define SUB_SOURCE_VOBSUB 1
+#define SUB_SOURCE_DEMUX  2
 
 extern unsigned int GetTimerMS( void );
 
@@ -110,6 +116,24 @@
 	video_id=iparam;
 	goto play;
 
+   case evSetSubtitle:
+	if ( !guiIntfStruct.demuxer || global_sub_pos == iparam ) break;
+	global_sub_pos = iparam;
+	if ( global_sub_pos >= 0 )
+	 switch ( sub_source() )
+	  {
+	   case SUB_SOURCE_VOBSUB:
+		vobsub_id = global_sub_pos - global_sub_indices[SUB_SOURCE_VOBSUB];
+		goto play;
+	   case SUB_SOURCE_DEMUX:
+		vobsub_id = -1;
+		dvdsub_id = global_sub_pos - global_sub_indices[SUB_SOURCE_DEMUX];
+		goto play;
+	  }
+	vobsub_id = -1;
+	dvdsub_id = -2;
+	goto play;
+
 #ifdef HAVE_VCD
    case evSetVCDTrack:
         guiIntfStruct.Track=iparam;