From 140730d9e27dce0185249fc8881330968aa3dc89 Mon Sep 17 00:00:00 2001 From: Vincent Lucas <chenzo@jitsi.org> Date: Mon, 24 Dec 2012 10:59:08 +0000 Subject: [PATCH] Corrects PortAudio not running on Linux: checks if CoreAudio is supported for the current system. --- src/org/jitsi/impl/neomedia/CoreAudioDevice.java | 12 ++++++++++++ .../jitsi/impl/neomedia/device/PortAudioSystem.java | 12 ++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/org/jitsi/impl/neomedia/CoreAudioDevice.java b/src/org/jitsi/impl/neomedia/CoreAudioDevice.java index 4c152927..a96757e3 100644 --- a/src/org/jitsi/impl/neomedia/CoreAudioDevice.java +++ b/src/org/jitsi/impl/neomedia/CoreAudioDevice.java @@ -15,20 +15,32 @@ */ public class CoreAudioDevice { + /** + * Loads CoreAudioDevice if we are using MacOsX or Windows Vista/7/8. + */ static { + isLoaded = false; if(OSUtils.IS_MAC) { System.loadLibrary("jnmaccoreaudio"); + isLoaded = true; } else if(OSUtils.IS_WINDOWS_VISTA || OSUtils.IS_WINDOWS_7 || OSUtils.IS_WINDOWS_8) { System.loadLibrary("jnwincoreaudio"); + isLoaded = true; } } + /** + * Tells if the CoreAudio library used by this CoreAudioDevice is correctly + * loaded: if we are under a supported operating system. + */ + public static boolean isLoaded; + public static native int initDevices(); public static native void freeDevices(); diff --git a/src/org/jitsi/impl/neomedia/device/PortAudioSystem.java b/src/org/jitsi/impl/neomedia/device/PortAudioSystem.java index 104bf1b1..d0abdc65 100644 --- a/src/org/jitsi/impl/neomedia/device/PortAudioSystem.java +++ b/src/org/jitsi/impl/neomedia/device/PortAudioSystem.java @@ -264,7 +264,8 @@ protected void doInitialize() = new LinkedList<ExtendedCaptureDeviceInfo>(); final boolean loggerIsDebugEnabled = logger.isDebugEnabled(); - CoreAudioDevice.initDevices(); + if(CoreAudioDevice.isLoaded) + CoreAudioDevice.initDevices(); for (int deviceIndex = 0; deviceIndex < deviceCount; deviceIndex++) { long deviceInfo = Pa.GetDeviceInfo(deviceIndex); @@ -281,8 +282,10 @@ protected void doInitialize() = Pa.DeviceInfo_getTransportType(deviceInfo); String deviceUID = Pa.DeviceInfo_getDeviceUID(deviceInfo); - String modelIdentifier - = CoreAudioDevice.getDeviceModelIdentifier(deviceUID); + String modelIdentifier = null; + if(CoreAudioDevice.isLoaded) + modelIdentifier + = CoreAudioDevice.getDeviceModelIdentifier(deviceUID); /* * TODO The intention of reinitialize() was to perform the @@ -398,7 +401,8 @@ else if (maxOutputChannels > 0) } } } - CoreAudioDevice.freeDevices(); + if(CoreAudioDevice.isLoaded) + CoreAudioDevice.freeDevices(); /* * Make sure that devices which support both capture and playback are -- GitLab