Om  1.0.0
A universal framework for multimedia simulation
Public Member Functions | Static Public Attributes | List of all members
om::sound::filters::ThreadedStreamRecorder Class Reference

A class that handles recording audio data to a streaming sound destination on a different thread. More...

#include <omSoundThreadedStreamRecorder.h>

Inheritance diagram for om::sound::filters::ThreadedStreamRecorder:
om::sound::filters::SoundFilter

Public Member Functions

 ThreadedStreamRecorder ()
 Create a default threaded sound stream recorder without any stream to record to. More...
 
 ThreadedStreamRecorder (const Shared< SoundOutputStream > &newStream)
 Create a threaded sound stream recorder which records to the specified sound output stream. More...
 
 ~ThreadedStreamRecorder ()
 Destroy a threaded sound stream recorder and release all resources associated with it. More...
 
const SoundOutputStreamgetStream () const
 Return a const pointer to the SoundOutputStream that is being written to. More...
 
void setStream (const Shared< SoundOutputStream > &newStream, Index inputIndex=0)
 Set the SoundOutputStream which this recorder should use as a sound destination. More...
 
Bool isRecording () const
 Return whether or not this threaded sound recorder is current recording audio. More...
 
Bool setIsRecording (Bool newIsRecording)
 Set whether or not this threaded sound recorder should be recording its input sound. More...
 
Bool record ()
 Tell the threaded sound recorder to start recording sound from the current position. More...
 
void stop ()
 Stop recording sound and keep the record head at the last position. More...
 
Bool rewind ()
 Reset the recording position to the first position within the stream. More...
 
virtual UTF8String getName () const
 Return a human-readable name for this threaded stream recorder. More...
 
virtual UTF8String getManufacturer () const
 Return the manufacturer name of this threaded stream recorder. More...
 
virtual FilterVersion getVersion () const
 Return an object representing the version of this threaded stream recorder. More...
 
virtual FilterCategory getCategory () const
 Return an object that describes the category of effect that this filter implements. More...
 
virtual Bool allowsInPlaceProcessing () const
 Return whether or not this threaded stream recorder can process audio data in-place. More...
 
- Public Member Functions inherited from om::sound::filters::SoundFilter
virtual ~SoundFilter ()
 Destroy this sound filter object. More...
 
SoundResult read (SoundBuffer &outputBuffer, Size numSamples)
 Fill the specified output buffer with the requested number of samples, based on internal filter state. More...
 
SoundResult read (SoundFrame &outputFrame, Size numSamples)
 Fill the specified output frame with the requested number of samples, based on internal filter state. More...
 
SoundResult write (const SoundBuffer &inputBuffer, Size numSamples)
 Process the specified input buffer samples and do something with them. More...
 
SoundResult write (const SoundFrame &inputFrame, Size numSamples)
 Process the specified input frame samples and do something with them. More...
 
SoundResult process (const SoundBuffer &inputBuffer, SoundBuffer &outputBuffer, Size numSamples)
 Apply this filter to the specified input buffer data, placing the result in the output buffer. More...
 
SoundResult process (const SoundBuffer &inputBuffer, SoundFrame &outputFrame, Size numSamples)
 Apply this filter to the specified input buffer data, placing the result in the output frame. More...
 
SoundResult process (const SoundFrame &inputFrame, SoundFrame &outputFrame, Size numSamples)
 Apply this filter to the specified input frame data, placing the result in the output frame. More...
 
SoundResult process (const SoundFrame &inputBuffer, SoundBuffer &outputBuffer, Size numSamples)
 Apply this filter to the specified input frame data, placing the result in the output buffer. More...
 
void reset ()
 Signal to the filter that the audio stream is restarting. More...
 
UInt64 getFrameIndex () const
 Return the index of the next frame to be processed (or the current one if currently processing). More...
 
Size getInputCount () const
 Return the current number of audio inputs that this filter has. More...
 
virtual UTF8String getInputName (Index inputIndex) const
 Return a human-readable name of the filter audio input at the specified index. More...
 
Size getOutputCount () const
 Return the current number of audio outputs that this filter has. More...
 
virtual UTF8String getOutputName (Index outputIndex) const
 Return a human-readable name of the filter audio output at the specified index. More...
 
Size getMIDIInputCount () const
 Return the current number of MIDI inputs that this filter has. More...
 
virtual UTF8String getMIDIInputName (Index inputIndex) const
 Return a human-readable name of the filter MIDI input at the specified index. More...
 
Size getMIDIOutputCount () const
 Return the current number of MIDI outputs that this filter has. More...
 
virtual UTF8String getMIDIOutputName (Index outputIndex) const
 Return a human-readable name of the filter MIDI output at the specified index. More...
 
virtual Time getLatency () const
 Return a Time value indicating the latency of this sound filter in seconds. More...
 
virtual Size getParameterCount () const
 Return the total number of generic accessible parameters this filter has. More...
 
virtual Bool getParameterIndex (const UTF8String &parameterName, Index &parameterIndex) const
 Query the index of the parameter with the specified name. More...
 
virtual Bool getParameterInfo (Index parameterIndex, FilterParameterInfo &info) const
 Get information about the filter parameter at the specified index. More...
 
virtual Bool getParameterValueName (Index parameterIndex, const FilterParameter &value, UTF8String &name) const
 Get any special name associated with the specified value of an indexed parameter. More...
 
Bool getParameter (Index parameterIndex, FilterParameter &value) const
 Place the value of the parameter at the specified index in the output parameter. More...
 
Bool getParameter (Index parameterIndex, Bool &value) const
 Place the value of the parameter at the specified index in the output parameter. More...
 
Bool getParameter (Index parameterIndex, Int64 &value) const
 Place the value of the parameter at the specified index in the output parameter. More...
 
Bool getParameter (Index parameterIndex, Float32 &value) const
 Place the value of the parameter at the specified index in the output parameter. More...
 
Bool getParameter (Index parameterIndex, Float64 &value) const
 Place the value of the parameter at the specified index in the output parameter. More...
 
template<typename ParameterType >
Bool getParameter (const UTF8String &name, ParameterType &value) const
 Place the value of the parameter with the specified name in the output parameter. More...
 
template<typename ParameterType >
Bool getParameter (const char *name, ParameterType &value) const
 Place the value of the parameter with the specified name in the output parameter. More...
 
Bool setParameter (Index parameterIndex, const FilterParameter &value)
 Attempt to set the parameter value at the specified index. More...
 
Bool setParameter (Index parameterIndex, Bool value)
 Attempt to set the parameter value at the specified index. More...
 
Bool setParameter (Index parameterIndex, Int64 value)
 Attempt to set the parameter value at the specified index. More...
 
Bool setParameter (Index parameterIndex, Float32 value)
 Attempt to set the parameter value at the specified index. More...
 
Bool setParameter (Index parameterIndex, Float64 value)
 Attempt to set the parameter value at the specified index. More...
 
template<typename ParameterType >
Bool setParameter (const UTF8String &name, ParameterType value)
 Attempt to set the parameter value with the specified name. More...
 
template<typename ParameterType >
Bool setParameter (const char *name, ParameterType value)
 Attempt to set the parameter value with the specified name. More...
 
virtual Bool writeState (DataOutputStream &stream) const
 Write the current state of this sound filter to a data output stream. More...
 
virtual Bool readState (DataInputStream &stream)
 Read a previously saved filter state from the specified data input stream and replace the filter's state. More...
 
virtual Size getPresetCount () const
 Return the number of standard configuration presets that this sound filter has. More...
 
virtual Bool getPreset (Index presetIndex, FilterPreset &preset) const
 Get the standard preset for this sound filter with the specified index. More...
 
Bool getIsSynchronized () const
 Return whether or not this sound filter performs thread synchronization. More...
 
void setIsSynchronized (Bool newIsSynchronized)
 Set whether or not this sound filter performs thread synchronization. More...
 

Static Public Attributes

static const UTF8String NAME
 A string indicating the human-readable name of this threadedstream recorder. More...
 
static const UTF8String MANUFACTURER
 A string indicating the manufacturer name of this threaded stream recorder. More...
 
static const FilterVersion VERSION
 An object indicating the version of this threaded stream recorder. More...
 
- Static Public Attributes inherited from om::sound::filters::SoundFilter
static const om::resources::ResourceType RESOURCE_TYPE
 The resource type for a sound filter. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from om::sound::filters::SoundFilter
static Size getMaximumNumberOfInputs ()
 Return the maximum number of audio inputs that a SoundFilter can support. More...
 
static Size getMaximumNumberOfOutputs ()
 Return the maximum number of audio outputs that a SoundFilter can support. More...
 
static Size getMaximumNumberOfMIDIInputs ()
 Return the maximum number of MIDI inputs that a SoundFilter can support. More...
 
static Size getMaximumNumberOfMIDIOutputs ()
 Return the maximum number of MIDI outputs that a SoundFilter can support. More...
 
- Protected Member Functions inherited from om::sound::filters::SoundFilter
 SoundFilter ()
 Create a new sound filter with 1 audio input and output, and no MIDI inputs or outputs. More...
 
 SoundFilter (Size numInputs, Size numOutputs)
 Create a new sound filter with the specified number of audio inputs and outputs. More...
 
 SoundFilter (Size numInputs, Size numOutputs, Size numMIDIInputs, Size numMIDIOutputs)
 Create a new sound filter with the specified number of audio inputs and outputs. More...
 
virtual Bool getParameterValue (Index parameterIndex, FilterParameter &value) const
 Place the value of the parameter at the specified index in the output parameter. More...
 
virtual Bool setParameterValue (Index parameterIndex, const FilterParameter &value)
 Attempt to set the parameter value at the specified index. More...
 
virtual void resetStream ()
 A method that is called whenever the filter's stream of audio is being reset. More...
 
void setInputCount (Size newNumInputs)
 Set the number of inputs that this filter should have. More...
 
void setOutputCount (Size newNumOutputs)
 Set the number of outputs that this filter should have. More...
 
void setMIDIInputCount (Size newNumMIDIInputs)
 Set the number of MIDI inputs that this filter should have. More...
 
void setMIDIOutputCount (Size newNumMIDIOutputs)
 Set the number of MIDI outputs that this filter should have. More...
 
Bool isFirstFrame () const
 Return whether or not the filter's next frame to be processed is also its first frame. More...
 
void lockMutex () const
 Acquire a mutex which handles subclass rendering parameter synchronization. More...
 
void unlockMutex () const
 Release a mutex which handles subclass rendering parameter synchronization. More...
 

Detailed Description

A class that handles recording audio data to a streaming sound destination on a different thread.

This class takes a pointer to a SoundOutputStream and then records sound to that stream when the recorder is set to the 'record' mode. This class spawns a new thread which sends the data to the SoundOutputStream when it is recieved by the processing thread. Since encoding data with a SoundOutputStream can be slower than real time (often due to disk throughput), this class prevents recording stalls or dropped frames that can occur if recording and encoding are on the same thread.

Constructor & Destructor Documentation

om::sound::filters::ThreadedStreamRecorder::ThreadedStreamRecorder ( )

Create a default threaded sound stream recorder without any stream to record to.

The constructed object will not do any recording until it has a valid stream object.

om::sound::filters::ThreadedStreamRecorder::ThreadedStreamRecorder ( const Shared< SoundOutputStream > &  newStream)

Create a threaded sound stream recorder which records to the specified sound output stream.

If the supplied stream is NULL or invalid, the stream recorder records no sound. All recording occurs relative to the initial position within the stream.

om::sound::filters::ThreadedStreamRecorder::~ThreadedStreamRecorder ( )

Destroy a threaded sound stream recorder and release all resources associated with it.

Member Function Documentation

const SoundOutputStream* om::sound::filters::ThreadedStreamRecorder::getStream ( ) const

Return a const pointer to the SoundOutputStream that is being written to.

If there is no sound output stream set or if the stream is not valid, a NULL pointer is returned, indicating the problem.

void om::sound::filters::ThreadedStreamRecorder::setStream ( const Shared< SoundOutputStream > &  newStream,
Index  inputIndex = 0 
)

Set the SoundOutputStream which this recorder should use as a sound destination.

If the supplied pointer is NULL, the sound recorder is deactivated and doesn't record any more audio. Otherwise, the recorder resets its current recording position and starts recording to the current position in the stream. Thus, all recording occurs relative to the initial position within the stream.

Bool om::sound::filters::ThreadedStreamRecorder::isRecording ( ) const

Return whether or not this threaded sound recorder is current recording audio.

Bool om::sound::filters::ThreadedStreamRecorder::setIsRecording ( Bool  newIsRecording)

Set whether or not this threaded sound recorder should be recording its input sound.

The method returns whether or not recording will occurr, based on the type of SoundOutputSream which this player has and the requested playback state.

Bool om::sound::filters::ThreadedStreamRecorder::record ( )

Tell the threaded sound recorder to start recording sound from the current position.

The method returns whether or not recording will occurr, based on the type of SoundInputStream that this player has.

void om::sound::filters::ThreadedStreamRecorder::stop ( )

Stop recording sound and keep the record head at the last position.

Bool om::sound::filters::ThreadedStreamRecorder::rewind ( )

Reset the recording position to the first position within the stream.

The method returns whether or not the rewind operation was successul. For SoundOutputStream objects that don't allow seeking, this method will always fail. This method does not affect the recording state of the recorder, thus rewinding will cause the recording to jump to the beginning of the stream if the recorder is currently recording.

virtual UTF8String om::sound::filters::ThreadedStreamRecorder::getName ( ) const
virtual

Return a human-readable name for this threaded stream recorder.

The method returns the string "Threaded Stream Recorder".

Reimplemented from om::sound::filters::SoundFilter.

virtual UTF8String om::sound::filters::ThreadedStreamRecorder::getManufacturer ( ) const
virtual

Return the manufacturer name of this threaded stream recorder.

The method returns the string "Om Sound".

Reimplemented from om::sound::filters::SoundFilter.

virtual FilterVersion om::sound::filters::ThreadedStreamRecorder::getVersion ( ) const
virtual

Return an object representing the version of this threaded stream recorder.

Reimplemented from om::sound::filters::SoundFilter.

virtual FilterCategory om::sound::filters::ThreadedStreamRecorder::getCategory ( ) const
virtual

Return an object that describes the category of effect that this filter implements.

This method returns the value FilterCategory::RECORDING.

Reimplemented from om::sound::filters::SoundFilter.

virtual Bool om::sound::filters::ThreadedStreamRecorder::allowsInPlaceProcessing ( ) const
virtual

Return whether or not this threaded stream recorder can process audio data in-place.

This method always returns TRUE, threaded stream recorders can process audio data in-place.

Reimplemented from om::sound::filters::SoundFilter.

Member Data Documentation

const UTF8String om::sound::filters::ThreadedStreamRecorder::NAME
static

A string indicating the human-readable name of this threadedstream recorder.

const UTF8String om::sound::filters::ThreadedStreamRecorder::MANUFACTURER
static

A string indicating the manufacturer name of this threaded stream recorder.

const FilterVersion om::sound::filters::ThreadedStreamRecorder::VERSION
static

An object indicating the version of this threaded stream recorder.


The documentation for this class was generated from the following file: