001    package com.github.sarxos.webcam.ds.jmf;
002    
003    import java.util.ArrayList;
004    import java.util.Iterator;
005    import java.util.List;
006    import java.util.Vector;
007    
008    import javax.media.CaptureDeviceInfo;
009    import javax.media.CaptureDeviceManager;
010    import javax.media.Format;
011    
012    import com.github.sarxos.webcam.WebcamDevice;
013    import com.github.sarxos.webcam.WebcamDriver;
014    
015    
016    public class JmfDriver implements WebcamDriver {
017    
018            private static List<WebcamDevice> devices = null;
019    
020            @Override
021            public List<WebcamDevice> getDevices() {
022    
023                    if (devices == null) {
024    
025                            devices = new ArrayList<WebcamDevice>();
026    
027                            @SuppressWarnings("unchecked")
028                            Vector<Object> cdis = CaptureDeviceManager.getDeviceList(new Format("RGB"));
029                            Iterator<Object> di = cdis.iterator();
030    
031                            while (di.hasNext()) {
032                                    CaptureDeviceInfo cdi = (CaptureDeviceInfo) di.next();
033                                    devices.add(new JmfDevice(cdi));
034                            }
035                    }
036    
037                    return devices;
038            }
039    
040            @Override
041            public boolean isThreadSafe() {
042                    return false;
043            }
044    }