changeset in /hg/icedtea6: Updated to new Gervill CVS.
Mark Wielaard
mark at klomp.org
Mon Nov 10 03:43:08 PST 2008
changeset cfe2c755ee47 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=cfe2c755ee47
description:
Updated to new Gervill CVS.
- Fix: Throw IllegalArgumentException Exception on
invalid soundbank to:
SoftSynthesizer.unloadAllInstruments(Soundbank soundbank)
SoftSynthesizer.unloadInstruments(Soundbank soundbank, Patch[] patchList)
just like done in:
SoftSynthesizer.unloadInstrument(Instrument instrument).
- Change: SoftMainMixer, SoftVoice optimized for mono voices.
- Change: SoftFilter optimized.
- Fix: Turn SoftJitterCorrector, SoftAudioPusher threads into a daemon threads.
These threads prevented the VM to exit when synthesizer was open.
See: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=213
2008-11-10 Mark Wielaard <mark at klomp.org>
* overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/
CHANGES.txt,SoftAudioPusher.java,SoftFilter.java,
SoftJitterCorrector.java,SoftMainMixer.java,SoftVoice.java:
Updated to new Gervill CVS.
diffstat:
7 files changed, 107 insertions(+), 26 deletions(-)
ChangeLog | 7 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt | 15 ++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioPusher.java | 1
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftFilter.java | 22 ++-
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java | 1
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java | 59 ++++++++--
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java | 28 +++-
diffs (298 lines):
diff -r 688efd120766 -r cfe2c755ee47 ChangeLog
--- a/ChangeLog Sun Nov 09 22:31:21 2008 +0100
+++ b/ChangeLog Mon Nov 10 12:43:00 2008 +0100
@@ -1,3 +1,10 @@ 2008-11-09 Mark Wielaard <mark at klomp.o
+2008-11-10 Mark Wielaard <mark at klomp.org>
+
+ * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/
+ CHANGES.txt,SoftAudioPusher.java,SoftFilter.java,
+ SoftJitterCorrector.java,SoftMainMixer.java,SoftVoice.java:
+ Updated to new Gervill CVS.
+
2008-11-09 Mark Wielaard <mark at klomp.org>
* Makefile.am (check-langtools): Run jtreg with -samevm.
diff -r 688efd120766 -r cfe2c755ee47 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt Sun Nov 09 22:31:21 2008 +0100
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt Mon Nov 10 12:43:00 2008 +0100
@@ -1,3 +1,14 @@
+ - Fix: Throw IllegalArgumentException Exception on
+ invalid soundbank to:
+ SoftSynthesizer.unloadAllInstruments(Soundbank soundbank)
+ SoftSynthesizer.unloadInstruments(Soundbank soundbank, Patch[] patchList)
+ just like done in:
+ SoftSynthesizer.unloadInstrument(Instrument instrument).
+ - Change: SoftMainMixer, SoftVoice optimized for mono voices.
+ - Change: SoftFilter optimized.
+ - Fix: Turn SoftJitterCorrector, SoftAudioPusher threads into a daemon threads.
+ These threads prevented the VM to exit when synthesizer was open.
+ See: http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=213
- Add: More JTreg tests added:
EmergencySoundbank
SoftFilter
@@ -6,6 +17,8 @@
- Fix: ModelByteBuffer.skip called super.skip
instead to call to RandomAccessFile directly.
JTreg tests added: ModelByteBuffer/RandomFileInputStream/*.java
+
+Version 1.0.2 (released in OpenJDK 6 b12)
- Fix: ModelByteBuffer.len was being modified in inner
class RandomFileInputStream. The variable was made final
and RandomFileInputStream.read methods where fixed.
@@ -13,7 +26,7 @@
Keys array was to small, it couldn't
hold all possible midi notes (0..127).
-Version 1.0.1
+Version 1.0.1 (released as 1.0)
- Fix: Created dummy SourceDataline so that following
jtreg test can be tested without using
a real Audio Device SourceDataLine.
diff -r 688efd120766 -r cfe2c755ee47 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioPusher.java
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioPusher.java Sun Nov 09 22:31:21 2008 +0100
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioPusher.java Mon Nov 10 12:43:00 2008 +0100
@@ -54,6 +54,7 @@ public class SoftAudioPusher implements
return;
active = true;
audiothread = new Thread(this);
+ audiothread.setDaemon(true);
audiothread.setPriority(Thread.MAX_PRIORITY);
audiothread.start();
}
diff -r 688efd120766 -r cfe2c755ee47 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftFilter.java
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftFilter.java Sun Nov 09 22:31:21 2008 +0100
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftFilter.java Mon Nov 10 12:43:00 2008 +0100
@@ -543,8 +543,6 @@ public class SoftFilter {
public void filter1(SoftAudioBuffer sbuffer) {
- float[] buffer = sbuffer.array();
-
if (dirty) {
filter1calc();
dirty = false;
@@ -559,6 +557,7 @@ public class SoftFilter {
if (wet > 0 || last_wet > 0) {
+ float[] buffer = sbuffer.array();
int len = buffer.length;
float a0 = this.last_a0;
float q = this.last_q;
@@ -577,14 +576,16 @@ public class SoftFilter {
q += q_delta;
gain += gain_delta;
wet += wet_delta;
- y1 = (1 - q * a0) * y1 - (a0) * y2 + (a0) * buffer[i];
- y2 = (1 - q * a0) * y2 + (a0) * y1;
+ float ga0 = (1 - q * a0);
+ y1 = ga0 * y1 + (a0) * (buffer[i] - y2);
+ y2 = ga0 * y2 + (a0) * y1;
buffer[i] = y2 * gain * wet + buffer[i] * (1 - wet);
}
} else if (a0_delta == 0 && q_delta == 0) {
- for (int i = 0; i < len; i++) {
- y1 = (1 - q * a0) * y1 - (a0) * y2 + (a0) * buffer[i];
- y2 = (1 - q * a0) * y2 + (a0) * y1;
+ float ga0 = (1 - q * a0);
+ for (int i = 0; i < len; i++) {
+ y1 = ga0 * y1 + (a0) * (buffer[i] - y2);
+ y2 = ga0 * y2 + (a0) * y1;
buffer[i] = y2 * gain;
}
} else {
@@ -592,8 +593,9 @@ public class SoftFilter {
a0 += a0_delta;
q += q_delta;
gain += gain_delta;
- y1 = (1 - q * a0) * y1 - (a0) * y2 + (a0) * buffer[i];
- y2 = (1 - q * a0) * y2 + (a0) * y1;
+ float ga0 = (1 - q * a0);
+ y1 = ga0 * y1 + (a0) * (buffer[i] - y2);
+ y2 = ga0 * y2 + (a0) * y1;
buffer[i] = y2 * gain;
}
}
@@ -611,4 +613,4 @@ public class SoftFilter {
this.last_gain = this.gain;
this.last_wet = this.wet;
}
-}
+}
\ No newline at end of file
diff -r 688efd120766 -r cfe2c755ee47 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java Sun Nov 09 22:31:21 2008 +0100
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftJitterCorrector.java Mon Nov 10 12:43:00 2008 +0100
@@ -216,6 +216,7 @@ public class SoftJitterCorrector extends
};
thread = new Thread(runnable);
+ thread.setDaemon(true);
thread.setPriority(Thread.MAX_PRIORITY);
thread.start();
}
diff -r 688efd120766 -r cfe2c755ee47 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java Sun Nov 09 22:31:21 2008 +0100
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java Mon Nov 10 12:43:00 2008 +0100
@@ -48,16 +48,18 @@ public class SoftMainMixer {
public final static int CHANNEL_LEFT = 0;
public final static int CHANNEL_RIGHT = 1;
- public final static int CHANNEL_EFFECT1 = 2;
- public final static int CHANNEL_EFFECT2 = 3;
- public final static int CHANNEL_EFFECT3 = 4;
- public final static int CHANNEL_EFFECT4 = 5;
+ public final static int CHANNEL_MONO = 2;
+ public final static int CHANNEL_EFFECT1 = 3;
+ public final static int CHANNEL_EFFECT2 = 4;
+ public final static int CHANNEL_EFFECT3 = 5;
+ public final static int CHANNEL_EFFECT4 = 6;
public final static int CHANNEL_LEFT_DRY = 10;
public final static int CHANNEL_RIGHT_DRY = 11;
public final static int CHANNEL_SCRATCH1 = 12;
public final static int CHANNEL_SCRATCH2 = 13;
public final static int CHANNEL_CHANNELMIXER_LEFT = 14;
public final static int CHANNEL_CHANNELMIXER_RIGHT = 15;
+ public final static int CHANNEL_CHANNELMIXER_MONO = 16;
protected boolean active_sensing_on = false;
private long msec_last_activity = -1;
private boolean pusher_silent = false;
@@ -485,8 +487,10 @@ public class SoftMainMixer {
// to channelmixer left,right input/output
SoftAudioBuffer leftbak = buffers[CHANNEL_LEFT];
SoftAudioBuffer rightbak = buffers[CHANNEL_RIGHT];
+ SoftAudioBuffer monobak = buffers[CHANNEL_MONO];
buffers[CHANNEL_LEFT] = buffers[CHANNEL_CHANNELMIXER_LEFT];
- buffers[CHANNEL_RIGHT] = buffers[CHANNEL_CHANNELMIXER_LEFT];
+ buffers[CHANNEL_RIGHT] = buffers[CHANNEL_CHANNELMIXER_RIGHT];
+ buffers[CHANNEL_MONO] = buffers[CHANNEL_CHANNELMIXER_MONO];
int bufferlen = buffers[CHANNEL_LEFT].getSize();
@@ -503,6 +507,7 @@ public class SoftMainMixer {
for (ModelChannelMixer cmixer : act_registeredMixers) {
for (int i = 0; i < cbuffer.length; i++)
Arrays.fill(cbuffer[i], 0);
+ buffers[CHANNEL_MONO].clear();
boolean hasactivevoices = false;
for (int i = 0; i < voicestatus.length; i++)
if (voicestatus[i].active)
@@ -516,6 +521,26 @@ public class SoftMainMixer {
cur_registeredMixers = null;
}
}
+
+ if(!buffers[CHANNEL_MONO].isSilent())
+ {
+ float[] mono = buffers[CHANNEL_MONO].array();
+ float[] left = buffers[CHANNEL_LEFT].array();
+ if (nrofchannels != 1) {
+ float[] right = buffers[CHANNEL_RIGHT].array();
+ for (int i = 0; i < bufferlen; i++) {
+ float v = mono[i];
+ left[i] += v;
+ right[i] += v;
+ }
+ }
+ else
+ {
+ for (int i = 0; i < bufferlen; i++) {
+ left[i] += mono[i];
+ }
+ }
+ }
for (int i = 0; i < cbuffer.length; i++) {
float[] cbuff = cbuffer[i];
@@ -539,6 +564,7 @@ public class SoftMainMixer {
buffers[CHANNEL_LEFT] = leftbak;
buffers[CHANNEL_RIGHT] = rightbak;
+ buffers[CHANNEL_MONO] = monobak;
}
@@ -546,6 +572,27 @@ public class SoftMainMixer {
if (voicestatus[i].active)
if (voicestatus[i].channelmixer == null)
voicestatus[i].processAudioLogic(buffers);
+
+ if(!buffers[CHANNEL_MONO].isSilent())
+ {
+ float[] mono = buffers[CHANNEL_MONO].array();
+ float[] left = buffers[CHANNEL_LEFT].array();
+ int bufferlen = buffers[CHANNEL_LEFT].getSize();
+ if (nrofchannels != 1) {
+ float[] right = buffers[CHANNEL_RIGHT].array();
+ for (int i = 0; i < bufferlen; i++) {
+ float v = mono[i];
+ left[i] += v;
+ right[i] += v;
+ }
+ }
+ else
+ {
+ for (int i = 0; i < bufferlen; i++) {
+ left[i] += mono[i];
+ }
+ }
+ }
// Run effects
if (synth.chorus_on)
@@ -665,7 +712,7 @@ public class SoftMainMixer {
/ synth.getControlRate());
control_mutex = synth.control_mutex;
- buffers = new SoftAudioBuffer[16];
+ buffers = new SoftAudioBuffer[17];
for (int i = 0; i < buffers.length; i++) {
buffers[i] = new SoftAudioBuffer(buffersize, synth.getFormat());
}
diff -r 688efd120766 -r cfe2c755ee47 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java Sun Nov 09 22:31:21 2008 +0100
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftVoice.java Mon Nov 10 12:43:00 2008 +0100
@@ -782,6 +782,7 @@ public class SoftVoice extends VoiceStat
SoftAudioBuffer left = buffer[SoftMainMixer.CHANNEL_LEFT];
SoftAudioBuffer right = buffer[SoftMainMixer.CHANNEL_RIGHT];
+ SoftAudioBuffer mono = buffer[SoftMainMixer.CHANNEL_MONO];
SoftAudioBuffer eff1 = buffer[SoftMainMixer.CHANNEL_EFFECT1];
SoftAudioBuffer eff2 = buffer[SoftMainMixer.CHANNEL_EFFECT2];
SoftAudioBuffer leftdry = buffer[SoftMainMixer.CHANNEL_LEFT_DRY];
@@ -802,17 +803,26 @@ public class SoftVoice extends VoiceStat
if (rightdry != null)
mixAudioStream(rightdry, left, last_out_mixer_left,
out_mixer_left);
- } else {
- mixAudioStream(leftdry, left, last_out_mixer_left, out_mixer_left);
- if (rightdry != null)
- mixAudioStream(rightdry, right, last_out_mixer_right,
+ } else {
+ if(rightdry == null &&
+ last_out_mixer_left == last_out_mixer_right &&
+ out_mixer_left == out_mixer_right)
+ {
+ mixAudioStream(leftdry, mono, last_out_mixer_left, out_mixer_left);
+ }
+ else
+ {
+ mixAudioStream(leftdry, left, last_out_mixer_left, out_mixer_left);
+ if (rightdry != null)
+ mixAudioStream(rightdry, right, last_out_mixer_right,
out_mixer_right);
- else
- mixAudioStream(leftdry, right, last_out_mixer_right,
+ else
+ mixAudioStream(leftdry, right, last_out_mixer_right,
out_mixer_right);
- }
-
- if (rightdry == null) {
+ }
+ }
+
+ if (rightdry == null) {
mixAudioStream(leftdry, eff1, last_out_mixer_effect1,
out_mixer_effect1);
mixAudioStream(leftdry, eff2, last_out_mixer_effect2,
More information about the distro-pkg-dev
mailing list