jmri.jmrit.audio
Class AbstractAudioBuffer

java.lang.Object
  extended by jmri.implementation.AbstractNamedBean
      extended by jmri.implementation.AbstractAudio
          extended by jmri.jmrit.audio.AbstractAudioBuffer
All Implemented Interfaces:
Serializable, Audio, AudioBuffer, NamedBean
Direct Known Subclasses:
JavaSoundAudioBuffer, JoalAudioBuffer, NullAudioBuffer

public abstract class AbstractAudioBuffer
extends AbstractAudio
implements AudioBuffer

Base implementation of the AudioBuffer class.

Specific implementations will extend this base class.


This file is part of JMRI.

JMRI is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the "COPYING" file for a copy of this license.

JMRI 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 for more details.

Author:
Matthew Harris copyright (c) 2009, 2011
See Also:
Serialized Form

Field Summary
protected static int LOOP_POINT_BOTH
          Identifier of both loop points
protected static int LOOP_POINT_END
          Identifier of end loop point
protected static int LOOP_POINT_START
          Identifier of start loop point
 
Fields inherited from class jmri.implementation.AbstractNamedBean
mSystemName, mUserName
 
Fields inherited from interface jmri.jmrit.audio.AudioBuffer
FORMAT_16BIT_5DOT1, FORMAT_16BIT_6DOT1, FORMAT_16BIT_7DOT1, FORMAT_16BIT_MONO, FORMAT_16BIT_QUAD, FORMAT_16BIT_STEREO, FORMAT_8BIT_5DOT1, FORMAT_8BIT_6DOT1, FORMAT_8BIT_7DOT1, FORMAT_8BIT_MONO, FORMAT_8BIT_QUAD, FORMAT_8BIT_STEREO, FORMAT_UNKNOWN
 
Fields inherited from interface jmri.Audio
AT, BUFFER, CMD_BIND_BUFFER, CMD_FADE_IN, CMD_FADE_OUT, CMD_INIT_FACTORY, CMD_LOAD_SOUND, CMD_PAUSE, CMD_PAUSE_TOGGLE, CMD_PLAY, CMD_PLAY_TOGGLE, CMD_RESET_POSITION, CMD_RESUME, CMD_REWIND, CMD_STOP, DECIMAL_PLACES, FADE_IN, FADE_NONE, FADE_OUT, LISTENER, MAX_DISTANCE, SOURCE, STATE_EMPTY, STATE_INITIAL, STATE_LOADED, STATE_MOVING, STATE_PLAYING, STATE_POSITIONED, STATE_STOPPED, UP
 
Fields inherited from interface jmri.NamedBean
INCONSISTENT, UNKNOWN
 
Constructor Summary
AbstractAudioBuffer(String systemName)
          Abstract constructor for new AudioBuffer with system name
AbstractAudioBuffer(String systemName, String userName)
          Abstract constructor for new AudioBuffer with system name and user name
 
Method Summary
protected abstract  void generateLoopBuffers(int which)
          Method used to generate any necessary loop buffers.
protected abstract  boolean generateStreamingBuffers()
          Internal method used to generate buffers for streaming
 long getEndLoopPoint()
          Retrieves the end loop point of the sound sample stored in this buffer Applies only to sub-types: Buffer
 int getFrameSize()
          Retrieves the length of a sound sample frame stored in this buffer Applies only to sub-types: Buffer
 long getStartLoopPoint()
          Retrieves the start loop point of the sound sample stored in this buffer Applies only to sub-types: Buffer
 char getSubType()
          An Audio object can represent one of a number of subtypes of object.
 String getURL()
          Return the url of the sound sample Applies only to sub-types: Buffer
 boolean isStreamed()
          Retrieves the current streaming setting of this buffer Applies only to sub-types: Buffer
 boolean isStreamedForced()
          Determines if this buffer can be loaded in full or if it must be streamed from the file.
protected abstract  boolean loadBuffer()
          Method used to load the actual sound data into the buffer
protected abstract  boolean loadBuffer(InputStream s)
          Method used to load the actual sound data from an InputStream into the buffer
protected abstract  void removeStreamingBuffers()
          Internal method used to remove streaming buffers
 void setEndLoopPoint(long endLoopPoint)
          Sets the end loop point of the sound sample stored in this buffer Applies only to sub-types: Buffer
protected  void setEndLoopPoint(long endLoopPoint, boolean generateLoopBuffers)
          Internal method used to set the end loop point of this buffer with optional generation of loop buffers
 void setInputStream(InputStream stream)
          Sets the input stream of the sound sample Applies only to sub-types: Buffer
 void setStartLoopPoint(long startLoopPoint)
          Sets the start loop point of the sound sample stored in this buffer Applies only to sub-types: Buffer
protected  void setStartLoopPoint(long startLoopPoint, boolean generateLoopBuffers)
          Internal method used to set the start loop point of this buffer with optional generation of loop buffers
 void setStreamed(boolean streamed)
          Sets that this buffer is to be streamed as opposed to loaded in full.
protected  void setStreamedForced(boolean streamedForced)
          Protected method used internally to modify the forced streaming flag
 void setURL(String url)
          Sets the url of the sound sample Applies only to sub-types: Buffer
 void stateChanged(int oldState)
          Method used to update the current state of the Audio object
 
Methods inherited from class jmri.implementation.AbstractAudio
cleanUp, getState, roundDecimal, roundDecimal, setState, toString
 
Methods inherited from class jmri.implementation.AbstractNamedBean
addPropertyChangeListener, addPropertyChangeListener, dispose, firePropertyChange, getComment, getDisplayName, getListenerRef, getListenerRefs, getNumPropertyChangeListeners, getProperty, getPropertyChangeListeners, getPropertyChangeListeners, getPropertyKeys, getSystemName, getUserName, removePropertyChangeListener, setComment, setProperty, setUserName, updateListenerRef
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface jmri.jmrit.audio.AudioBuffer
getFormat, getFrequency, getLength
 
Methods inherited from interface jmri.NamedBean
addPropertyChangeListener, addPropertyChangeListener, dispose, getComment, getDisplayName, getListenerRef, getListenerRefs, getNumPropertyChangeListeners, getProperty, getPropertyChangeListeners, getPropertyKeys, getState, getSystemName, getUserName, removePropertyChangeListener, setComment, setProperty, setState, setUserName, updateListenerRef
 

Field Detail

LOOP_POINT_START

protected static final int LOOP_POINT_START
Identifier of start loop point

See Also:
Constant Field Values

LOOP_POINT_END

protected static final int LOOP_POINT_END
Identifier of end loop point

See Also:
Constant Field Values

LOOP_POINT_BOTH

protected static final int LOOP_POINT_BOTH
Identifier of both loop points

See Also:
Constant Field Values
Constructor Detail

AbstractAudioBuffer

public AbstractAudioBuffer(String systemName)
Abstract constructor for new AudioBuffer with system name

Parameters:
systemName - AudioBuffer object system name (e.g. IAB4)

AbstractAudioBuffer

public AbstractAudioBuffer(String systemName,
                           String userName)
Abstract constructor for new AudioBuffer with system name and user name

Parameters:
systemName - AudioBuffer object system name (e.g. IAB4)
userName - AudioBuffer object user name
Method Detail

getSubType

public char getSubType()
Description copied from interface: Audio
An Audio object can represent one of a number of subtypes of object.

This method enables us to determine which of those subtypes this particular instance is and be able to process accordingly.

Current supported subtypes are:

Specified by:
getSubType in interface Audio
Returns:
subType char

getURL

public String getURL()
Description copied from interface: AudioBuffer
Return the url of the sound sample

Applies only to sub-types:

Specified by:
getURL in interface AudioBuffer
Returns:
url

setURL

public void setURL(String url)
Description copied from interface: AudioBuffer
Sets the url of the sound sample

Applies only to sub-types:

Specified by:
setURL in interface AudioBuffer
Parameters:
url - URL for location containing sound sample data

setInputStream

public void setInputStream(InputStream stream)
Description copied from interface: AudioBuffer
Sets the input stream of the sound sample

Applies only to sub-types:

Specified by:
setInputStream in interface AudioBuffer
Parameters:
stream - InputStream containing sound sample data

getFrameSize

public int getFrameSize()
Description copied from interface: AudioBuffer
Retrieves the length of a sound sample frame stored in this buffer

Applies only to sub-types:

Specified by:
getFrameSize in interface AudioBuffer
Returns:
length of sound sample frame in bytes

loadBuffer

protected abstract boolean loadBuffer()
Method used to load the actual sound data into the buffer

Returns:
True if successful; False if not

loadBuffer

protected abstract boolean loadBuffer(InputStream s)
Method used to load the actual sound data from an InputStream into the buffer

Parameters:
s - InputStream containing sound data
Returns:
True if successful; False if not

setStartLoopPoint

public void setStartLoopPoint(long startLoopPoint)
Description copied from interface: AudioBuffer
Sets the start loop point of the sound sample stored in this buffer

Applies only to sub-types:

Specified by:
setStartLoopPoint in interface AudioBuffer
Parameters:
startLoopPoint - position of start loop point in samples

setStartLoopPoint

protected void setStartLoopPoint(long startLoopPoint,
                                 boolean generateLoopBuffers)
Internal method used to set the start loop point of this buffer with optional generation of loop buffers

Parameters:
startLoopPoint - position of start loop point in samples
generateLoopBuffers - True if loop buffers to be generated

getStartLoopPoint

public long getStartLoopPoint()
Description copied from interface: AudioBuffer
Retrieves the start loop point of the sound sample stored in this buffer

Applies only to sub-types:

Specified by:
getStartLoopPoint in interface AudioBuffer
Returns:
position of start loop point in samples

setEndLoopPoint

public void setEndLoopPoint(long endLoopPoint)
Description copied from interface: AudioBuffer
Sets the end loop point of the sound sample stored in this buffer

Applies only to sub-types:

Specified by:
setEndLoopPoint in interface AudioBuffer
Parameters:
endLoopPoint - position of end loop point in samples

setEndLoopPoint

protected void setEndLoopPoint(long endLoopPoint,
                               boolean generateLoopBuffers)
Internal method used to set the end loop point of this buffer with optional generation of loop buffers

Parameters:
endLoopPoint - position of end loop point in samples
generateLoopBuffers - True if loop buffers to be generated

getEndLoopPoint

public long getEndLoopPoint()
Description copied from interface: AudioBuffer
Retrieves the end loop point of the sound sample stored in this buffer

Applies only to sub-types:

Specified by:
getEndLoopPoint in interface AudioBuffer
Returns:
position of end loop point in samples

setStreamed

public void setStreamed(boolean streamed)
Description copied from interface: AudioBuffer
Sets that this buffer is to be streamed as opposed to loaded in full. Can only be turned off when isStreamedForced is not set.

Applies only to sub-types:

Specified by:
setStreamed in interface AudioBuffer
Parameters:
streamed - buffer is streamed from file or loaded in full
See Also:
AudioBuffer.isStreamedForced()

isStreamed

public boolean isStreamed()
Description copied from interface: AudioBuffer
Retrieves the current streaming setting of this buffer

Applies only to sub-types:

Specified by:
isStreamed in interface AudioBuffer
Returns:
current streaming setting

setStreamedForced

protected void setStreamedForced(boolean streamedForced)
Protected method used internally to modify the forced streaming flag

Parameters:
streamedForced - True if required; False if not

isStreamedForced

public boolean isStreamedForced()
Description copied from interface: AudioBuffer
Determines if this buffer can be loaded in full or if it must be streamed from the file. Forced streaming is usually restricted to larger sound samples that are otherwise too large to fit directly into memory.

Applies only to sub-types:

Specified by:
isStreamedForced in interface AudioBuffer
Returns:
True if buffer must be streamed; False it can be loaded in full

generateLoopBuffers

protected abstract void generateLoopBuffers(int which)
Method used to generate any necessary loop buffers.

Parameters:
which - the loop buffer to generate:
LOOP_POINT_START for the start loop buffer
LOOP_POINT_END for the end loop buffer
LOOP_POINT_BOTH for both loop buffers

generateStreamingBuffers

protected abstract boolean generateStreamingBuffers()
Internal method used to generate buffers for streaming

Returns:
True if successful; False if not

removeStreamingBuffers

protected abstract void removeStreamingBuffers()
Internal method used to remove streaming buffers


stateChanged

public void stateChanged(int oldState)
Description copied from interface: Audio
Method used to update the current state of the Audio object

Specified by:
stateChanged in interface Audio


Copyright © 1997 - 2011 JMRI Community.
JMRI, DecoderPro, PanelPro, SoundPro, DispatcherPro and associated logos are our trademarks.

Additional information on copyright, trademarks and licenses is linked here.
Site hosted by: Get JMRI Model Railroad Interface at SourceForge.net. Fast, secure and Free Open Source software downloads