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 }