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}