changeset 861:30c7450d05dc

New Gervill CVS import. Add AudioFloatFormatConverter FormatConversionProvider. 2008-05-09 Mark Wielaard <mwielaard@redhat.com> * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound: Import Gervill fixes from CVS. See CHANGES.txt. Check isConversionSupported() in AudioFloatFormatConverter.getTargetFormats(). * patches/icedtea-gervill.patch: Add AudioFloatFormatConverter to javax.sound.sampled.spi.FormatConversionProvider.
author Mark Wielaard <mark@klomp.org>
date Fri, 09 May 2008 19:04:37 +0200
parents 6d39bcf18078
children 493b2cd196e2
files ChangeLog overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatFormatConverter.java overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioProcessor.java overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChorus.java overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLimiter.java overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftReverb.java patches/icedtea-gervill.patch
diffstat 9 files changed, 53 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri May 09 10:25:45 2008 -0400
+++ b/ChangeLog	Fri May 09 19:04:37 2008 +0200
@@ -1,3 +1,12 @@
+2008-05-09  Mark Wielaard  <mwielaard@redhat.com>
+
+	* overlays/openjdk/jdk/src/share/classes/com/sun/media/sound:
+	Import Gervill fixes from CVS. See CHANGES.txt.
+	Check isConversionSupported() in
+	AudioFloatFormatConverter.getTargetFormats().
+	* patches/icedtea-gervill.patch: Add AudioFloatFormatConverter to
+	javax.sound.sampled.spi.FormatConversionProvider.
+
 2008-05-09  Lillian Angel  <langel@redhat.com>
 
 	* patches/icedtea-certbundle.patch: Fixed typo.
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatFormatConverter.java	Fri May 09 10:25:45 2008 -0400
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatFormatConverter.java	Fri May 09 19:04:37 2008 +0200
@@ -366,17 +366,20 @@
 			int in_end = ibuffer_len;
 			while(remain > 0)
 			{
-				if(ibuffer_len < 0)
-				{
-					in_end = pad2;
-					if(ibuffer_index > in_end) break;	
-				}
-				else
+				if(ibuffer_len >= 0)
 				{
 					if(ibuffer_index >= (ibuffer_len+pad)) 
 						readNextBuffer();
 					in_end = ibuffer_len+pad;
 				}
+				
+				if(ibuffer_len < 0)
+				{
+					in_end = pad2;
+					if(ibuffer_index >= in_end) break;	
+				}
+				
+				
 				if(ibuffer_index < 0) 
 					break;
 				int preDestPos = destPos;
@@ -486,7 +489,7 @@
 	}
 
 	public AudioFormat[] getTargetFormats(Encoding targetEncoding, AudioFormat sourceFormat) {
-		if(AudioFloatConverter.getConverter(sourceFormat) == null) return new AudioFormat[0];
+		if(!isConversionSupported(targetEncoding, sourceFormat)) return new AudioFormat[0];
 		int channels = sourceFormat.getChannels();
 		ArrayList<AudioFormat> formats = new ArrayList<AudioFormat>();
 		formats.add(new AudioFormat(Encoding.PCM_SIGNED, AudioSystem.NOT_SPECIFIED, 8, channels, channels, AudioSystem.NOT_SPECIFIED, false));
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt	Fri May 09 10:25:45 2008 -0400
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt	Fri May 09 19:04:37 2008 +0200
@@ -5,6 +5,7 @@
            and resample using (linear/cubic/sinc...) if needed.
   - Added: WaveExtensibleReader, used to read WAV files using WAVE_FORMAT_EXTENSIBLE format.
   - Added: WaveFloatFileWriter, used to writing WAV files with PCM_FLOAT encoding.
+  - Change: Make SoftAudioProcessor (limiter, reverb, chorus, agc) more general.
   - Fix: AudioFloatConverter tests incorrectly AudioFormat frameSize against SampleSizeInBits
          Support for 64-byte float added, and support for 32+ bit PCM samples.  
          SampleSizeInBits  not dividable by 8 are now handled correctly.
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioProcessor.java	Fri May 09 10:25:45 2008 -0400
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftAudioProcessor.java	Fri May 09 19:04:37 2008 +0200
@@ -37,7 +37,7 @@
 	public void globalParameterControlChange(int[] slothpath, long param,
 			long value);
 
-	public void init(SoftSynthesizer synthesizer);
+	public void init(float samplerate, float controlrate);
 
 	public void setInput(int pin, SoftAudioBuffer input);
 
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChorus.java	Fri May 09 10:25:45 2008 -0400
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftChorus.java	Fri May 09 19:04:37 2008 +0200
@@ -207,8 +207,6 @@
 
 	private float rgain = 0;
 
-	private SoftSynthesizer synth;
-
 	private boolean dirty = true;
 
 	private double dirty_vdelay1L_rate;
@@ -226,11 +224,11 @@
 	private float dirty_vdelay1L_reverbsendgain;
 
 	private float dirty_vdelay1R_reverbsendgain;
+	
+	private float controlrate;
 
-	public void init(SoftSynthesizer synth) {
-		this.synth = synth;
-		double samplerate = synth.getFormat().getSampleRate();
-		double controlrate = synth.getControlRate();
+	public void init(float samplerate, float controlrate) {
+		this.controlrate = controlrate;
 		vdelay1L = new LFODelay(samplerate, controlrate);
 		vdelay1R = new LFODelay(samplerate, controlrate);
 		vdelay1L.setGain(1.0f); // %
@@ -334,7 +332,7 @@
 	public void processAudio() {
 
 		if (inputA.isSilent()) {
-			silentcounter += 1 / synth.getControlRate();
+			silentcounter += 1 / controlrate;
 
 			if (silentcounter > 1) {
 				if (!mix) {
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLimiter.java	Fri May 09 10:25:45 2008 -0400
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftLimiter.java	Fri May 09 19:04:37 2008 +0200
@@ -52,11 +52,11 @@
 	SoftAudioBuffer bufferLout;
 
 	SoftAudioBuffer bufferRout;
-
-	SoftSynthesizer synth;
+	
+	float controlrate;
 
-	public void init(SoftSynthesizer synth) {
-		this.synth = synth;
+	public void init(float samplerate, float controlrate) {
+		this.controlrate = controlrate;
 	}
 
 	public void setInput(int pin, SoftAudioBuffer input) {
@@ -87,7 +87,7 @@
 	public void processAudio() {
 		if (this.bufferL.isSilent()
 				&& (this.bufferR == null || this.bufferR.isSilent())) {
-			silentcounter += 1 / synth.getControlRate();
+			silentcounter += 1 / controlrate;
 
 			if (silentcounter > 60) {
 				if (!mix) {
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java	Fri May 09 10:25:45 2008 -0400
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMainMixer.java	Fri May 09 19:04:37 2008 +0200
@@ -702,9 +702,11 @@
 		chorus = new SoftChorus();
 		agc = new SoftLimiter();
 
-		reverb.init(synth);
-		chorus.init(synth);
-		agc.init(synth);
+		float samplerate = synth.getFormat().getSampleRate();
+		float controlrate = synth.getControlRate();
+		reverb.init(samplerate, controlrate);
+		chorus.init(samplerate, controlrate);
+		agc.init(samplerate, controlrate);
 
 		reverb.setMixMode(true);
 		chorus.setMixMode(true);
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftReverb.java	Fri May 09 10:25:45 2008 -0400
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftReverb.java	Fri May 09 19:04:37 2008 +0200
@@ -238,8 +238,6 @@
 
 	private SoftAudioBuffer right;
 
-	private SoftSynthesizer synth;
-
 	private boolean dirty = true;
 
 	private float dirty_roomsize;
@@ -250,9 +248,13 @@
 
 	private float dirty_gain;
 	
-	public void init(SoftSynthesizer synth) {
-		this.synth = synth;
-		double samplerate = synth.getFormat().getSampleRate();
+	private float controlrate;
+	
+	private float samplerate;
+	
+	public void init(float samplerate, float controlrate) {
+		this.controlrate = controlrate;		
+		this.samplerate = samplerate;
 
 		double freqscale = ((double) samplerate) / 44100.0;
 		// freqscale = 1.0/ freqscale;
@@ -321,7 +323,7 @@
 	
 	public void processAudio() {
 		if (this.inputA.isSilent()) {
-			silentcounter += 1 / synth.getControlRate();
+			silentcounter += 1 / controlrate;
 
 			if (silentcounter > 60) {
 				if (!mix) {
@@ -473,7 +475,7 @@
 	}
 
 	public void setPreDelay(float value) {
-		delay.setDelay((int) (value * synth.getFormat().getSampleRate()));
+		delay.setDelay((int) (value * samplerate));
 	}
 
 	public void setGain(float gain) {
@@ -481,7 +483,7 @@
 	}
 
 	public void setDamp(float value) {
-		double x = (value / synth.getFormat().getSampleRate()) * (2 * Math.PI);
+		double x = (value / samplerate) * (2 * Math.PI);
 		double cx = 2 - Math.cos(x);
 		damp = (float) (cx - Math.sqrt(cx * cx - 1));
 		if (damp > 1)
--- a/patches/icedtea-gervill.patch	Fri May 09 10:25:45 2008 -0400
+++ b/patches/icedtea-gervill.patch	Fri May 09 19:04:37 2008 +0200
@@ -28,3 +28,10 @@
  com.sun.media.sound.WaveFileReader
 +com.sun.media.sound.WaveFloatFileReader
 +com.sun.media.sound.SoftMidiAudioFileReader
+--- /home/mark/src/openjdk/jdk/src/share/classes/com/sun/media/sound/services/javax.sound.sampled.spi.FormatConversionProvider	2008-04-13 01:05:30.000000000 +0200
++++ openjdk/jdk/src/share/classes/com/sun/media/sound/services/javax.sound.sampled.spi.FormatConversionProvider	2008-05-09 02:54:26.000000000 +0200
+@@ -2,3 +2,4 @@
+ com.sun.media.sound.UlawCodec
+ com.sun.media.sound.AlawCodec
+ com.sun.media.sound.PCMtoPCMCodec
++com.sun.media.sound.AudioFloatFormatConverter