|
From: <ma...@us...> - 2007-04-19 22:22:25
|
Revision: 2778
http://svn.sourceforge.net/java-game-lib/?rev=2778&view=rev
Author: matzon
Date: 2007-04-19 15:22:18 -0700 (Thu, 19 Apr 2007)
Log Message:
-----------
Capture test for OpenAL 1.1
Added Paths:
-----------
trunk/LWJGL/src/java/org/lwjgl/test/openal/ALCCaptureTest.java
Added: trunk/LWJGL/src/java/org/lwjgl/test/openal/ALCCaptureTest.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/test/openal/ALCCaptureTest.java (rev 0)
+++ trunk/LWJGL/src/java/org/lwjgl/test/openal/ALCCaptureTest.java 2007-04-19 22:22:18 UTC (rev 2778)
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2002-2004 LWJGL Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of 'LWJGL' nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.lwjgl.test.openal;
+
+import java.nio.ByteBuffer;
+import java.nio.IntBuffer;
+
+import org.lwjgl.BufferUtils;
+import org.lwjgl.openal.AL;
+import org.lwjgl.openal.AL10;
+import org.lwjgl.openal.ALC10;
+import org.lwjgl.openal.ALC11;
+import org.lwjgl.openal.ALCdevice;
+import org.lwjgl.openal.OpenALException;
+
+/**
+ *
+ * This is a test for the ALC part of OpenAL
+ *
+ * @author Brian Matzon <br...@ma...>
+ * @version $Revision: 2286 $
+ * $Id: ALCTest.java 2286 2006-03-23 19:32:21Z matzon $
+ */
+public class ALCCaptureTest extends BasicTest {
+
+ /**
+ * Creates an instance of ALCTest
+ */
+ public ALCCaptureTest() {
+ super();
+ }
+
+ /**
+ * Runs the actual test, using supplied arguments
+ */
+ protected void execute(String[] args) {
+ int lastError = ALC10.ALC_NO_ERROR;
+ IntBuffer sampleCount = BufferUtils.createIntBuffer(1);
+
+ int state = AL10.AL_PLAYING;
+ int FMT = AL10.AL_FORMAT_MONO16;
+ int FMTSIZE = 16/8;
+ int FREQ = 44100;
+ int TIME = 5;
+ int SAMPS = (FREQ * TIME);
+ ByteBuffer buf = BufferUtils.createByteBuffer(SAMPS * FMTSIZE);
+
+ // check that capture is available
+ if(!ALC10.alcIsExtensionPresent(AL.getDevice(), "ALC_EXT_CAPTURE")) {
+ throw new OpenALException("ALC_EXT_CAPTURE extension not available");
+ }
+
+ // get list of devices
+ String captureDevices = ALC10.alcGetString(null, ALC11.ALC_CAPTURE_DEVICE_SPECIFIER);
+ System.out.println("captureDevices: " + captureDevices);
+
+
+ String defaultRecorder = ALC10.alcGetString(AL.getDevice(), ALC11.ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER);
+ System.out.println("Default capture device: " + defaultRecorder);
+
+ ALCdevice device = ALC11.alcCaptureOpenDevice(null, FREQ, FMT, SAMPS);
+
+
+
+ if(device != null) {
+ // record some sound
+ // =====================================
+ System.out.print("Recording using " + ALC10.alcGetString(device, ALC11.ALC_CAPTURE_DEVICE_SPECIFIER) + "...");
+ ALC11.alcCaptureStart(device);
+ while (sampleCount.get(0) < SAMPS) {
+ pause(1000);
+ ALC10.alcGetInteger(device, ALC11.ALC_CAPTURE_SAMPLES, sampleCount);
+ }
+ System.out.println("done");
+ ALC11.alcCaptureStop(device);
+
+ // capure the samples
+ ALC11.alcCaptureSamples(device, buf, SAMPS);
+ ALC11.alcCaptureCloseDevice(device);
+ // -------------------------------------
+
+ // play back recording
+ // ===================
+ IntBuffer buffers = BufferUtils.createIntBuffer(1);
+ IntBuffer sources = BufferUtils.createIntBuffer(1);
+
+ buffers.position(0).limit(1);
+ AL10.alGenBuffers(buffers);
+
+ sources.position(0).limit(1);
+ AL10.alGenSources(sources);
+
+ System.out.print("Playing...");
+
+ AL10.alBufferData(buffers.get(0), FMT, buf, FREQ);
+ AL10.alSourcei(sources.get(0), AL10.AL_BUFFER, buffers.get(0));
+ AL10.alSourcei(sources.get(0), AL10.AL_LOOPING, AL10.AL_FALSE);
+ AL10.alSourcePlay(sources.get(0));
+
+ while (state == AL10.AL_PLAYING)
+ {
+ pause(100);
+ state = AL10.alGetSourcei(sources.get(0), AL10.AL_SOURCE_STATE);
+ }
+
+ System.out.println("done");
+
+ AL10.alDeleteSources(sources);
+ AL10.alDeleteBuffers(buffers);
+ }
+
+ alExit();
+ }
+
+ /**
+ * main entry point
+ *
+ * @param args String array containing arguments
+ */
+ public static void main(String[] args) {
+ ALCCaptureTest alcTest = new ALCCaptureTest();
+ alcTest.execute(args);
+ System.exit(0);
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2007-04-19 22:44:09
|
Revision: 2788
http://svn.sourceforge.net/java-game-lib/?rev=2788&view=rev
Author: matzon
Date: 2007-04-19 15:44:07 -0700 (Thu, 19 Apr 2007)
Log Message:
-----------
output capture devices
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/test/openal/ALCCaptureTest.java
Modified: trunk/LWJGL/src/java/org/lwjgl/test/openal/ALCCaptureTest.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/test/openal/ALCCaptureTest.java 2007-04-19 22:43:38 UTC (rev 2787)
+++ trunk/LWJGL/src/java/org/lwjgl/test/openal/ALCCaptureTest.java 2007-04-19 22:44:07 UTC (rev 2788)
@@ -80,16 +80,16 @@
}
// get list of devices
- String captureDevices = ALC10.alcGetString(null, ALC11.ALC_CAPTURE_DEVICE_SPECIFIER);
- System.out.println("captureDevices: " + captureDevices);
-
+ String[] captureDevices = ALC10.alcGetString(null, ALC11.ALC_CAPTURE_DEVICE_SPECIFIER).split("\0");
+ System.out.println("Available Capture Devices: ");
+ for(int i=0; i<captureDevices.length; i++) {
+ System.out.println(i + ": " + captureDevices[i]);
+ }
String defaultRecorder = ALC10.alcGetString(AL.getDevice(), ALC11.ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER);
System.out.println("Default capture device: " + defaultRecorder);
ALCdevice device = ALC11.alcCaptureOpenDevice(null, FREQ, FMT, SAMPS);
-
-
if(device != null) {
// record some sound
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|