diff --git a/src/net/java/sip/communicator/impl/media/device/DeviceConfiguration.java b/src/net/java/sip/communicator/impl/media/device/DeviceConfiguration.java index e0d8e3cac..027563589 100644 --- a/src/net/java/sip/communicator/impl/media/device/DeviceConfiguration.java +++ b/src/net/java/sip/communicator/impl/media/device/DeviceConfiguration.java @@ -26,11 +26,17 @@ public class DeviceConfiguration /** * The name of the DeviceConfiguration property which - * represents the capture device used by default by the - * DeviceConfiguration for video when it is not explicitly - * configured to use a specific video capture device. + * represents the device used by DeviceConfiguration for video + * capture. */ - public static final String DEFAULT_VIDEO_CAPTURE_DEVICE = "DEFAULT_VIDEO_CAPTURE_DEVICE"; + public static final String AUDIO_CAPTURE_DEVICE = "AUDIO_CAPTURE_DEVICE"; + + /** + * The name of the DeviceConfiguration property which + * represents the device used by DeviceConfiguration for video + * capture. + */ + public static final String VIDEO_CAPTURE_DEVICE = "VIDEO_CAPTURE_DEVICE"; private static final CaptureDeviceInfo[] NO_CAPTURE_DEVICES = new CaptureDeviceInfo[0]; @@ -52,7 +58,6 @@ public class DeviceConfiguration */ public DeviceConfiguration() { - } /** @@ -81,19 +86,18 @@ public void initialize() private void extractConfiguredCaptureDevices() { logger.info("Scanning for configured Audio Devices."); - Vector audioCaptureDevices = - CaptureDeviceManager.getDeviceList(new AudioFormat( - AudioFormat.LINEAR, 44100, 16, 1));// 1 means 1 channel for mono - if (audioCaptureDevices.size() < 1) + CaptureDeviceInfo[] audioCaptureDevices = + getAvailableAudioCaptureDevices(); + if (audioCaptureDevices.length < 1) { logger.warn("No Audio Device was found."); audioCaptureDevice = null; } else { - logger.debug("Found " + audioCaptureDevices.size() + logger.debug("Found " + audioCaptureDevices.length + " capture devices: " + audioCaptureDevices); - audioCaptureDevice = (CaptureDeviceInfo) audioCaptureDevices.get(0); + audioCaptureDevice = audioCaptureDevices[0]; logger.info("Found " + audioCaptureDevice.getName() + " as an audio capture device."); } @@ -153,25 +157,11 @@ public CaptureDeviceInfo getAudioCaptureDevice() */ public CaptureDeviceInfo[] getAvailableAudioCaptureDevices() { - Vector audioCaptureDevices = + Vector audioCaptureDevices = CaptureDeviceManager.getDeviceList(new AudioFormat( AudioFormat.LINEAR, 44100, 16, 1));// 1 means 1 channel for mono - if (audioCaptureDevices.size() < 1) - { - return NO_CAPTURE_DEVICES; - } - else - { - CaptureDeviceInfo[] result = - new CaptureDeviceInfo[audioCaptureDevices.size()]; - for (int i = 0; i < result.length; i++) - { - result[i] = (CaptureDeviceInfo)audioCaptureDevices.get(i); - } - - return result; - } + return audioCaptureDevices.toArray(NO_CAPTURE_DEVICES); } /** @@ -187,30 +177,14 @@ public CaptureDeviceInfo[] getAvailableAudioCaptureDevices() */ public CaptureDeviceInfo[] getAvailableVideoCaptureDevices() { - Vector videoCaptureDevices = - CaptureDeviceManager - .getDeviceList(new VideoFormat(VideoFormat.RGB)); - - Vector yuvVideoCaptureDevices = - CaptureDeviceManager.getDeviceList(new VideoFormat( - VideoFormat.YUV)); - - videoCaptureDevices.addAll(yuvVideoCaptureDevices); - - if (videoCaptureDevices.size() < 1) - { - return NO_CAPTURE_DEVICES; - } - - CaptureDeviceInfo[] result = - new CaptureDeviceInfo[videoCaptureDevices.size()]; - - for (int i = 0; i < result.length; i++) - { - result[i] = (CaptureDeviceInfo)videoCaptureDevices.get(i); - } - - return result; + Set videoCaptureDevices = + new HashSet(); + + videoCaptureDevices.addAll(CaptureDeviceManager + .getDeviceList(new VideoFormat(VideoFormat.RGB))); + videoCaptureDevices.addAll(CaptureDeviceManager + .getDeviceList(new VideoFormat(VideoFormat.YUV))); + return videoCaptureDevices.toArray(NO_CAPTURE_DEVICES); } /** @@ -225,13 +199,12 @@ public CaptureDeviceInfo getVideoCaptureDevice() } /** - * Sets the capture device which is to be used by default by this - * DeviceConfiguration for video when it is not explicitly - * configured to use a specific audio capture device. + * Sets the device which is to be used by this + * DeviceConfiguration for video capture. * - * @param device a CaptureDeviceInfo describing the video - * capture device to be made default for this - * DeviceConfiguration + * @param device a CaptureDeviceInfo describing device to be + * used by this DeviceConfiguration for video + * capture */ public void setVideoCaptureDevice(CaptureDeviceInfo device) { @@ -241,18 +214,17 @@ public void setVideoCaptureDevice(CaptureDeviceInfo device) videoCaptureDevice = device; - firePropertyChange(DEFAULT_VIDEO_CAPTURE_DEVICE, oldDevice, device); + firePropertyChange(VIDEO_CAPTURE_DEVICE, oldDevice, device); } } /** - * Sets the capture device which is to be used by default by this - * DeviceConfiguration for video when it is not explicitly - * configured to use a specific audio capture device. + * Sets the device which is to be used by this + * DeviceConfiguration for audio capture. * - * @param device a CaptureDeviceInfo describing the video - * capture device to be made default for this - * DeviceConfiguration + * @param device a CaptureDeviceInfo describing the device to + * be used by this DeviceConfiguration for audio + * capture */ public void setAudioCaptureDevice(CaptureDeviceInfo device) { @@ -262,7 +234,7 @@ public void setAudioCaptureDevice(CaptureDeviceInfo device) audioCaptureDevice = device; - firePropertyChange(DEFAULT_VIDEO_CAPTURE_DEVICE, oldDevice, device); + firePropertyChange(AUDIO_CAPTURE_DEVICE, oldDevice, device); } }