Audaspace 1.5.0
A high level audio library.
Loading...
Searching...
No Matches
Public Member Functions | List of all members
BinauralReader Class Reference

This class represents a reader for a sound that can sound different depending on its realtive position with the listener. More...

#include <BinauralReader.h>

Inheritance diagram for BinauralReader:
Inheritance graph
[legend]

Public Member Functions

 BinauralReader (std::shared_ptr< IReader > reader, std::shared_ptr< HRTF > hrtfs, std::shared_ptr< Source > source, std::shared_ptr< ThreadPool > threadPool, std::shared_ptr< FFTPlan > plan)
 Creates a new convolver reader.
 
virtual bool isSeekable () const
 Tells whether the source provides seeking functionality or not.
 
virtual void seek (int position)
 Seeks to a specific position in the source.
 
virtual int getLength () const
 Returns an approximated length of the source in samples.
 
virtual int getPosition () const
 Returns the position of the source as a sample count value.
 
virtual Specs getSpecs () const
 Returns the specification of the reader.
 
virtual void read (int &length, bool &eos, sample_t *buffer)
 Request to read the next length samples out of the source.
 
- Public Member Functions inherited from IReader
virtual ~IReader ()
 Destroys the reader.
 

Detailed Description

This class represents a reader for a sound that can sound different depending on its realtive position with the listener.

Constructor & Destructor Documentation

◆ BinauralReader()

BinauralReader::BinauralReader ( std::shared_ptr< IReader > reader,
std::shared_ptr< HRTF > hrtfs,
std::shared_ptr< Source > source,
std::shared_ptr< ThreadPool > threadPool,
std::shared_ptr< FFTPlan > plan )

Creates a new convolver reader.

Parameters
readerA reader of the input sound to be assigned to this reader. It must have one channel.
hrtfsA shared pointer to an HRTF object that will be used to get a particular impulse response depending on the source.
sourceA shared pointer to a Source object that will be used to change the source position of the sound.
threadPoolA shared pointer to a ThreadPool object with 1 or more threads.
planA shared pointer to and FFT plan that will be used for convolution.
Exceptions
Exceptionthrown if the specs of the HRTFs and the sound don't match or if the provided HRTF object is empty.

Member Function Documentation

◆ getLength()

virtual int BinauralReader::getLength ( ) const
virtual

Returns an approximated length of the source in samples.

Returns
The length as sample count. May be negative if unknown.

Implements IReader.

◆ getPosition()

virtual int BinauralReader::getPosition ( ) const
virtual

Returns the position of the source as a sample count value.

Returns
The current position in the source. A negative value indicates that the position is unknown.
Warning
The value returned doesn't always have to be correct for readers, especially after seeking.

Implements IReader.

◆ getSpecs()

virtual Specs BinauralReader::getSpecs ( ) const
virtual

Returns the specification of the reader.

Returns
The Specs structure.

Implements IReader.

◆ isSeekable()

virtual bool BinauralReader::isSeekable ( ) const
virtual

Tells whether the source provides seeking functionality or not.

Warning
This doesn't mean that the seeking always has to succeed.
Returns
Always returns true for readers of buffering types.

Implements IReader.

◆ read()

virtual void BinauralReader::read ( int & length,
bool & eos,
sample_t * buffer )
virtual

Request to read the next length samples out of the source.

The buffer supplied has the needed size.

Parameters
[in,out]lengthThe count of samples that should be read. Shall contain the real count of samples after reading, in case there were only fewer samples available. A smaller value also indicates the end of the reader.
[out]eosEnd of stream, whether the end is reached or not.
[in]bufferThe pointer to the buffer to read into.

Implements IReader.

◆ seek()

virtual void BinauralReader::seek ( int position)
virtual

Seeks to a specific position in the source.

Parameters
positionThe position to seek for measured in samples. To get from a given time to the samples you simply have to multiply the time value in seconds with the sample rate of the reader.
Warning
This may work or not, depending on the actual reader.

Implements IReader.


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