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 }