GlueGen: src/java/com/jogamp/common/av/AudioSinkFactory.java Source File

GlueGen v2.6.0-rc-20250722 GlueGen, Native Binding Generator for Java™ (public API).

AudioSinkFactory.java
Go to the documentation of this file.
1/**
2 * Copyright 2013-2023 JogAmp Community. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are
5 * permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 * The views and conclusions contained in the software and documentation are those of the
25 * authors and should not be interpreted as representing official policies, either expressed
26 * or implied, of JogAmp Community.
27 */
28package com.jogamp.common.av;
29
30import com.jogamp.common.util.ReflectionUtil;
31
32import jogamp.common.av.NullAudioSink;
33
34 public class AudioSinkFactory {
35 private static final String ALAudioSinkClazzName = "com.jogamp.openal.util.ALAudioSink";
36 private static final String JavaAudioSinkClazzName = "jogamp.common.av.JavaSoundAudioSink";
37
38 public static AudioSink createDefault(final ClassLoader cl) {
39 AudioSink sink = create(cl, ALAudioSinkClazzName);
40 if( null == sink ) {
41 sink = create(cl, JavaAudioSinkClazzName);
42 }
43 if( null == sink ) {
44 sink = createNull();
45 }
46 return sink;
47 }
48 public static AudioSink createNull() {
49 return new NullAudioSink();
50 }
51
52 public static AudioSink create(final ClassLoader cl, final String implName) {
53 final AudioSink audioSink;
54 if(ReflectionUtil.isClassAvailable(implName, cl)){
55 try {
56 audioSink = (AudioSink) ReflectionUtil.createInstance(implName, cl);
57 if( audioSink.isAvailable() ) {
58 return audioSink;
59 } else if(AudioSink.DEBUG) {
60 System.err.println("AudioSinkFactory: Couldn't instantiate AudioSink '"+implName+"'");
61 }
62 } catch (final Throwable t) {
63 if(AudioSink.DEBUG) { System.err.println("Caught "+t.getClass().getName()+": "+t.getMessage()); t.printStackTrace(); }
64 }
65 }
66 return null;
67 }
68
69}
com.jogamp.common.av.AudioSinkFactory
Definition: AudioSinkFactory.java:34
com.jogamp.common.av.AudioSinkFactory.createNull
static AudioSink createNull()
Definition: AudioSinkFactory.java:48
com.jogamp.common.av.AudioSinkFactory.create
static AudioSink create(final ClassLoader cl, final String implName)
Definition: AudioSinkFactory.java:52
com.jogamp.common.av.AudioSinkFactory.createDefault
static AudioSink createDefault(final ClassLoader cl)
Definition: AudioSinkFactory.java:38
com.jogamp.common.util.ReflectionUtil
Definition: ReflectionUtil.java:56
com.jogamp.common.util.ReflectionUtil.isClassAvailable
static final boolean isClassAvailable(final String clazzName, final ClassLoader cl)
Returns true only if the class could be loaded.
Definition: ReflectionUtil.java:158
com.jogamp.common.util.ReflectionUtil.createInstance
static final Object createInstance(final Constructor<?> cstr, final Object ... cstrArgs)
Definition: ReflectionUtil.java:263
com.jogamp.common.av.AudioSink
Definition: AudioSink.java:34
com.jogamp.common.av.AudioSink.isAvailable
boolean isAvailable()
Returns the available state of this instance.
com.jogamp.common.av.AudioSink.DEBUG
static final boolean DEBUG
Definition: AudioSink.java:35