changeset in /hg/icedtea6: Integrate Gervill.
Mark Wielaard
mark at klomp.org
Wed Apr 30 13:09:38 PDT 2008
changeset bcba163568ac in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=bcba163568ac
description:
Integrate Gervill.
2008-04-30 Mark Wielaard <mark at klomp.org>
* Makefile.am (ICEDTEA_PATCHES): Add patches/icedtea-gervill.patch.
* Makefile.in: Regenerated.
* patches/icedtea-gervill.patch: New patch.
* overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/*:
New Gervill files.
diffstat:
101 files changed, 26224 insertions(+), 2 deletions(-)
ChangeLog | 8
Makefile.am | 1
Makefile.in | 4
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFileSoundbankReader.java | 141
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatConverter.java | 670 ++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatInputStream.java | 297 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioSynthesizer.java | 132
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioSynthesizerPropertyInfo.java | 85
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt | 179
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSInfo.java | 115
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSInstrument.java | 384 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSModulator.java | 284 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSRegion.java | 162
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSample.java | 131
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSampleLoop.java | 62
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSampleOptions.java | 85
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSoundbank.java | 1333 ++++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/DLSSoundbankReader.java | 82
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/EmergencySoundbank.java | 2795 ++++++++++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/FFT.java | 771 ++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/InvalidDataException.java | 49
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/InvalidFormatException.java | 48
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/JARSoundbankReader.java | 118
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/LICENSE | 347 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelAbstractChannelMixer.java | 130
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelAbstractOscillator.java | 205
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelByteBuffer.java | 347 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelByteBufferWavetable.java | 296 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelChannelMixer.java | 54
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelConnectionBlock.java | 149
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelDestination.java | 99
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelDirectedPlayer.java | 41
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelDirector.java | 47
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelIdentifier.java | 153
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelInstrument.java | 143
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelInstrumentComparator.java | 55
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelMappedInstrument.java | 66
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelOscillator.java | 44
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelOscillatorStream.java | 46
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelPatch.java | 57
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelPerformer.java | 130
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelSource.java | 104
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelStandardDirector.java | 88
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelStandardTransform.java | 134
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelTransform.java | 37
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/ModelWavetable.java | 50
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/PATInstrument.java | 536 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/PATSample.java | 113
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/PATSoundbankReader.java | 294 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/README.txt | 403 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFInvalidDataException.java | 46
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFInvalidFormatException.java | 47
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFReader.java | 308 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/RIFFWriter.java | 377 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2GlobalRegion.java | 36
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Instrument.java | 808 ++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2InstrumentRegion.java | 46
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Layer.java | 85
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2LayerRegion.java | 46
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Modulator.java | 96
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Region.java | 179
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Sample.java | 219
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2Soundbank.java | 1000 +++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SF2SoundbankReader.java | 86
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SimpleInstrument.java | 210
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SimpleSoundbank.java | 155
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAbstractResampler.java | 422 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioBuffer.java | 112
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioProcessor.java | 52
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioPusher.java | 102
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChannel.java | 1502 +++++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChannelProxy.java | 206
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChorus.java | 383 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftControl.java | 40
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftCubicResampler.java | 91
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftEnvelopeGenerator.java | 338 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftFilter.java | 657 ++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftInstrument.java | 95
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java | 278
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLanczosResampler.java | 121
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLimiter.java | 202
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLinearResampler.java | 74
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLinearResampler2.java | 110
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLowFrequencyOscillator.java | 138
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java | 1003 +++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMidiAudioFileReader.java | 218
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftPerformer.java | 763 ++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftPointResampler.java | 67
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftProcess.java | 43
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftProvider.java | 56
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftReceiver.java | 93
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftResampler.java | 39
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftResamplerStreamer.java | 41
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftReverb.java | 500 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftShortMessage.java | 61
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSincResampler.java | 144
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java | 1006 +++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftTuning.java | 259
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java | 959 +++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/WaveFloatFileReader.java | 173
patches/icedtea-gervill.patch | 30
diffs (truncated from 26651 to 500 lines):
diff -r 1b845dd20b86 -r bcba163568ac ChangeLog
--- a/ChangeLog Tue Apr 29 12:47:53 2008 -0400
+++ b/ChangeLog Wed Apr 30 22:09:08 2008 +0200
@@ -1,3 +1,11 @@ 2008-04-29 Lillian Angel <langel at redha
+2008-04-30 Mark Wielaard <mark at klomp.org>
+
+ * Makefile.am (ICEDTEA_PATCHES): Add patches/icedtea-gervill.patch.
+ * Makefile.in: Regenerated.
+ * patches/icedtea-gervill.patch: New patch.
+ * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/*:
+ New Gervill files.
+
2008-04-29 Lillian Angel <langel at redhat.com>
* Makefile.am
diff -r 1b845dd20b86 -r bcba163568ac Makefile.am
--- a/Makefile.am Tue Apr 29 12:47:53 2008 -0400
+++ b/Makefile.am Wed Apr 30 22:09:08 2008 +0200
@@ -309,6 +309,7 @@ ICEDTEA_PATCHES = \
patches/icedtea-color-createcontext.patch \
patches/icedtea-color-profiles.patch \
patches/icedtea-fonts.patch \
+ patches/icedtea-gervill.patch \
$(GCC_PATCH) \
$(DISTRIBUTION_PATCHES)
diff -r 1b845dd20b86 -r bcba163568ac Makefile.in
--- a/Makefile.in Tue Apr 29 12:47:53 2008 -0400
+++ b/Makefile.in Wed Apr 30 22:09:08 2008 +0200
@@ -412,8 +412,8 @@ ICEDTEA_PATCHES = $(ZERO_PATCHES_COND) \
patches/icedtea-LCMS-setTagData.patch \
patches/icedtea-color-createcontext.patch \
patches/icedtea-color-profiles.patch \
- patches/icedtea-fonts.patch $(GCC_PATCH) \
- $(DISTRIBUTION_PATCHES) $(am__append_7)
+ patches/icedtea-fonts.patch patches/icedtea-gervill.patch \
+ $(GCC_PATCH) $(DISTRIBUTION_PATCHES) $(am__append_7)
# Patch OpenJDK for plug replacements and ecj.
ICEDTEA_ECJ_PATCH = patches/icedtea-ecj.patch
diff -r 1b845dd20b86 -r bcba163568ac overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFileSoundbankReader.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFileSoundbankReader.java Wed Apr 30 22:09:08 2008 +0200
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package com.sun.media.sound;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.sound.midi.InvalidMidiDataException;
+import javax.sound.midi.Soundbank;
+import javax.sound.midi.spi.SoundbankReader;
+import javax.sound.sampled.AudioInputStream;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.UnsupportedAudioFileException;
+
+/**
+ * Soundbank reader that uses audio files as soundbanks.
+ *
+ * @version %I%, %E%
+ * @author Karl Helgason
+ *
+ */
+public class AudioFileSoundbankReader extends SoundbankReader {
+
+ public Soundbank getSoundbank(URL url) throws InvalidMidiDataException,
+ IOException {
+ try {
+ AudioInputStream ais = AudioSystem.getAudioInputStream(url);
+ Soundbank sbk = getSoundbank(ais);
+ ais.close();
+ return sbk;
+ } catch (UnsupportedAudioFileException e) {
+ return null;
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+ public Soundbank getSoundbank(InputStream stream)
+ throws InvalidMidiDataException, IOException {
+
+ stream.mark(512);
+ try {
+ AudioInputStream ais = AudioSystem.getAudioInputStream(stream);
+ Soundbank sbk = getSoundbank(ais);
+ if (sbk != null)
+ return sbk;
+ } catch (UnsupportedAudioFileException e) {
+ } catch (IOException e) {
+ }
+ stream.reset();
+ return null;
+ }
+
+ public Soundbank getSoundbank(AudioInputStream ais)
+ throws InvalidMidiDataException, IOException {
+
+ try {
+ try {
+ byte[] buffer;
+ if (ais.getFrameLength() == -1) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] buff = new byte[1024 - (1024 % ais.getFormat().getFrameSize())];
+ int ret;
+ while ((ret = ais.read(buff)) != -1)
+ baos.write(buff, 0, ret);
+ ais.close();
+ buffer = baos.toByteArray();
+ } else {
+ buffer = new byte[(int) (ais.getFrameLength() * ais
+ .getFormat().getFrameSize())];
+ ais.read(buffer);
+ }
+ ModelByteBufferWavetable osc = new ModelByteBufferWavetable(
+ new ModelByteBuffer(buffer), ais.getFormat(), -4800);
+ ModelPerformer performer = new ModelPerformer();
+ ;
+ performer.getOscillators().add(osc);
+
+ SimpleSoundbank sbk = new SimpleSoundbank();
+ SimpleInstrument ins = new SimpleInstrument();
+ ins.add(performer);
+ sbk.addInstrument(ins);
+ return sbk;
+ } finally {
+ }
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public Soundbank getSoundbank(File file) throws InvalidMidiDataException,
+ IOException {
+
+ try {
+ AudioInputStream ais = AudioSystem.getAudioInputStream(file);
+ ais.close();
+ ModelByteBufferWavetable osc = new ModelByteBufferWavetable(
+ new ModelByteBuffer(file, 0, file.length()), -4800);
+ ModelPerformer performer = new ModelPerformer();
+ performer.getOscillators().add(osc);
+ SimpleSoundbank sbk = new SimpleSoundbank();
+ SimpleInstrument ins = new SimpleInstrument();
+ ins.add(performer);
+ sbk.addInstrument(ins);
+ return sbk;
+ } catch (UnsupportedAudioFileException e1) {
+ return null;
+ } catch (IOException e) {
+ return null;
+ }
+
+ }
+
+
+}
diff -r 1b845dd20b86 -r bcba163568ac overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatConverter.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatConverter.java Wed Apr 30 22:09:08 2008 +0200
@@ -0,0 +1,670 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package com.sun.media.sound;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.FloatBuffer;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioFormat.Encoding;
+
+/**
+ * This class is used to convert between 8,16,24,32 bit signed/unsigned
+ * big/litle endian fixed/floating point byte buffers and float buffers.
+ *
+ * @version %I%, %E%
+ * @author Karl Helgason
+ */
+
+public abstract class AudioFloatConverter {
+
+ public static final Encoding PCM_FLOAT = new Encoding("PCM_FLOAT");
+
+ /***************************************************************************
+ *
+ * 32 bit float, little/big-endian
+ *
+ **************************************************************************/
+
+ // PCM 32 bit float, little-endian
+ private static class AudioFloatConversion32L extends AudioFloatConverter {
+ ByteBuffer bytebuffer = null;
+
+ FloatBuffer floatbuffer = null;
+
+ public float[] toFloatArray(byte[] in_buff, int in_offset,
+ float[] out_buff, int out_offset, int out_len) {
+ int in_len = out_len * 4;
+ if (bytebuffer == null || bytebuffer.capacity() < in_len) {
+ bytebuffer = ByteBuffer.allocate(in_len).order(
+ ByteOrder.LITTLE_ENDIAN);
+ floatbuffer = bytebuffer.asFloatBuffer();
+ }
+ bytebuffer.position(0);
+ floatbuffer.position(0);
+ bytebuffer.put(in_buff, in_offset, in_len);
+ floatbuffer.get(out_buff, out_offset, out_len);
+ return out_buff;
+ }
+
+ public byte[] toByteArray(float[] in_buff, int in_offset, int in_len,
+ byte[] out_buff, int out_offset) {
+ int out_len = in_len * 4;
+ if (bytebuffer == null || bytebuffer.capacity() < out_len) {
+ bytebuffer = ByteBuffer.allocate(out_len).order(
+ ByteOrder.LITTLE_ENDIAN);
+ floatbuffer = bytebuffer.asFloatBuffer();
+ }
+ floatbuffer.position(0);
+ bytebuffer.position(0);
+ floatbuffer.put(in_buff, in_offset, in_len);
+ bytebuffer.get(out_buff, out_offset, out_len);
+ return out_buff;
+ }
+ }
+
+ // PCM 32 bit float, big-endian
+ private static class AudioFloatConversion32B extends AudioFloatConverter {
+ ByteBuffer bytebuffer = null;
+
+ FloatBuffer floatbuffer = null;
+
+ public float[] toFloatArray(byte[] in_buff, int in_offset,
+ float[] out_buff, int out_offset, int out_len) {
+ int in_len = out_len * 4;
+ if (bytebuffer == null || bytebuffer.capacity() < in_len) {
+ bytebuffer = ByteBuffer.allocate(in_len).order(
+ ByteOrder.BIG_ENDIAN);
+ floatbuffer = bytebuffer.asFloatBuffer();
+ }
+ bytebuffer.position(0);
+ floatbuffer.position(0);
+ bytebuffer.put(in_buff, in_offset, in_len);
+ floatbuffer.get(out_buff, out_offset, out_len);
+ return out_buff;
+ }
+
+ public byte[] toByteArray(float[] in_buff, int in_offset, int in_len,
+ byte[] out_buff, int out_offset) {
+ int out_len = in_len * 4;
+ if (bytebuffer == null || bytebuffer.capacity() < out_len) {
+ bytebuffer = ByteBuffer.allocate(out_len).order(
+ ByteOrder.BIG_ENDIAN);
+ floatbuffer = bytebuffer.asFloatBuffer();
+ }
+ floatbuffer.position(0);
+ bytebuffer.position(0);
+ floatbuffer.put(in_buff, in_offset, in_len);
+ bytebuffer.get(out_buff, out_offset, out_len);
+ return out_buff;
+ }
+ }
+
+ /***************************************************************************
+ *
+ * 8 bit signed/unsigned
+ *
+ **************************************************************************/
+
+ // PCM 8 bit, signed
+ private static class AudioFloatConversion8S extends AudioFloatConverter {
+ public float[] toFloatArray(byte[] in_buff, int in_offset,
+ float[] out_buff, int out_offset, int out_len) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < out_len; i++)
+ out_buff[ox++] = in_buff[ix++] * (1.0f / 127.0f);
+ return out_buff;
+ }
+
+ public byte[] toByteArray(float[] in_buff, int in_offset, int in_len,
+ byte[] out_buff, int out_offset) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < in_len; i++)
+ out_buff[ox++] = (byte) (in_buff[ix++] * 127.0f);
+ return out_buff;
+ }
+ }
+
+ // PCM 8 bit, unsigned
+ private static class AudioFloatConversion8U extends AudioFloatConverter {
+ public float[] toFloatArray(byte[] in_buff, int in_offset,
+ float[] out_buff, int out_offset, int out_len) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < out_len; i++)
+ out_buff[ox++] = ((in_buff[ix++]&0xFF) - 127) * (1.0f / 127.0f);
+ return out_buff;
+ }
+
+ public byte[] toByteArray(float[] in_buff, int in_offset, int in_len,
+ byte[] out_buff, int out_offset) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < in_len; i++)
+ out_buff[ox++] = (byte) (127 + in_buff[ix++] * 127.0f);
+ return out_buff;
+ }
+ }
+
+ /***************************************************************************
+ *
+ * 16 bit signed/unsigned, little/big-endian
+ *
+ **************************************************************************/
+
+ // PCM 16 bit, signed, little-endian
+ private static class AudioFloatConversion16SL extends AudioFloatConverter {
+ public float[] toFloatArray(byte[] in_buff, int in_offset,
+ float[] out_buff, int out_offset, int out_len) {
+ int ix = in_offset;
+ /*
+ int ox = out_offset;
+ for (int i = 0; i < out_len; i++)
+ out_buff[ox++] = ((short) ((in_buff[ix++] & 0xFF) | (in_buff[ix++] << 8)))
+ * (1.0f / 32767.0f);
+ */
+ int len = out_offset + out_len;
+ for (int ox = out_offset; ox < len; ox++)
+ out_buff[ox] = ((short) ((in_buff[ix++] & 0xFF) | (in_buff[ix++] << 8)))
+ * (1.0f / 32767.0f);
+
+ return out_buff;
+ }
+
+ public byte[] toByteArray(float[] in_buff, int in_offset, int in_len,
+ byte[] out_buff, int out_offset) {
+ int ox = out_offset;
+ int len = in_offset + in_len;
+ for (int ix = in_offset; ix < len; ix++) {
+ int x = (int) (in_buff[ix] * 32767.0);
+ out_buff[ox++] = (byte) x;
+ out_buff[ox++] = (byte) (x >>> 8);
+ }
+ return out_buff;
+ }
+ }
+
+ // PCM 16 bit, signed, big-endian
+ private static class AudioFloatConversion16SB extends AudioFloatConverter {
+ public float[] toFloatArray(byte[] in_buff, int in_offset,
+ float[] out_buff, int out_offset, int out_len) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < out_len; i++)
+ out_buff[ox++] = ((short) ((in_buff[ix++] << 8) | (in_buff[ix++] & 0xFF)))
+ * (1.0f / 32767.0f);
+ return out_buff;
+ }
+
+ public byte[] toByteArray(float[] in_buff, int in_offset, int in_len,
+ byte[] out_buff, int out_offset) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < in_len; i++) {
+ int x = (int) (in_buff[ix++] * 32767.0);
+ out_buff[ox++] = (byte) (x >>> 8);
+ out_buff[ox++] = (byte) x;
+ }
+ return out_buff;
+ }
+ }
+
+ // PCM 16 bit, unsigned, little-endian
+ private static class AudioFloatConversion16UL extends AudioFloatConverter {
+ public float[] toFloatArray(byte[] in_buff, int in_offset,
+ float[] out_buff, int out_offset, int out_len) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < out_len; i++)
+ out_buff[ox++] = (( ((in_buff[ix++] & 0xFF) | ((in_buff[ix++] & 0xFF) << 8))) - 32767)
+ * (1.0f / 32767.0f);
+ return out_buff;
+ }
+
+ public byte[] toByteArray(float[] in_buff, int in_offset, int in_len,
+ byte[] out_buff, int out_offset) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < in_len; i++) {
+ int x = 32767 + (int) (in_buff[ix++] * 32767.0);
+ out_buff[ox++] = (byte) x;
+ out_buff[ox++] = (byte) (x >>> 8);
+ }
+ return out_buff;
+ }
+ }
+
+ // PCM 16 bit, unsigned, big-endian
+ private static class AudioFloatConversion16UB extends AudioFloatConverter {
+ public float[] toFloatArray(byte[] in_buff, int in_offset,
+ float[] out_buff, int out_offset, int out_len) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < out_len; i++)
+ out_buff[ox++] = (( (((in_buff[ix++] & 0xFF) << 8) | (in_buff[ix++] & 0xFF))) - 32767)
+ * (1.0f / 32767.0f);
+ return out_buff;
+ }
+
+ public byte[] toByteArray(float[] in_buff, int in_offset, int in_len,
+ byte[] out_buff, int out_offset) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < in_len; i++) {
+ int x = 32767 + (int) (in_buff[ix++] * 32767.0);
+ out_buff[ox++] = (byte) (x >>> 8);
+ out_buff[ox++] = (byte) x;
+ }
+ return out_buff;
+ }
+ }
+
+ /***************************************************************************
+ *
+ * 24 bit signed/unsigned, little/big-endian
+ *
+ **************************************************************************/
+
+ // PCM 24 bit, signed, little-endian
+ private static class AudioFloatConversion24SL extends AudioFloatConverter {
+ public float[] toFloatArray(byte[] in_buff, int in_offset,
+ float[] out_buff, int out_offset, int out_len) {
+ int ix = in_offset;
+ int ox = out_offset;
+ for (int i = 0; i < out_len; i++) {
+ int x = (in_buff[ix++] & 0xFF) | ((in_buff[ix++] & 0xFF) << 8)
+ | ((in_buff[ix++] & 0xFF) << 16);
+ if (x > 8388607)
+ x -= 16777216;
+ out_buff[ox++] = x * (1.0f / 8388607.0f);
+ }
+ return out_buff;
+ }
+
+ public byte[] toByteArray(float[] in_buff, int in_offset, int in_len,
+ byte[] out_buff, int out_offset) {
More information about the distro-pkg-dev
mailing list