Mercurial > hg > pulseaudio
changeset 143:9c11cbf114f3
2008-09-25 Omair Majid <omajid@redhat.com>
* src/java/org/classpath/icedtea/pulseaudio/PulseAudioDataLine.java
Fixed code formatting.
(open): Changed modifier from public to protected. PulseAudioClip wont
expose this meaningless (for a Clip) function.
(createStream): Changed modifier from public to private. Dont want this
function exposed.
(addStreamListeners): Likewise.
(connect): Likewise.
(open): Changed modifier from public to proected. Dont want this method
exposed for all subclasses of PulseAudioDataLine.
* src/java/org/classpath/icedtea/pulseaudio/PulseAudioLine.java
(open): Removed redundant method.
* src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java
(open): New function. Implements a required function for SourceDataLine
interface. Previous implementation was through DataLine.open which was
made protected.
* src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java
(open): New function. Implements a required function for TargetDataLine
interface. Previous implementation was through DataLine.open which was
made protected.
(connectLine): Change modifier to protected.
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Thu, 25 Sep 2008 13:54:01 -0400 |
parents | 4e1873a3f88f |
children | d040c92fd62b |
files | src/java/org/classpath/icedtea/pulseaudio/PulseAudioDataLine.java src/java/org/classpath/icedtea/pulseaudio/PulseAudioLine.java src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java |
diffstat | 4 files changed, 54 insertions(+), 57 deletions(-) [+] |
line wrap: on
line diff
--- a/src/java/org/classpath/icedtea/pulseaudio/PulseAudioDataLine.java Thu Sep 25 11:44:25 2008 -0400 +++ b/src/java/org/classpath/icedtea/pulseaudio/PulseAudioDataLine.java Thu Sep 25 13:54:01 2008 -0400 @@ -77,21 +77,19 @@ protected Stream stream; private ArrayList<PulseAudioDataLine> synchronizedLines; - public void open(AudioFormat format, int bufferSize) + protected void open(AudioFormat format, int bufferSize) throws LineUnavailableException { if (isOpen) { - throw new IllegalStateException("DataLine is already open"); + throw new IllegalStateException("Line is already open"); } createStream(format); - addStreamListeners(); connect(null, bufferSize); - } - public void createStream(AudioFormat format) + private void createStream(AudioFormat format) throws LineUnavailableException { for (AudioFormat myFormat : supportedFormats) { @@ -104,7 +102,7 @@ } currentFormat = format; - super.open(); + isOpen = true; } } @@ -112,11 +110,11 @@ throw new IllegalArgumentException("Invalid format"); } - System.out.println("Stream " + stream + " created"); + // System.out.println("Stream " + stream + " created"); } - public void addStreamListeners() { + private void addStreamListeners() { Stream.StateListener openCloseListener = new Stream.StateListener() { @Override @@ -124,7 +122,7 @@ synchronized (eventLoop.threadLock) { /* - * Not the order: first we notify all the listeners, and + * Note the order: first we notify all the listeners, and * then return. this means no race conditions when the * listeners are removed before they get called by close * @@ -166,7 +164,7 @@ @Override public void update() { dataWritten = false; - + if (!corked) { fireLineEvent(new LineEvent(PulseAudioDataLine.this, LineEvent.Type.STOP, AudioSystem.NOT_SPECIFIED)); @@ -214,7 +212,7 @@ stream.addCorkListener(corkListener); } - public void connect(Stream masterStream, int bufferSize) + private void connect(Stream masterStream, int bufferSize) throws LineUnavailableException { try { @@ -223,9 +221,9 @@ } } catch (LineUnavailableException e) { // error connecting to the server! - //stream.removePlaybackStartedListener(startedListener); - //stream.removeUnderflowListener(stoppedListener); - //stream.removeStateListener(openCloseListener); + // stream.removePlaybackStartedListener(startedListener); + // stream.removeUnderflowListener(stoppedListener); + // stream.removeStateListener(openCloseListener); stream.free(); stream = null; throw e; @@ -248,7 +246,7 @@ } } - public void open(AudioFormat format) throws LineUnavailableException { + protected void open(AudioFormat format) throws LineUnavailableException { open(format, DEFAULT_BUFFER_SIZE); } @@ -333,11 +331,12 @@ op.waitForCompletion(); op.releaseReference(); isStarted = true; - - /*if (dataWritten) { - fireLineEvent(new LineEvent(PulseAudioDataLine.this, - LineEvent.Type.START, AudioSystem.NOT_SPECIFIED)); - }*/ + + /* + * if (dataWritten) { fireLineEvent(new + * LineEvent(PulseAudioDataLine.this, LineEvent.Type.START, + * AudioSystem.NOT_SPECIFIED)); } + */ }
--- a/src/java/org/classpath/icedtea/pulseaudio/PulseAudioLine.java Thu Sep 25 11:44:25 2008 -0400 +++ b/src/java/org/classpath/icedtea/pulseaudio/PulseAudioLine.java Thu Sep 25 13:54:01 2008 -0400 @@ -44,7 +44,6 @@ import javax.sound.sampled.Line; import javax.sound.sampled.LineEvent; import javax.sound.sampled.LineListener; -import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Control.Type; abstract class PulseAudioLine implements Line { @@ -112,13 +111,7 @@ return isOpen; } - @Override - public void open() throws LineUnavailableException { - /*if (isOpen) { - throw new IllegalStateException("Line is already open"); - }*/ - isOpen = true; - } + public void removeLineListener(LineListener listener) { lineListeners.remove(listener);
--- a/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java Thu Sep 25 11:44:25 2008 -0400 +++ b/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java Thu Sep 25 13:54:01 2008 -0400 @@ -84,6 +84,11 @@ } + @Override + public void open(AudioFormat format) throws LineUnavailableException { + open(format, DEFAULT_BUFFER_SIZE); + } + public byte[] native_setVolume(float value) { return stream.native_setVolume(value); } @@ -105,25 +110,25 @@ } - protected void connectLine(int bufferSize, Stream masterStream) throws LineUnavailableException { + protected void connectLine(int bufferSize, Stream masterStream) + throws LineUnavailableException { StreamBufferAttributes bufferAttributes = new StreamBufferAttributes( - bufferSize, bufferSize / 4, bufferSize / 8, + bufferSize, bufferSize / 4, bufferSize / 8, ((bufferSize / 10) > 100 ? bufferSize / 10 : 100), 0); - - if(masterStream != null) { + if (masterStream != null) { synchronized (eventLoop.threadLock) { - stream.connectForPlayback(Stream.DEFAULT_DEVICE, bufferAttributes, masterStream.getStreamPointer()); + stream.connectForPlayback(Stream.DEFAULT_DEVICE, + bufferAttributes, masterStream.getStreamPointer()); } } else { synchronized (eventLoop.threadLock) { - stream.connectForPlayback(Stream.DEFAULT_DEVICE, bufferAttributes, null); + stream.connectForPlayback(Stream.DEFAULT_DEVICE, + bufferAttributes, null); } } } - - @Override public int write(byte[] data, int offset, int length) { @@ -133,11 +138,10 @@ throw new IllegalStateException("must call open() before write()"); } - - /*if (!isStarted) { - throw new IllegalStateException("must call start() before write()"); - }*/ - + /* + * if (!isStarted) { throw new IllegalStateException("must call start() + * before write()"); } + */ int frameSize = currentFormat.getFrameSize(); if (length % frameSize != 0) { @@ -158,15 +162,13 @@ int sizeWritten = 0; - - boolean interrupted = false; while (remainingLength != 0) { synchronized (eventLoop.threadLock) { availableSize = stream.getWritableSize(); - + do { if (availableSize < 0) { return sizeWritten; @@ -181,29 +183,25 @@ } } - + availableSize = stream.getWritableSize(); - //System.out.println(availableSize); - + // System.out.println(availableSize); } while (availableSize == 0); - if (availableSize > remainingLength) { availableSize = remainingLength; } /* write a little bit of the buffer */ - - stream.write(data, position, availableSize); - //System.out.println("written " + availableSize); - + + stream.write(data, position, availableSize); + // System.out.println("written " + availableSize); sizeWritten += availableSize; position += availableSize; remainingLength -= availableSize; - } } - + } // all the data should have been played by now assert (sizeWritten == length);
--- a/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java Thu Sep 25 11:44:25 2008 -0400 +++ b/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLine.java Thu Sep 25 13:54:01 2008 -0400 @@ -80,12 +80,18 @@ super.open(format, bufferSize); currentFramePosition = 0; - + PulseAudioMixer parentMixer = PulseAudioMixer.getInstance(); parentMixer.addTargetLine(this); } - protected void connectLine(int bufferSize, Stream masterStream) throws LineUnavailableException{ + @Override + public void open(AudioFormat format) throws LineUnavailableException { + open(format, DEFAULT_BUFFER_SIZE); + } + + protected void connectLine(int bufferSize, Stream masterStream) + throws LineUnavailableException { StreamBufferAttributes bufferAttributes = new StreamBufferAttributes( bufferSize, 0, 0, 0, bufferSize / 10); synchronized (eventLoop.threadLock) { @@ -130,7 +136,8 @@ sizeRead += bytesRead; position += bytesRead; remainingLength -= bytesRead; - currentFramePosition += bytesRead / currentFormat.getFrameSize(); + currentFramePosition += bytesRead + / currentFormat.getFrameSize(); } }