changeset in /hg/icedtea6: Import Gervill fixes from CVS and add...

Mark Wielaard mark at klomp.org
Sun May 25 12:21:57 PDT 2008


changeset a1832ea486e9 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=a1832ea486e9
description:
	Import Gervill fixes from CVS and add tests.

	2008-05-23  Mark Wielaard  <mark at klomp.org>

	       * overlays/openjdk/jdk/src/share/classes/com/sun/media/sound:
	       Import Gervill fixes from CVS. See CHANGES.txt.
	       Added: Software Mixing Mixer.
	       Fix: AudioFloatFormatConverter.getTargetFormats()
	       * overlays/openjdk/jdk/test/com/sun/media/sound: Imported all tests.

diffstat:

232 files changed, 18600 insertions(+), 14 deletions(-)
ChangeLog                                                                                                                              |    8 
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatFormatConverter.java                                              |   42 
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt                                                                 |    4 
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingClip.java                                                         |  542 ++++++++++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingDataLine.java                                                     |  525 +++++++++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingMainMixer.java                                                    |  262 ++++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingMixer.java                                                        |  488 +++++++++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingMixerProvider.java                                                |   69 +
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingSourceDataLine.java                                               |  523 +++++++++
overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftSynthesizer.java                                                        |    5 
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatConverter/GetFormat.java                                                       |   41 
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatConverter/ToFloatArray.java                                                    |  143 ++
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatInputStream/Available.java                                                     |   81 +
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatInputStream/Close.java                                                         |   72 +
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatInputStream/GetFormat.java                                                     |   74 +
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatInputStream/GetFrameLength.java                                                |   74 +
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatInputStream/MarkSupported.java                                                 |   74 +
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatInputStream/Read.java                                                          |   83 +
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatInputStream/ReadFloatArray.java                                                |   81 +
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatInputStream/ReadFloatArrayIntInt.java                                          |   83 +
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatInputStream/Reset.java                                                         |   87 +
overlays/openjdk/jdk/test/com/sun/media/sound/AudioFloatInputStream/Skip.java                                                          |   83 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/GetInputStream.java                                                      |   91 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/GetRoot.java                                                             |   82 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/Load.java                                                                |   89 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/LoadAll.java                                                             |   93 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/NewModelByteBufferByteArray.java                                         |   84 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/NewModelByteBufferByteArrayIntInt.java                                   |   86 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/NewModelByteBufferFile.java                                              |   88 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/NewModelByteBufferFileLongLong.java                                      |   88 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/SubbufferLong.java                                                       |   92 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/SubbufferLongLong.java                                                   |   92 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/SubbufferLongLongBoolean.java                                            |   98 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/Unload.java                                                              |   83 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBuffer/WriteTo.java                                                             |   92 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/GetAttenuation.java                                             |   97 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/GetChannels.java                                                |   97 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/GetLoopLength.java                                              |   96 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/GetLoopStart.java                                               |   96 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/GetPitchCorrection.java                                         |   97 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBuffer.java                 |   94 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormat.java      |   94 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferAudioFormatFloat.java |   94 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/NewModelByteBufferWavetableModelByteBufferFloat.java            |   96 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/Open.java                                                       |   92 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/Set8BitExtensionBuffer.java                                     |  119 ++
overlays/openjdk/jdk/test/com/sun/media/sound/ModelByteBufferWavetable/SetLoopType.java                                                |   96 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelDestination/NewModelDestination.java                                                |   46 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelDestination/NewModelDestinationModelIdentifier.java                                 |   46 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelDestination/SetIdentifier.java                                                      |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelDestination/SetTransform.java                                                       |   46 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelIdentifier/EqualsObject.java                                                        |   54 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelIdentifier/NewModelIdentifierString.java                                            |   48 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelIdentifier/NewModelIdentifierStringInt.java                                         |   48 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelIdentifier/NewModelIdentifierStringString.java                                      |   48 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelIdentifier/NewModelIdentifierStringStringInt.java                                   |   48 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelIdentifier/SetInstance.java                                                         |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelIdentifier/SetObject.java                                                           |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelIdentifier/SetVariable.java                                                         |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelPerformer/GetOscillators.java                                                       |   44 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelPerformer/SetConnectionBlocks.java                                                  |   48 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelPerformer/SetDefaultConnectionsEnabled.java                                         |   49 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelPerformer/SetExclusiveClass.java                                                    |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelPerformer/SetKeyFrom.java                                                           |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelPerformer/SetKeyTo.java                                                             |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelPerformer/SetName.java                                                              |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelPerformer/SetSelfNonExclusive.java                                                  |   48 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelPerformer/SetVelFrom.java                                                           |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelPerformer/SetVelTo.java                                                             |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelSource/NewModelSource.java                                                          |   48 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelSource/NewModelSourceModelIdentifier.java                                           |   46 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelSource/NewModelSourceModelIdentifierBoolean.java                                    |   49 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelSource/NewModelSourceModelIdentifierBooleanBoolean.java                             |   51 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelSource/NewModelSourceModelIdentifierBooleanBooleanInt.java                          |   56 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelSource/NewModelSourceModelIdentifierModelTransform.java                             |   47 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelSource/SetIdentifier.java                                                           |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelSource/SetTransform.java                                                            |   46 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/NewModelStandardTransform.java                                    |   48 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/NewModelStandardTransformBoolean.java                             |   48 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/NewModelStandardTransformBooleanBoolean.java                      |   50 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/NewModelStandardTransformBooleanBooleanInt.java                   |   51 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/SetDirection.java                                                 |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/SetPolarity.java                                                  |   45 
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/SetTransform.java                                                 |   74 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/TransformAbsolute.java                                            |   73 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/TransformConcave.java                                             |   98 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/TransformConvex.java                                              |   98 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/TransformLinear.java                                              |   90 +
overlays/openjdk/jdk/test/com/sun/media/sound/ModelStandardTransform/TransformSwitch.java                                              |   63 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/Available.java                                                          |   78 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/Close.java                                                              |   72 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/GetFilePointer.java                                                     |   78 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/GetSize.java                                                            |   77 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/HasNextChunk.java                                                       |   85 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/Read.java                                                               |   79 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/ReadByte.java                                                           |   79 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/ReadByteArrayIntInt.java                                                |   81 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/ReadInt.java                                                            |   79 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/ReadLong.java                                                           |   79 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/ReadShort.java                                                          |   79 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/ReadString.java                                                         |   79 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/ReadUnsignedByte.java                                                   |   79 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/ReadUnsignedInt.java                                                    |   79 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/ReadUnsignedShort.java                                                  |   79 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/Skip.java                                                               |   78 +
overlays/openjdk/jdk/test/com/sun/media/sound/RiffReaderWriter/WriteOutputStream.java                                                  |   81 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelInstrument.java                                                 |   86 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelInstrumentIntInt.java                                           |   91 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelInstrumentIntIntIntInt.java                                     |   97 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelInstrumentIntIntIntIntInt.java                                  |   97 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelPerformer.java                                                  |   83 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelPerformerArray.java                                             |   83 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelPerformerArrayIntInt.java                                       |   89 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelPerformerArrayIntIntIntInt.java                                 |   95 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelPerformerArrayIntIntIntIntInt.java                              |   95 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelPerformerIntInt.java                                            |   89 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelPerformerIntIntIntInt.java                                      |   95 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/AddModelPerformerIntIntIntIntInt.java                                   |   95 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/Clear.java                                                              |   73 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/SetName.java                                                            |   72 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleInstrument/SetPatch.java                                                           |   75 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleSoundbank/AddInstrument.java                                                       |   51 
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleSoundbank/AddResource.java                                                         |   52 
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleSoundbank/GetInstrument.java                                                       |   50 
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleSoundbank/RemoveInstrument.java                                                    |   58 +
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleSoundbank/SetDescription.java                                                      |   47 
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleSoundbank/SetName.java                                                             |   47 
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleSoundbank/SetVendor.java                                                           |   47 
overlays/openjdk/jdk/test/com/sun/media/sound/SimpleSoundbank/SetVersion.java                                                          |   47 
overlays/openjdk/jdk/test/com/sun/media/sound/SoftAudioBuffer/Array.java                                                               |   54 
overlays/openjdk/jdk/test/com/sun/media/sound/SoftAudioBuffer/Clear.java                                                               |   56 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftAudioBuffer/Get.java                                                                 |   68 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftAudioBuffer/NewSoftAudioBuffer.java                                                  |   55 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftAudioSynthesizer/GetFormat.java                                                      |   61 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftAudioSynthesizer/GetPropertyInfo.java                                                |   53 
overlays/openjdk/jdk/test/com/sun/media/sound/SoftAudioSynthesizer/Open.java                                                           |   54 
overlays/openjdk/jdk/test/com/sun/media/sound/SoftAudioSynthesizer/OpenStream.java                                                     |   54 
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/AllNotesOff.java                                                             |   64 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/AllSoundOff.java                                                             |   64 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/ChannelPressure.java                                                         |   59 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/Controller.java                                                              |   62 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/LocalControl.java                                                            |   60 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/Mono.java                                                                    |   59 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/Mute.java                                                                    |   59 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/NoteOff.java                                                                 |   64 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/NoteOff2.java                                                                |   64 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/NoteOn.java                                                                  |   64 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/Omni.java                                                                    |   61 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/PitchBend.java                                                               |   59 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/PolyPressure.java                                                            |   61 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/ProgramChange.java                                                           |   59 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/ResetAllControllers.java                                                     |  132 ++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/SoftTestUtils.java                                                           |  111 ++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftChannel/Solo.java                                                                    |   59 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftCubicResampler/Interpolate.java                                                      |  113 ++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLanczosResampler/Interpolate.java                                                    |  113 ++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLimiter/ProcessAudio_replace_mix.java                                                |   97 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLimiter/ProcessAudio_replace_mix_mono.java                                           |   84 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLimiter/ProcessAudio_replace_mix_mono_overdrive.java                                 |   85 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLimiter/ProcessAudio_replace_mix_overdrive.java                                      |   96 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLimiter/ProcessAudio_replace_normal.java                                             |   96 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLimiter/ProcessAudio_replace_normal_mono.java                                        |   84 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLimiter/ProcessAudio_replace_overdrive.java                                          |   96 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLimiter/ProcessAudio_replace_overdrive_mono.java                                     |   84 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLinearResampler/Interpolate.java                                                     |  113 ++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftLinearResampler2/Interpolate.java                                                    |  113 ++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftPointResampler/Interpolate.java                                                      |  113 ++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftProvider/GetDevice.java                                                              |   70 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Close.java                                                                  |   59 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_ActiveSense.java                                                       |   82 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_AllNotesOff.java                                                       |   64 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_AllSoundOff.java                                                       |   64 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_ChannelPressure.java                                                   |   63 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_Controller.java                                                        |   66 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_Mono.java                                                              |   75 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_NoteOff.java                                                           |   65 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_NoteOn.java                                                            |   65 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_NoteOn_AllChannels.java                                                |   71 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_NoteOn_Delayed.java                                                    |   67 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_NoteOn_Multiple.java                                                   |   76 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_Omni.java                                                              |   74 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_PitchBend.java                                                         |   63 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_PolyPressure.java                                                      |   65 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_ProgramChange.java                                                     |   63 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/Send_ResetAllControllers.java                                               |  136 ++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftReceiver/SoftTestUtils.java                                                          |  111 ++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSincResampler/Interpolate.java                                                       |  113 ++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/Close.java                                                               |   58 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetAvailableInstruments.java                                             |   63 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetChannels.java                                                         |   64 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetDefaultSoundbank.java                                                 |   58 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetDeviceInfo.java                                                       |   56 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetLatency.java                                                          |   58 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetLoadedInstruments.java                                                |   65 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetMaxPolyphony.java                                                     |   58 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetMaxReceivers.java                                                     |   56 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetMaxTransmitters.java                                                  |   56 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetMicrosecondPosition.java                                              |   64 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetReceiver.java                                                         |   63 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetReceiver2.java                                                        |   62 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetReceivers.java                                                        |   63 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetTransmitter.java                                                      |   63 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetTransmitters.java                                                     |   58 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/GetVoiceStatus.java                                                      |   61 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/ImplicitOpenClose.java                                                   |   99 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/IsOpen.java                                                              |   59 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/IsSoundbankSupported.java                                                |   95 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/LoadAllInstruments.java                                                  |   73 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/LoadInstrument.java                                                      |   73 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/LoadInstruments.java                                                     |   73 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/Open.java                                                                |   58 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/OpenStream.java                                                          |   58 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/RemapInstrument.java                                                     |   76 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/TestRender1.java                                                         |  210 +++
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/UnloadAllInstruments.java                                                |   69 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/UnloadInstrument.java                                                    |   75 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftSynthesizer/UnloadInstruments.java                                                   |   75 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/GetName.java                                                                  |   54 
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/GetTuning.java                                                                |   56 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/GetTuningInt.java                                                             |   53 
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/Load1.java                                                                    |  101 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/Load2.java                                                                    |   71 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/Load4.java                                                                    |  104 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/Load5.java                                                                    |   87 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/Load6.java                                                                    |   91 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/Load7.java                                                                    |   72 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/Load8.java                                                                    |   65 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/Load9.java                                                                    |   69 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/NewSoftTuning.java                                                            |   56 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/NewSoftTuningByteArray.java                                                   |   63 +
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/NewSoftTuningPatch.java                                                       |   54 
overlays/openjdk/jdk/test/com/sun/media/sound/SoftTuning/NewSoftTuningPatchByteArray.java                                              |   65 +

diffs (truncated from 19580 to 500 lines):

diff -r d72271b9d9ef -r a1832ea486e9 ChangeLog
--- a/ChangeLog	Sun May 25 19:42:00 2008 +0200
+++ b/ChangeLog	Sun May 25 21:21:11 2008 +0200
@@ -1,3 +1,11 @@ 2008-05-23  Lillian Angel  <langel at redha
+2008-05-23  Mark Wielaard  <mark at klomp.org>
+
+	* overlays/openjdk/jdk/src/share/classes/com/sun/media/sound:
+	Import Gervill fixes from CVS. See CHANGES.txt.
+	Added: Software Mixing Mixer.
+	Fix: AudioFloatFormatConverter.getTargetFormats()
+	* overlays/openjdk/jdk/test/com/sun/media/sound: Imported all tests.
+
 2008-05-23  Lillian Angel  <langel at redhat.com>
 
 	* Makefile.am: Updated jtreg to use correct javac and jar.
diff -r d72271b9d9ef -r a1832ea486e9 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatFormatConverter.java
--- a/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatFormatConverter.java	Sun May 25 19:42:00 2008 +0200
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/AudioFloatFormatConverter.java	Sun May 25 21:21:11 2008 +0200
@@ -489,21 +489,37 @@ public class AudioFloatFormatConverter e
 	}
 
 	public AudioFormat[] getTargetFormats(Encoding targetEncoding, AudioFormat sourceFormat) {
-		if(!isConversionSupported(targetEncoding, sourceFormat)) return new AudioFormat[0];
+		if(AudioFloatConverter.getConverter(sourceFormat) == null) 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));
-		formats.add(new AudioFormat(Encoding.PCM_UNSIGNED, AudioSystem.NOT_SPECIFIED, 8, channels, channels, AudioSystem.NOT_SPECIFIED, false));
-		for (int bits = 16; bits < 32; bits+=8) {			
-			formats.add(new AudioFormat(Encoding.PCM_SIGNED, AudioSystem.NOT_SPECIFIED, bits, channels, channels*bits/8, AudioSystem.NOT_SPECIFIED, false));
-			formats.add(new AudioFormat(Encoding.PCM_UNSIGNED, AudioSystem.NOT_SPECIFIED, bits, channels, channels*bits/8, AudioSystem.NOT_SPECIFIED, false));
-			formats.add(new AudioFormat(Encoding.PCM_SIGNED, AudioSystem.NOT_SPECIFIED, bits, channels, channels*bits/8, AudioSystem.NOT_SPECIFIED, true));
-			formats.add(new AudioFormat(Encoding.PCM_UNSIGNED, AudioSystem.NOT_SPECIFIED, bits, channels, channels*bits/8, AudioSystem.NOT_SPECIFIED, true));
-		}
-		formats.add(new AudioFormat(AudioFloatConverter.PCM_FLOAT, AudioSystem.NOT_SPECIFIED, 32, channels, channels*4, AudioSystem.NOT_SPECIFIED, false));
-		formats.add(new AudioFormat(AudioFloatConverter.PCM_FLOAT, AudioSystem.NOT_SPECIFIED, 32, channels, channels*4, AudioSystem.NOT_SPECIFIED, true));
-		formats.add(new AudioFormat(AudioFloatConverter.PCM_FLOAT, AudioSystem.NOT_SPECIFIED, 64, channels, channels*8, AudioSystem.NOT_SPECIFIED, false));
-		formats.add(new AudioFormat(AudioFloatConverter.PCM_FLOAT, AudioSystem.NOT_SPECIFIED, 64, channels, channels*8, AudioSystem.NOT_SPECIFIED, true));
+		
+		if(targetEncoding.equals(Encoding.PCM_SIGNED))
+			formats.add(new AudioFormat(Encoding.PCM_SIGNED, AudioSystem.NOT_SPECIFIED, 8, channels, channels, AudioSystem.NOT_SPECIFIED, false));
+		if(targetEncoding.equals(Encoding.PCM_UNSIGNED))
+			formats.add(new AudioFormat(Encoding.PCM_UNSIGNED, AudioSystem.NOT_SPECIFIED, 8, channels, channels, AudioSystem.NOT_SPECIFIED, false));
+		
+		for (int bits = 16; bits < 32; bits+=8) {	
+			if(targetEncoding.equals(Encoding.PCM_SIGNED))
+			{
+				formats.add(new AudioFormat(Encoding.PCM_SIGNED, AudioSystem.NOT_SPECIFIED, bits, channels, channels*bits/8, AudioSystem.NOT_SPECIFIED, false));
+				formats.add(new AudioFormat(Encoding.PCM_SIGNED, AudioSystem.NOT_SPECIFIED, bits, channels, channels*bits/8, AudioSystem.NOT_SPECIFIED, true));
+			}
+			if(targetEncoding.equals(Encoding.PCM_UNSIGNED))
+			{
+				formats.add(new AudioFormat(Encoding.PCM_UNSIGNED, AudioSystem.NOT_SPECIFIED, bits, channels, channels*bits/8, AudioSystem.NOT_SPECIFIED, true));
+				formats.add(new AudioFormat(Encoding.PCM_UNSIGNED, AudioSystem.NOT_SPECIFIED, bits, channels, channels*bits/8, AudioSystem.NOT_SPECIFIED, false));
+			}
+		}
+		
+		if(targetEncoding.equals(AudioFloatConverter.PCM_FLOAT))
+		{
+			formats.add(new AudioFormat(AudioFloatConverter.PCM_FLOAT, AudioSystem.NOT_SPECIFIED, 32, channels, channels*4, AudioSystem.NOT_SPECIFIED, false));
+			formats.add(new AudioFormat(AudioFloatConverter.PCM_FLOAT, AudioSystem.NOT_SPECIFIED, 32, channels, channels*4, AudioSystem.NOT_SPECIFIED, true));
+			formats.add(new AudioFormat(AudioFloatConverter.PCM_FLOAT, AudioSystem.NOT_SPECIFIED, 64, channels, channels*8, AudioSystem.NOT_SPECIFIED, false));
+			formats.add(new AudioFormat(AudioFloatConverter.PCM_FLOAT, AudioSystem.NOT_SPECIFIED, 64, channels, channels*8, AudioSystem.NOT_SPECIFIED, true));
+		}
+		
 		return formats.toArray(new AudioFormat[formats.size()]);
 	}
 
diff -r d72271b9d9ef -r a1832ea486e9 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 May 25 19:42:00 2008 +0200
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/CHANGES.txt	Sun May 25 21:21:11 2008 +0200
@@ -1,11 +1,15 @@
+  - Added: Software Mixing Mixer
   - Removed: PATSoundBankReader removed because no format license is available.
              It is also undocumented format. 
   - Added: AudioFloatFormatConverter, used to convert 
            between PCM_SIGNED, PCM_UNSIGNED, PCM_FLOAT in 8/16/24/32 bit (big/little endian),
            and resample using (linear/cubic/sinc...) if needed.
+  - Fix: AudioFloatFormatConverter.getTargetFormats(Encoding, AudioFormat)         
+         returned audio formats in encoding not asked for.
   - 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: Don't restrict reading dls/sf2 soundbank to only files with .dls and .sf2 endings.
   - 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.
diff -r d72271b9d9ef -r a1832ea486e9 overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingClip.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/overlays/openjdk/jdk/src/share/classes/com/sun/media/sound/SoftMixingClip.java	Sun May 25 21:21:11 2008 +0200
@@ -0,0 +1,542 @@
+/*
+ * Copyright 2008 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.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioInputStream;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.Clip;
+import javax.sound.sampled.DataLine;
+import javax.sound.sampled.LineEvent;
+import javax.sound.sampled.LineUnavailableException;
+
+/**
+ * Clip implemention for the SoftMixingMixer.
+ * 
+ * @version %I%, %E%
+ * @author Karl Helgason
+ */
+
+public class SoftMixingClip extends SoftMixingDataLine implements Clip {
+
+	private AudioFormat format;
+
+	private int framesize;
+
+	private byte[] data;
+
+	private InputStream datastream = new InputStream() {
+
+		public int read() throws IOException {
+			byte[] b = new byte[1];
+			int ret = read(b);
+			if (ret < 0)
+				return ret;
+			return b[0] & 0xFF;
+		}
+
+		public int read(byte[] b, int off, int len) throws IOException {
+
+			if (_loopcount != 0) {
+				int bloopend = _loopend * framesize;
+				int bloopstart = _loopstart * framesize;
+				int pos = _frameposition * framesize;
+
+				if (pos + len >= bloopend)
+					if (pos < bloopend) {
+						int offend = off + len;
+						int o = off;
+						while (off != offend) {
+							if (pos == bloopend) {
+								if (_loopcount == 0)
+									break;
+								pos = bloopstart;
+								if (_loopcount != LOOP_CONTINUOUSLY)
+									_loopcount--;
+							}
+							len = offend - off;
+							int left = bloopend - pos;
+							if (len > left)
+								len = left;
+							System.arraycopy(data, pos, b, off, len);
+							off += len;
+						}
+						if (_loopcount == 0) {
+							len = offend - off;
+							int left = bloopend - pos;
+							if (len > left)
+								len = left;
+							System.arraycopy(data, pos, b, off, len);
+							off += len;
+						}
+						_frameposition = pos / framesize;
+						return o - off;
+					}
+			}
+
+			int pos = _frameposition * framesize;
+			int left = bufferSize - pos;
+			if (left == 0)
+				return -1;
+			if (len > left)
+				len = left;
+			System.arraycopy(data, pos, b, off, len);
+			_frameposition += len / framesize;
+			return len;
+		}
+
+	};
+
+	private int offset;
+
+	private int bufferSize;
+
+	private float[] readbuffer;
+
+	private boolean open = false;
+
+	private AudioFormat outputformat;
+
+	private int out_nrofchannels;
+
+	private int in_nrofchannels;
+
+	private int frameposition = 0;
+
+	private boolean frameposition_sg = false;
+
+	private boolean active_sg = false;
+
+	private int loopstart = 0;
+
+	private int loopend = -1;
+
+	private boolean active = false;
+
+	private int loopcount = 0;
+
+	private boolean _active = false;
+
+	private int _frameposition = 0;
+
+	private boolean loop_sg = false;
+
+	private int _loopcount = 0;
+
+	private int _loopstart = 0;
+
+	private int _loopend = -1;
+
+	private float _rightgain;
+
+	private float _leftgain;
+
+	private float _eff1gain;
+
+	private float _eff2gain;
+
+	private AudioFloatInputStream afis;
+
+	protected SoftMixingClip(SoftMixingMixer mixer, DataLine.Info info) {
+		super(mixer, info);
+	}
+
+	protected void processControlLogic() {
+
+		_rightgain = rightgain;
+		_leftgain = leftgain;
+		_eff1gain = eff1gain;
+		_eff2gain = eff2gain;
+
+		if (active_sg) {
+			_active = active;
+			active_sg = false;
+		} else {
+			active = _active;
+		}
+
+		if (frameposition_sg) {
+			_frameposition = frameposition;
+			frameposition_sg = false;
+			afis = null;
+		} else {
+			frameposition = _frameposition;
+		}
+		if (loop_sg) {
+			_loopcount = loopcount;
+			_loopstart = loopstart;
+			_loopend = loopend;
+		}
+
+		if (afis == null) {
+			afis = AudioFloatInputStream.getInputStream(new AudioInputStream(
+					datastream, format, AudioSystem.NOT_SPECIFIED));
+
+			if (Math.abs(format.getSampleRate() - outputformat.getSampleRate()) > 0.000001)
+				afis = new AudioFloatInputStreamResampler(afis, outputformat);
+		}
+
+	}
+
+	protected void processAudioLogic(SoftAudioBuffer[] buffers) {
+		if (_active) {
+			float[] left = buffers[SoftMixingMainMixer.CHANNEL_LEFT].array();
+			float[] right = buffers[SoftMixingMainMixer.CHANNEL_RIGHT].array();
+			int bufferlen = buffers[SoftMixingMainMixer.CHANNEL_LEFT].getSize();
+
+			int readlen = bufferlen * in_nrofchannels;
+			if (readbuffer == null || readbuffer.length < readlen) {
+				readbuffer = new float[readlen];
+			}
+			int ret = 0;
+			try {
+				ret = afis.read(readbuffer);
+				if (ret == -1) {
+					_active = false;
+					return;
+				}
+				if (ret != in_nrofchannels)
+					Arrays.fill(readbuffer, ret, readlen, 0);
+			} catch (IOException e) {
+			}
+
+			int in_c = in_nrofchannels;
+			for (int i = 0, ix = 0; i < bufferlen; i++, ix += in_c) {
+				left[i] += readbuffer[ix] * _leftgain;
+			}
+
+			if (out_nrofchannels != 1) {
+				if (in_nrofchannels == 1) {
+					for (int i = 0, ix = 0; i < bufferlen; i++, ix += in_c) {
+						right[i] += readbuffer[ix] * _rightgain;
+					}
+				} else {
+					for (int i = 0, ix = 1; i < bufferlen; i++, ix += in_c) {
+						right[i] += readbuffer[ix] * _rightgain;
+					}
+				}
+
+			}
+
+			if (_eff1gain > 0.0002) {
+
+				float[] eff1 = buffers[SoftMixingMainMixer.CHANNEL_EFFECT1]
+						.array();
+				for (int i = 0, ix = 0; i < bufferlen; i++, ix += in_c) {
+					eff1[i] += readbuffer[ix] * _eff1gain;
+				}
+				if (in_nrofchannels == 2) {
+					for (int i = 0, ix = 1; i < bufferlen; i++, ix += in_c) {
+						eff1[i] += readbuffer[ix] * _eff1gain;
+					}
+				}
+			}
+
+			if (_eff2gain > 0.0002) {
+				float[] eff2 = buffers[SoftMixingMainMixer.CHANNEL_EFFECT2]
+						.array();
+				for (int i = 0, ix = 0; i < bufferlen; i++, ix += in_c) {
+					eff2[i] += readbuffer[ix] * _eff2gain;
+				}
+				if (in_nrofchannels == 2) {
+					for (int i = 0, ix = 1; i < bufferlen; i++, ix += in_c) {
+						eff2[i] += readbuffer[ix] * _eff2gain;
+					}
+				}
+			}
+
+		}
+	}
+
+	public int getFrameLength() {
+		return bufferSize / format.getFrameSize();
+	}
+
+	public long getMicrosecondLength() {
+		return (long) (getFrameLength() * (1000000.0 / (double) getFormat()
+				.getSampleRate()));
+	}
+
+	public void loop(int count) {
+		LineEvent event = null;
+
+		synchronized (control_mutex) {
+			if (isOpen()) {
+				if (active)
+					return;
+				active = true;
+				active_sg = true;
+				loopcount = count;
+				event = new LineEvent(this, LineEvent.Type.START,
+						getLongFramePosition());
+			}
+		}
+
+		if (event != null)
+			sendEvent(event);
+
+	}
+
+	public void open(AudioInputStream stream) throws LineUnavailableException,
+			IOException {
+		if (isOpen()) {
+			throw new IllegalStateException("Clip is already open with format "
+					+ getFormat() + " and frame lengh of " + getFrameLength());
+		}
+		if (AudioFloatConverter.getConverter(stream.getFormat()) == null)
+			throw new IllegalArgumentException("Invalid format : "
+					+ stream.getFormat().toString());
+
+		if (stream.getFrameLength() != AudioSystem.NOT_SPECIFIED) {
+			byte[] data = new byte[(int) stream.getFrameLength()
+					* stream.getFormat().getFrameSize()];
+			int readsize = 512 * stream.getFormat().getFrameSize();
+			int len = 0;
+			while (len != data.length) {
+				if (readsize > data.length - len)
+					readsize = data.length - len;
+				int ret = stream.read(data, len, readsize);
+				if (ret == -1)
+					break;
+				if (ret == 0)
+					Thread.yield();
+				len += ret;
+			}
+			open(stream.getFormat(), data, 0, len);
+		} else {
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			byte[] b = new byte[512 * stream.getFormat().getFrameSize()];
+			int r = 0;
+			while ((r = stream.read(b)) != -1) {
+				if (r == 0)
+					Thread.yield();
+				baos.write(b, 0, r);
+			}
+			open(stream.getFormat(), baos.toByteArray(), 0, baos.size());
+		}
+
+	}
+
+	public void open(AudioFormat format, byte[] data, int offset, int bufferSize)
+			throws LineUnavailableException {
+		synchronized (control_mutex) {
+			if (isOpen()) {
+				throw new IllegalStateException(
+						"Clip is already open with format " + getFormat()
+								+ " and frame lengh of " + getFrameLength());
+			}
+			if (AudioFloatConverter.getConverter(format) == null)
+				throw new IllegalArgumentException("Invalid format : "
+						+ format.toString());
+			if (bufferSize % format.getFrameSize() != 0)
+				throw new IllegalArgumentException(
+						"Buffer size does not represent an integral number of sample frames!");
+
+			this.data = data;
+			this.offset = offset;
+			this.bufferSize = bufferSize;
+			this.format = format;
+			this.framesize = format.getFrameSize();
+
+			loopstart = 0;
+			loopend = -1;
+			loop_sg = true;
+
+			if (!mixer.isOpen()) {
+				mixer.open();
+				mixer.implicitOpen = true;
+			}
+
+			outputformat = mixer.getFormat();
+			out_nrofchannels = outputformat.getChannels();
+			in_nrofchannels = format.getChannels();
+
+			open = true;
+
+			mixer.getMainMixer().openLine(this);
+		}
+
+	}
+
+	public void setFramePosition(int frames) {
+		synchronized (control_mutex) {
+			frameposition_sg = true;
+			frameposition = frames;
+		}
+	}
+
+	public void setLoopPoints(int start, int end) {
+		synchronized (control_mutex) {
+			if (end != -1) {
+				if (end < start)
+					throw new IllegalArgumentException("Invalid loop points : "
+							+ start + " - " + end);
+				if (end * framesize > bufferSize)
+					throw new IllegalArgumentException("Invalid loop points : "
+							+ start + " - " + end);
+			}
+			if (start * framesize > bufferSize)
+				throw new IllegalArgumentException("Invalid loop points : "
+						+ start + " - " + end);



More information about the distro-pkg-dev mailing list