Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/GpsPlayer.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/GpsPlayer.java	(revision 22689)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/GpsPlayer.java	(revision 22690)
@@ -36,4 +36,10 @@
 		return next;
 	}
+	
+	public WayPoint getWaypoint(long relTime)
+	{
+		int pos = Math.round(relTime/1000);//TODO ugly quick hack	
+		return ls.get(pos);
+	}
 
 	public GpsPlayer(List<WayPoint> l) {
@@ -91,5 +97,5 @@
 	}
 	
-	//wal k waypoints forward/backward
+	//walk k waypoints forward/backward
 	public void jumpRel(int k)
 	{
@@ -99,5 +105,5 @@
 			jump(ls.get(ls.indexOf(curr)+k));
 		}
-		Main.map.mapView.repaint();
+		Main.map.mapView.repaint(); //seperate modell and view logic...
 	}
 	
@@ -113,4 +119,24 @@
 			Main.map.mapView.repaint();
 		}
+	}
+	
+	//go to the position at the timecode e.g.g "14:00:01";
+	public void jump(Time GPSAbsTime)
+	{
+		jump(getWaypoint(GPSAbsTime.getTime()-start.getTime().getTime())); //TODO replace Time by Date?
+	}
+	
+	//go to the position at 
+	public void jump(Date GPSDate)
+	{
+		long s,m,h,diff;
+		//calculate which waypoint is at the offset
+		System.out.println(start.getTime());
+		System.out.println(start.getTime().getHours()+":"+start.getTime().getMinutes()+":"+start.getTime().getSeconds());
+		s=GPSDate.getSeconds()-start.getTime().getSeconds();
+		m=GPSDate.getMinutes()-start.getTime().getMinutes();
+		h=GPSDate.getHours()-start.getTime().getHours();
+		diff=s*1000+m*60*1000+h*60*60*1000; //TODO ugly hack but nothing else works right
+		jump(getWaypoint(diff)); 
 	}
 	
@@ -316,5 +342,6 @@
 		return p.getTime().getTime()-start.getTime().getTime(); //TODO assumes timeintervall is constant!!!!
 	}
-
+	
+	
 	//jumps to a specific time
 	public void jump(long relTime) {
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PlayerObserver.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PlayerObserver.java	(revision 22689)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PlayerObserver.java	(revision 22690)
@@ -5,4 +5,5 @@
 	void playing(long time);
 	void jumping(long time);
+	void metadata(long time,boolean subtitles);
 
 }
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PositionLayer.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PositionLayer.java	(revision 22689)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/PositionLayer.java	(revision 22690)
@@ -43,4 +43,5 @@
 	private SimpleDateFormat mins;
 	private SimpleDateFormat ms;
+	private SimpleDateFormat gpsTimeCode;
 	private GPSVideoPlayer gps;
 
@@ -52,4 +53,5 @@
 		mins = new SimpleDateFormat("hh:mm:ss:S");
 		ms= new SimpleDateFormat("mm:ss");
+		gpsTimeCode= new SimpleDateFormat("hh:mm:ss");
 		Main.map.mapView.addMouseListener(this);
 		Main.map.mapView.addMouseMotionListener(this);
@@ -109,5 +111,5 @@
 		//TODO make icon transparent
 		//draw all GPS points
-		g.setColor(Color.GREEN);
+		g.setColor(new Color(0,255,0,128));
 		for(WayPoint n: ls) {
 			p = Main.map.mapView.getPoint(n.getEastNorth());
@@ -115,5 +117,5 @@
 		}
 		//draw synced points
-		g.setColor(Color.ORANGE);
+		g.setColor(Color.GREEN);
 		for(WayPoint n: ls) {
 			if(n.attr.containsKey("synced"))
@@ -156,5 +158,6 @@
 				p=Main.map.mapView.getPoint(iconPosition.getEastNorth());
 				icon.paintIcon(null, g, p.x-icon.getIconWidth()/2, p.y-icon.getIconHeight()/2);
-				g.drawString(mins.format(iconPosition.getTime()),p.x-10,p.y-10);
+				//g.drawString(mins.format(iconPosition.getTime()),p.x-10,p.y-10); //TODO when synced we might wan't to use a different layout
+				g.drawString(gpsTimeCode.format(iconPosition.getTime()),p.x-10,p.y-10);
 			}
 		}
@@ -164,5 +167,5 @@
 			p=Main.map.mapView.getPoint(player.getCurr().getEastNorth());
 			icon.paintIcon(null, g, p.x-icon.getIconWidth()/2, p.y-icon.getIconHeight()/2);
-			g.drawString(ms.format(player.getRelativeTime()),p.x-10,p.y-10);
+			g.drawString(gpsTimeCode.format(player.getCurr().getTime()),p.x-10,p.y-10);
 			}
 		}
@@ -302,5 +305,5 @@
         for (PlayerObserver o : observers) {
 
-            o.jumping(newTime);
+            o.jumping(newTime); //TODO has to become just a single procedure?
 
         }
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoMappingPlugin.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoMappingPlugin.java	(revision 22689)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/VideoMappingPlugin.java	(revision 22690)
@@ -6,5 +6,9 @@
 import java.beans.PropertyChangeListener;
 import java.io.File;
+import java.sql.Time;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Collections;
+import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
@@ -48,11 +52,11 @@
 	  private GpxData GPSTrack;
 	  private List<WayPoint> ls;
-	  private JosmAction VAdd,VRemove,VStart,Vbackward,Vforward,Vfaster,Vslower,Vloop;
+	  private JosmAction VAdd,VRemove,VStart,Vbackward,Vforward,VJump,Vfaster,Vslower,Vloop;
 	  private JRadioButtonMenuItem VIntBob,VIntNone,VIntLinear;
-	  private JCheckBoxMenuItem VCenterIcon;
+	  private JCheckBoxMenuItem VCenterIcon,VSubTitles;
 	  private JMenuItem VJumpLength,VLoopLength;
 	  private GPSVideoPlayer player;
 	  private PositionLayer layer;
-	  private final String VM_DEINTERLACER="videomapping.deinterlacer";
+	  private final String VM_DEINTERLACER="videomapping.deinterlacer"; //where we store settings
 	  private final String VM_MRU="videomapping.mru";
 	  private final String VM_AUTOCENTER="videomapping.autocenter";
@@ -74,5 +78,5 @@
 		enableControlMenus(true);
 		loadSettings();
-		applySettings();		
+		applySettings();
 		//further plugin informations are provided by build.xml properties
 	}
@@ -115,7 +119,6 @@
 
 			public void actionPerformed(ActionEvent arg0) {					
-					JFileChooser fc = new JFileChooser();
+					JFileChooser fc = new JFileChooser("C:\\TEMP\\");
 					//fc.setSelectedFile(new File(mru));
-					fc.setSelectedFile(new File("C:\\TEMP"));
 					if(fc.showOpenDialog(Main.main.parent)!=JFileChooser.CANCEL_OPTION)
 					{
@@ -126,9 +129,10 @@
 						Main.main.addLayer(layer);
 						player = new GPSVideoPlayer(fc.getSelectedFile(), layer.player);
-						//TODO Check here if we can sync by hand
+						//TODO Check here if we can sync allready now
 						layer.setGPSPlayer(player);
 						layer.addObserver(player);
 						VAdd.setEnabled(false);
 						VRemove.setEnabled(true);
+						player.setSubtitleAction(VSubTitles);
 					}
 				}
@@ -142,4 +146,5 @@
 			}
 		};
+		
 		VStart = new JosmAction(tr("play/pause"), "audio-playpause", tr("starts/pauses video playback"),
 				Shortcut.registerShortcut("videomapping:startstop","",KeyEvent.VK_SPACE, Shortcut.GROUP_DIRECT), false) {
@@ -152,6 +157,29 @@
 				Shortcut.registerShortcut("videomapping:backward","",KeyEvent.VK_NUMPAD4, Shortcut.GROUP_DIRECT), false) {
 			
+			/**
+					 * 
+					 */
+					private static final long serialVersionUID = -1060444361541900464L;
+
 			public void actionPerformed(ActionEvent e) {
 				player.backward();
+							
+			}
+		};
+		Vbackward = new JosmAction(tr("jump"), null, tr("jumps to the entered gps time"),null, false) {			
+			public void actionPerformed(ActionEvent e) {
+				String s =JOptionPane.showInputDialog(tr("please enter GPS timecode"),"10:07:57");
+				SimpleDateFormat format= new SimpleDateFormat("hh:mm:ss");
+				Date t;
+				try {
+					t = format.parse(s);
+					if (t!=null)
+						{							
+							player.jumpToGPSTime(t.getTime());
+						}						
+				} catch (ParseException e1) {
+					// TODO Auto-generated catch block
+					e1.printStackTrace();
+				}
 							
 			}
@@ -197,4 +225,12 @@
 				applySettings();
 				saveSettings();
+							
+			}
+		});
+		//now the options menu
+		VSubTitles = new JCheckBoxMenuItem(new JosmAction(tr("Subtitles"), "cursor/crosshair", tr("Show subtitles in video"),null, false) {
+			
+			public void actionPerformed(ActionEvent e) {
+				player.toggleSubtitles();
 							
 			}
@@ -265,4 +301,6 @@
 		VMenu.add(VLoopLength);
 		VMenu.add(VDeinterlacer);
+		VMenu.add(VSubTitles);
+		
 	}
 	
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideoPlayer.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideoPlayer.java	(revision 22689)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/GPSVideoPlayer.java	(revision 22690)
@@ -1,12 +1,19 @@
 package org.openstreetmap.josm.plugins.videomapping.video;
 import java.awt.Color;
+import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.File;
+import java.sql.Time;
+import java.util.Date;
+import java.util.List;
 import java.util.Timer;
 import java.util.TimerTask;
 
+import javax.swing.Action;
 import javax.swing.JButton;
-
+import javax.swing.JCheckBoxMenuItem;
+
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.plugins.videomapping.GpsPlayer;
@@ -22,4 +29,5 @@
 	private GPSVideoFile file;
 	private boolean synced=false; //do we playback the players together?
+	private JCheckBoxMenuItem subtTitleComponent;
 	
 
@@ -34,5 +42,5 @@
 		setFile(new GPSVideoFile(f, gpsT-videoT)); */
 		setFile(new GPSVideoFile(f, 0L));
-		//extend GUI
+		//add Sync Button to the Player
 		syncBtn= new JButton("sync");
 		syncBtn.setBackground(Color.RED);
@@ -45,16 +53,16 @@
 				synced=true;
 				markSyncedPoints();
-				gps.play();
+				video.play();
+				//gps.play();
 			}
 		});
-		setSyncMode(true);
+		setAsyncMode(true);
 		video.addComponent(syncBtn);
-		//allow sync
-		SimpleVideoPlayer.addObserver(new PlayerObserver() {
+		//a observer to communicate
+		SimpleVideoPlayer.addObserver(new PlayerObserver() { //TODO has o become this
 
 			public void playing(long time) {
 				//sync the GPS back
-				if(synced) gps.jump(getGPSTime(time));
-				
+				if(synced) gps.jump(getGPSTime(time));			
 			}
 
@@ -62,5 +70,9 @@
 			
 			}
-			
+
+			//a push way to set video attirbutes
+			public void metadata(long time, boolean subtitles) {
+				if(subtTitleComponent!=null) subtTitleComponent.setSelected(subtitles);				
+			}
 			
 		});
@@ -70,14 +82,30 @@
 	//marks all points that are covered by video AND GPS track
 	private void markSyncedPoints() {
-		long time;
-		//TODO this is poor, a start/end calculation would be better
-		for (WayPoint wp : gps.getTrack()) {
-			time=getVideoTime(gps.getRelativeTime(wp));
-			if(time>0) wp.attr.put("synced", "true");
-		}
-		
-	}
-
-	public void setSyncMode(boolean b)
+		//GPS or video stream starts first in time?
+		WayPoint start,end;
+		long t;
+		if(gps.getLength()<video.getLength())
+		{
+			//GPS is within video timeperiod
+			start=gps.getWaypoint(0);
+			end=gps.getWaypoint(gps.getLength());			
+		}
+		else
+		{
+			//video is within gps timeperiod
+			t=getGPSTime(0);
+			if(t<0) t=0;
+			start=gps.getWaypoint(t);
+			end=gps.getWaypoint(getGPSTime(video.getLength()));
+		}
+		//mark as synced
+		List<WayPoint> ls = gps.getTrack().subList(gps.getTrack().indexOf(start), gps.getTrack().indexOf(end));
+		
+		for (WayPoint wp : ls) {
+			wp.attr.put("synced", "true");
+		}	
+	}
+
+	public void setAsyncMode(boolean b)
 	{
 		if(b)
@@ -97,5 +125,5 @@
 		file=f;
 		video.setFile(f.getAbsoluteFile());
-		video.play();
+		//video.play();
 	}
 	
@@ -119,6 +147,18 @@
 	
 	//jumps in video to the corresponding linked time
+	public void jumpToGPSTime(Time GPSTime)
+	{
+		gps.jump(GPSTime);
+	}
+	
+	//jumps in video to the corresponding linked time
 	public void jumpToGPSTime(long gpsT)
 	{
+		if(!synced)
+		{
+			//when not synced we can just move the icon to the right position			
+			gps.jump(new Date(gpsT));
+			Main.map.mapView.repaint();
+		}
 		video.jump(getVideoTime(gpsT));
 	}
@@ -217,4 +257,26 @@
 	}
 
+	public void toggleSubtitles() {
+		video.toggleSubs();
+		
+	}
+	
+	public boolean hasSubtitles(){
+		return video.hasSubtitles();
+	}
+
+	public void setSubtitleAction(JCheckBoxMenuItem a)
+	{
+		subtTitleComponent=a;
+	}
+
+	public void metadata(long time, boolean subtitles) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	
+	
+
 	
 }
Index: applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/SimpleVideoPlayer.java
===================================================================
--- applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/SimpleVideoPlayer.java	(revision 22689)
+++ applications/editors/josm/plugins/videomapping/src/org/openstreetmap/josm/plugins/videomapping/video/SimpleVideoPlayer.java	(revision 22690)
@@ -40,7 +40,4 @@
 
 import uk.co.caprica.vlcj.binding.LibVlc;
-import uk.co.caprica.vlcj.check.EnvironmentCheckerFactory;
-import uk.co.caprica.vlcj.player.DefaultFullScreenStrategy;
-import uk.co.caprica.vlcj.player.FullScreenStrategy;
 import uk.co.caprica.vlcj.player.MediaPlayer;
 import uk.co.caprica.vlcj.player.MediaPlayerEventAdapter;
@@ -48,13 +45,14 @@
 import uk.co.caprica.vlcj.player.MediaPlayerFactory;
 import uk.co.caprica.vlcj.player.VideoMetaData;
+import uk.co.caprica.vlcj.player.embedded.*;
 
 //basic class of a videoplayer for one video
 public class SimpleVideoPlayer extends JFrame implements MediaPlayerEventListener, WindowListener{
-	private MediaPlayer mp;
+	private EmbeddedMediaPlayer mp;
 	private Timer t;
 	private JPanel screenPanel,controlsPanel;
 	private JSlider timeline;
 	private JButton play,back,forward;
-	private JToggleButton loop;
+	private JToggleButton loop,mute;
 	private JSlider speed;
 	private Canvas scr;
@@ -76,9 +74,10 @@
 		 */
 		try
-		{			
+		{
+			//we don't need any options
 			String[] libvlcArgs = {""};
 			String[] standardMediaOptions = {""}; 
 			
-			System.out.println("libvlc version: " + LibVlc.INSTANCE.libvlc_get_version());
+			//System.out.println("libvlc version: " + LibVlc.INSTANCE.libvlc_get_version());
 			//setup Media Player
 			//TODO we have to deal with unloading things....
@@ -88,30 +87,9 @@
 		    mp.setStandardMediaOptions(standardMediaOptions);
 		    //setup GUI
-		    setSize(400, 300); //later we resize
+		    setSize(400, 300); //later we apply movie size
 		    setAlwaysOnTop(true);
-		    //setIconImage();
-		    ms = new SimpleDateFormat("hh:mm:ss:S");
-		    scr=new Canvas();
-		    timeline = new JSlider(0,100,0);
-		    timeline.setMajorTickSpacing(10);
-		    timeline.setMajorTickSpacing(5);
-		    timeline.setPaintTicks(true);
-		    play= new JButton(tr("play"));
-		    back= new JButton("<");
-		    forward= new JButton(">");
-		    loop= new JToggleButton(tr("loop"));
-		    speed = new JSlider(-200,200,0);
-		    speed.setMajorTickSpacing(100);
-			speed.setPaintTicks(true);			
-			speed.setOrientation(Adjustable.VERTICAL);
-			Hashtable labelTable = new Hashtable();
-			labelTable.put( new Integer( 0 ), new JLabel("1x") );
-			labelTable.put( new Integer( -200 ), new JLabel("-2x") );
-			labelTable.put( new Integer( 200 ), new JLabel("2x") );
-			speed.setLabelTable( labelTable );
-			speed.setPaintLabels(true);
-
+		    createUI();
 		    setLayout();
-			addListeners();
+			addListeners(); //registering shortcuts is task of the outer plugin class!
 		    //embed vlc player
 			scr.setVisible(true);
@@ -119,7 +97,7 @@
 			mp.setVideoSurface(scr);
 			mp.addMediaPlayerEventListener(this);
-			mp.pause();
-			jump(0);
-			//set updater
+			//mp.pause();
+			//jump(0);
+			//create updater
 			ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
 			executorService.scheduleAtFixedRate(new Syncer(this), 0L, 1000L, TimeUnit.MILLISECONDS);
@@ -136,4 +114,30 @@
 		}
 		
+	}
+
+	private void createUI() {
+		//setIconImage();
+		ms = new SimpleDateFormat("hh:mm:ss");
+		scr=new Canvas();
+		timeline = new JSlider(0,100,0);
+		timeline.setMajorTickSpacing(10);
+		timeline.setMajorTickSpacing(5);
+		timeline.setPaintTicks(true);
+		//TODO we need Icons instead
+		play= new JButton(tr("play"));
+		back= new JButton("<");
+		forward= new JButton(">");
+		loop= new JToggleButton(tr("loop"));
+		mute= new JToggleButton(tr("mute"));
+		speed = new JSlider(-200,200,0);
+		speed.setMajorTickSpacing(100);
+		speed.setPaintTicks(true);			
+		speed.setOrientation(Adjustable.VERTICAL);
+		Hashtable labelTable = new Hashtable();
+		labelTable.put( new Integer( 0 ), new JLabel("1x") );
+		labelTable.put( new Integer( -200 ), new JLabel("-2x") );
+		labelTable.put( new Integer( 200 ), new JLabel("2x") );
+		speed.setLabelTable( labelTable );
+		speed.setPaintLabels(true);
 	}
 	
@@ -155,5 +159,7 @@
 		controlsPanel.add(forward);
 		controlsPanel.add(loop);
+		controlsPanel.add(mute);
 		loop.setSelected(false);
+		mute.setSelected(false);
 	}
 
@@ -176,5 +182,5 @@
 			
 			public void actionPerformed(ActionEvent arg0) {
-				if(mp.isPlaying()) mp.stop(); else mp.play();				
+				if(mp.isPlaying()) mp.pause(); else mp.play();				
 			}
 		});
@@ -198,4 +204,11 @@
 			public void actionPerformed(ActionEvent arg0) {
 				loop();
+			}
+		});
+		
+		mute.addActionListener(new ActionListener() {
+
+			public void actionPerformed(ActionEvent arg0) {
+				mute();
 			}
 		});
@@ -215,5 +228,5 @@
 		});
 		
-	}
+	}	
 
 	public void finished(MediaPlayer arg0) {
@@ -230,5 +243,8 @@
 		scr.setSize(new Dimension((int)(org.width*perc), (int)(org.height*perc)));
 		pack();
-
+		//send out metadatas to all observers
+		for (PlayerObserver o : observers) {
+            o.metadata(0, hasSubtitles());
+        }
 	}
 
@@ -277,5 +293,5 @@
 	{
 		String mediaPath = f.getAbsoluteFile().toString();
-		mp.playMedia(mediaPath, mediaOptions);		
+		mp.playMedia(mediaPath, mediaOptions);
 		pack();	
 	}
@@ -308,10 +324,10 @@
 	}
 	
-	//gets called by the Syncer to update all components
+	//gets called by the Syncer thread to update all observers
 	public void updateTime ()
 	{
 		if(mp.isPlaying())
 		{
-			setTitle(ms.format(new Date(mp.getTime()))); //FIXME there is a leading hour even at the beginning
+			setTitle(ms.format(new Date(mp.getTime())));
 			syncTimeline=true;
 			timeline.setValue(Math.round(mp.getPosition()*100));
@@ -369,4 +385,9 @@
 		
 	}
+	
+	protected void mute() {
+		mp.mute();
+		
+	}
 
 	public void forward() {
@@ -384,4 +405,20 @@
 		
 	}
+	
+	public void toggleSubs()
+	{
+		//vlc manages it's subtitles in a own list so we have to cycle trough
+		int spu = mp.getSpu();
+        if(spu > -1) {
+          spu++;
+          if(spu > mp.getSpuCount()) {
+            spu = -1;
+          }
+        }
+        else {
+          spu = 0;
+        }
+        mp.setSpu(spu);
+	}
 
 	public static void addObserver(PlayerObserver observer) {
@@ -402,7 +439,5 @@
 
 	        for (PlayerObserver o : observers) {
-
 	            o.playing(newTime);
-
 	        }
 
@@ -432,4 +467,18 @@
 		}
 
+		public void error(MediaPlayer arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		public void mediaChanged(MediaPlayer arg0) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		public boolean hasSubtitles() {
+			if (mp.getSpuCount()==0) return false; else   return true;
+		}
+
 	
 
Index: applications/editors/josm/plugins/videomapping/test/videotest.java
===================================================================
--- applications/editors/josm/plugins/videomapping/test/videotest.java	(revision 22689)
+++ applications/editors/josm/plugins/videomapping/test/videotest.java	(revision 22690)
@@ -26,6 +26,6 @@
 	public static void main(String[] args) {
 		final SimpleVideoPlayer sVP = new SimpleVideoPlayer();
-		sVP.setFile(new File("C:\\TEMP\\test.mpg"));
-		sVP.play(); //FIXME We have a bug so we get out of sync if we jump before the video is up (and this we CAN'T DETECT!!!)
+		sVP.setFile(new File("C:\\TEMP\\122_0159.MOV"));
+		//sVP.play(); //FIXME We have a bug so we get out of sync if we jump before the video is up (and this we CAN'T DETECT!!!)
 		/*
 		JButton b = new JButton("jump");
