OSDN Git Service

OpenALAudio: constructor taking device buffer size and count was not calling this...
authornathan.sweet <nathan.sweet@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Thu, 8 Mar 2012 04:53:29 +0000 (04:53 +0000)
committernathan.sweet <nathan.sweet@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Thu, 8 Mar 2012 04:53:29 +0000 (04:53 +0000)
OpenALAudioDevice: made buffer size and count fields non-static so tempBuffer can be correct size.

backends/gdx-backend-jogl/src/com/badlogic/gdx/backends/jogl/JoglApplication.java
backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglApplication.java
backends/gdx-openal/src/com/badlogic/gdx/backends/openal/OpenALAudio.java
backends/gdx-openal/src/com/badlogic/gdx/backends/openal/OpenALAudioDevice.java
gdx/src/com/badlogic/gdx/Files.java

index a183f6c..1fdbf77 100644 (file)
@@ -111,7 +111,7 @@ public final class JoglApplication implements Application {
                JoglNativesLoader.load();\r
                graphics = new JoglGraphics(listener, config);\r
                input = new JoglInput(graphics.getCanvas());\r
-               audio = new OpenALAudio(config.audioDeviceBufferCount, config.audioDeviceBufferSize);\r
+               audio = new OpenALAudio(16, config.audioDeviceBufferCount, config.audioDeviceBufferSize);\r
                files = new JoglFiles();\r
 \r
                Gdx.app = JoglApplication.this;\r
index d363e1f..5dbfc13 100644 (file)
@@ -59,7 +59,7 @@ public class LwjglApplication implements Application {
                config.useGL20 = useGL2;\r
                config.vSyncEnabled = true;\r
                graphics = new LwjglGraphics(config);\r
-               audio = new OpenALAudio(config.audioDeviceBufferCount, config.audioDeviceBufferSize);\r
+               audio = new OpenALAudio(16, config.audioDeviceBufferCount, config.audioDeviceBufferSize);\r
                files = new LwjglFiles();\r
                input = new LwjglInput();\r
                this.listener = listener;\r
@@ -76,7 +76,7 @@ public class LwjglApplication implements Application {
                LwjglNativesLoader.load();\r
 \r
                graphics = new LwjglGraphics(config);\r
-               audio = new OpenALAudio(config.audioDeviceBufferCount, config.audioDeviceBufferSize);\r
+               audio = new OpenALAudio(16, config.audioDeviceBufferCount, config.audioDeviceBufferSize);\r
                files = new LwjglFiles();\r
                input = new LwjglInput();\r
                this.listener = listener;\r
@@ -111,7 +111,7 @@ public class LwjglApplication implements Application {
                LwjglNativesLoader.load();\r
 \r
                graphics = new LwjglGraphics(canvas, config);\r
-               audio = new OpenALAudio(config.audioDeviceBufferCount, config.audioDeviceBufferSize);\r
+               audio = new OpenALAudio(16, config.audioDeviceBufferCount, config.audioDeviceBufferSize);\r
                files = new LwjglFiles();\r
                input = new LwjglInput();\r
                this.listener = listener;\r
index ce37027..ca1c3e3 100644 (file)
@@ -54,8 +54,9 @@ import com.badlogic.gdx.utils.ObjectMap;
 \r
 /** @author Nathan Sweet */\r
 public class OpenALAudio implements Audio {\r
+       private final int deviceBufferSize;\r
+       private final int deviceBufferCount;\r
        private IntArray idleSources, allSources;\r
-       /** sound id to source **/\r
        private LongMap<Integer> soundIdToSource;\r
        private IntMap<Long> sourceToSoundId;\r
        private long nextSoundId = 0;\r
@@ -66,15 +67,13 @@ public class OpenALAudio implements Audio {
        boolean noDevice = false;\r
 \r
        public OpenALAudio () {\r
-               this(16);\r
+               this(16, 512, 9);\r
        }\r
 \r
-       public OpenALAudio(int bufferSize, int bufferCount) {\r
-               OpenALAudioDevice.bufferSize = bufferSize;\r
-               OpenALAudioDevice.bufferCount = bufferCount;\r
-       }\r
-       \r
-       public OpenALAudio (int simultaneousSources) {\r
+       public OpenALAudio (int simultaneousSources, int deviceBufferSize, int deviceBufferCount) {\r
+               this.deviceBufferSize = deviceBufferSize;\r
+               this.deviceBufferCount = deviceBufferCount;\r
+\r
                registerSound("ogg", Ogg.Sound.class);\r
                registerMusic("ogg", Ogg.Music.class);\r
                registerSound("wav", Wav.Sound.class);\r
@@ -144,7 +143,7 @@ public class OpenALAudio implements Audio {
        }\r
 \r
        int obtainSource (boolean isMusic) {\r
-               if(noDevice) return 0;\r
+               if (noDevice) return 0;\r
                for (int i = 0, n = idleSources.size; i < n; i++) {\r
                        int sourceId = idleSources.get(i);\r
                        int state = alGetSourcei(sourceId, AL_SOURCE_STATE);\r
@@ -174,7 +173,7 @@ public class OpenALAudio implements Audio {
        }\r
 \r
        void freeSource (int sourceID) {\r
-               if(noDevice) return;\r
+               if (noDevice) return;\r
                alSourceStop(sourceID);\r
                alSourcei(sourceID, AL_BUFFER, 0);\r
                if (sourceToSoundId.containsKey(sourceID)) {\r
@@ -185,7 +184,7 @@ public class OpenALAudio implements Audio {
        }\r
 \r
        void freeBuffer (int bufferID) {\r
-               if(noDevice) return;\r
+               if (noDevice) return;\r
                for (int i = 0, n = idleSources.size; i < n; i++) {\r
                        int sourceID = idleSources.get(i);\r
                        if (alGetSourcei(sourceID, AL_BUFFER) == bufferID) {\r
@@ -200,7 +199,7 @@ public class OpenALAudio implements Audio {
        }\r
 \r
        void stopSourcesWithBuffer (int bufferID) {\r
-               if(noDevice) return;\r
+               if (noDevice) return;\r
                for (int i = 0, n = idleSources.size; i < n; i++) {\r
                        int sourceID = idleSources.get(i);\r
                        if (alGetSourcei(sourceID, AL_BUFFER) == bufferID) {\r
@@ -214,7 +213,7 @@ public class OpenALAudio implements Audio {
        }\r
 \r
        public void update () {\r
-               if(noDevice) return;\r
+               if (noDevice) return;\r
                for (int i = 0; i < music.size; i++)\r
                        music.items[i].update();\r
        }\r
@@ -256,7 +255,7 @@ public class OpenALAudio implements Audio {
        }\r
 \r
        public void dispose () {\r
-               if(noDevice) return;\r
+               if (noDevice) return;\r
                for (int i = 0, n = allSources.size; i < n; i++) {\r
                        int sourceID = allSources.get(i);\r
                        int state = alGetSourcei(sourceID, AL_SOURCE_STATE);\r
@@ -276,49 +275,47 @@ public class OpenALAudio implements Audio {
                }\r
        }\r
 \r
-       public AudioDevice newAudioDevice (int sampleRate, final  boolean isMono) {\r
-               if(noDevice) return new AudioDevice() {\r
+       public AudioDevice newAudioDevice (int sampleRate, final boolean isMono) {\r
+               if (noDevice) return new AudioDevice() {\r
                        @Override\r
                        public void writeSamples (float[] samples, int offset, int numSamples) {\r
                        }\r
-                       \r
+\r
                        @Override\r
                        public void writeSamples (short[] samples, int offset, int numSamples) {\r
                        }\r
-                       \r
+\r
                        @Override\r
                        public void setVolume (float volume) {\r
                        }\r
-                       \r
+\r
                        @Override\r
                        public boolean isMono () {\r
                                return isMono;\r
                        }\r
-                       \r
+\r
                        @Override\r
                        public int getLatency () {\r
                                return 0;\r
                        }\r
-                       \r
+\r
                        @Override\r
                        public void dispose () {\r
                        }\r
                };\r
-               return new OpenALAudioDevice(this, sampleRate, isMono);\r
+               return new OpenALAudioDevice(this, sampleRate, isMono, deviceBufferSize, deviceBufferCount);\r
        }\r
 \r
        public AudioRecorder newAudioRecorder (int samplingRate, boolean isMono) {\r
-               if(noDevice) return new AudioRecorder() {\r
+               if (noDevice) return new AudioRecorder() {\r
                        @Override\r
                        public void read (short[] samples, int offset, int numSamples) {\r
                        }\r
-                       \r
+\r
                        @Override\r
                        public void dispose () {\r
                        }\r
                };\r
-               // BOZO - Write OpenAL recorder.\r
                return new JavaSoundAudioRecorder(samplingRate, isMono);\r
        }\r
-\r
 }\r
index bbd0587..9a65b61 100644 (file)
@@ -15,10 +15,7 @@ import static org.lwjgl.openal.AL10.*;
 \r
 /** @author Nathan Sweet */\r
 public class OpenALAudioDevice implements AudioDevice {\r
-       static public int bufferSize = 512;\r
-       static public int bufferCount = 9;\r
        static private final int bytesPerSample = 2;\r
-       static private final ByteBuffer tempBuffer = BufferUtils.createByteBuffer(bufferSize);\r
 \r
        private final OpenALAudio audio;\r
        private final int channels;\r
@@ -29,13 +26,19 @@ public class OpenALAudioDevice implements AudioDevice {
        private float volume = 1;\r
        private float renderedSeconds, secondsPerBuffer;\r
        private byte[] bytes;\r
+       private final int bufferSize;\r
+       private final int bufferCount;\r
+       private final ByteBuffer tempBuffer;\r
 \r
-       public OpenALAudioDevice (OpenALAudio audio, int sampleRate, boolean isMono) {\r
+       public OpenALAudioDevice (OpenALAudio audio, int sampleRate, boolean isMono, int bufferSize, int bufferCount) {\r
                this.audio = audio;\r
                channels = isMono ? 1 : 2;\r
+               this.bufferSize = bufferSize;\r
+               this.bufferCount = bufferCount;\r
                this.format = channels > 1 ? AL_FORMAT_STEREO16 : AL_FORMAT_MONO16;\r
                this.sampleRate = sampleRate;\r
                secondsPerBuffer = (float)bufferSize / bytesPerSample / channels / sampleRate;\r
+               tempBuffer = BufferUtils.createByteBuffer(bufferSize);\r
        }\r
 \r
        public void writeSamples (short[] samples, int offset, int numSamples) {\r
index 1a2254f..5b05af6 100644 (file)
@@ -44,7 +44,7 @@ public interface Files {
                 * when absolutely (heh) necessary. */\r
                Absolute,\r
                \r
-               /** Path relative to the private files directory on Android and to the application's root director on the desktop. */\r
+               /** Path relative to the private files directory on Android and to the application's root directory on the desktop. */\r
                Local;\r
        }\r
 \r