001package com.github.sarxos.webcam.ds.jmf;
002
003import java.util.ArrayList;
004import java.util.Iterator;
005import java.util.List;
006import java.util.Vector;
007
008import javax.media.CaptureDeviceInfo;
009import javax.media.CaptureDeviceManager;
010import javax.media.Format;
011
012import com.github.sarxos.webcam.WebcamDevice;
013import com.github.sarxos.webcam.WebcamDriver;
014
015
016public 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
045        @Override
046        public String toString() {
047                return getClass().getSimpleName();
048        }
049}