public Processor start(MainWindow wnd , DataSource ds , CaptureDeviceInfo cdi) {
		try {
			processor = Manager.createProcessor(ds);
		} catch(Exception e) {
		    JOptionPane.showMessageDialog(wnd ,
		    							  e.getMessage(),
		    							  null ,
		    							  JOptionPane.ERROR_MESSAGE);
		    System.exit(-1);
		}
		
		processor.addControllerListener(this);
		
		processor.configure();
	    if(!wait(Processor.Configured)) {
	    	JOptionPane.showMessageDialog(wnd ,
	    								  "Configuration error",
	    								  null ,
	    								  JOptionPane.ERROR_MESSAGE);
	    	System.exit(-1);
	    }
	    
	    /* use it as a player */
	    processor.setContentDescriptor(null);
	    
	    TrackControl vTrackcontrols[] = processor.getTrackControls();
	    
	    if (vTrackcontrols == null) {
	    	JOptionPane.showMessageDialog(wnd ,
	    			                      "Can't get the processor control",
	    			                      null ,
	    			                      JOptionPane.ERROR_MESSAGE);
	    	System.exit(-1);
	    }
	    
	    /* gets only the video trak from all tracks */
	    TrackControl videoTracker = null;
	    for (int i=0; i < vTrackcontrols.length; i++) {
	    	if (vTrackcontrols[i].getFormat() instanceof VideoFormat) {
	    		videoTracker =vTrackcontrols[i];
	    		break;
	    	}
	    }
	    
	    if (videoTracker == null) {
	    	JOptionPane.showMessageDialog( wnd ,
	    			                      "Can't get the processor control" ,
	    			                      null ,
	    			                      JOptionPane.ERROR_MESSAGE);
	    	System.exit(-1);
	    }
	    
	    try
	    {
	    	Codec codec[]={ new VideoProcessing(cdi,wnd.svmModel,wnd) };
	        videoTracker.setCodecChain(codec);  
	    } catch (UnsupportedPlugInException e) {
	    	JOptionPane.showMessageDialog(wnd,
	    								  e.getMessage(),
	    								  null,
	    								  JOptionPane.ERROR_MESSAGE);
	    	System.exit(-1);
	    }
	    
	    /* build the processor */
	    processor.prefetch();
	    if (!wait(Controller.Prefetched)) {
	    	JOptionPane.showMessageDialog(wnd ,
	    								  "An error occurred during the video processor cretion",
	    			                      null ,
	    			                      JOptionPane.ERROR_MESSAGE);
	    	System.exit(-1);
	    }
	    
	    processor.start();
	    
	    return processor;
	}