ccAudio
|
A class used to manipulate audio data. More...
#include <audio2.h>
Public Member Functions | |
AudioFile (const char *name, unsigned long offset=0) | |
Construct and open an existing audio file for read/write. | |
AudioFile (const char *name, Info *info, unsigned long minimum=0) | |
Create and open a new audio file for writing. | |
AudioFile () | |
Construct an audio file without attaching to the filesystem. | |
virtual | ~AudioFile () |
void | open (const char *name, Mode mode=modeWrite, timeout_t framing=0) |
Open an audio file and associate it with this object. | |
void | create (const char *name, Info *info, bool exclusive=false, timeout_t framing=0) |
Create a new audio file and associate it with this object. | |
time_t | getAge (void) |
Returns age since last prior access. | |
size_t | getSize (void) |
Get maximum size of frame buffer for data use. | |
void | close (void) |
Close an object associated with an open file. | |
void | clear (void) |
Clear the AudioFile structure. | |
ssize_t | getBuffer (Encoded buffer, size_t len=0) |
Retrieve bytes from the file into a memory buffer. | |
unsigned | getLinear (Linear buffer, unsigned request=0) |
Retrieve and convert content to linear encoded audio data from it's original form. | |
ssize_t | putBuffer (Encoded buffer, size_t len=0) |
Insert bytes into the file from a memory buffer. | |
unsigned | putLinear (Linear buffer, unsigned request=0) |
Convert and store content from linear encoded audio data to the format of the audio file. | |
Error | getSamples (void *buffer, unsigned samples=0) |
Retrieve samples from the file into a memory buffer. | |
Error | putSamples (void *buffer, unsigned samples=0) |
Insert samples into the file from a memory buffer. | |
Error | skip (long number) |
Change the file position by skipping a specified number of audio samples of audio data. | |
Error | setPosition (unsigned long samples=~0l) |
Seek a file position by sample count. | |
Error | position (const char *timestamp) |
Seek a file position by timestamp. | |
void | getPosition (char *timestamp, size_t size) |
Return the timestamp of the current absolute file position. | |
Error | setLimit (unsigned long maximum=0l) |
Set the maximum file position for reading and writing of audio data by samples. | |
Error | getInfo (Info *info) |
Copy the source description of the audio file into the specified object. | |
Error | setMinimum (unsigned long minimum) |
Set minimum file size for a created file. | |
unsigned long | getAbsolutePosition (void) |
Get the current file pointer in bytes relative to the start of the file. | |
unsigned long | getPosition (void) |
Get the current file pointer in samples relative to the start of the sample buffer. | |
virtual bool | isOpen (void) |
Test if the file is opened. | |
virtual bool | hasPositioning (void) |
Return true if underlying derived class supports direct access to file positioning. | |
Encoding | getEncoding (void) |
Return audio encoding format for this audio file. | |
Format | getFormat (void) |
Return base file format of containing audio file. | |
unsigned | getSampleRate (void) |
Get audio encoding sample rate, in samples per second, for this audio file. | |
char * | getAnnotation (void) |
Get annotation extracted from header of containing file. | |
Error | getError (void) |
Get last error code. | |
bool | operator! (void) |
bool | isSigned (void) |
Return if the current content is signed or unsigned samples. | |
Protected Member Functions | |
void | initialize (void) |
void | getWaveFormat (int size) |
void | mp3info (mpeg_audio *mp3) |
virtual bool | afCreate (const char *path, bool exclusive=false) |
virtual bool | afOpen (const char *path, Mode m=modeWrite) |
virtual bool | afPeek (unsigned char *data, unsigned size) |
AudioCodec * | getCodec (void) |
virtual int | afRead (unsigned char *data, unsigned size) |
Read a given number of bytes from the file, starting from the current file pointer. | |
virtual int | afWrite (unsigned char *data, unsigned size) |
Write a number of bytes into the file at the current file pointer. | |
virtual bool | afSeek (unsigned long pos) |
Seek to the given position relative to the start of the file and set the file pointer. | |
virtual void | afClose (void) |
Close the derived file handling system's file handle. | |
virtual char * | getContinuation (void) |
This function is used to splice multiple audio files together into a single stream of continues audio data. | |
const char * | getErrorStr (Error err) |
Return a human-readable error message given a numeric error code of type Audio::Error. | |
Error | setError (Error err) |
unsigned long | getHeader (void) |
Get number of bytes in the file header. | |
unsigned short | getShort (unsigned char *data) |
Convert binary 2 byte data stored in the order specified in the source description into a short variable. | |
void | setShort (unsigned char *data, unsigned short value) |
Save a short as two byte binary data stored in the endian order specified in the source description. | |
unsigned long | getLong (unsigned char *data) |
Convert binary 4 byte data stored in the order specified in the source description into a long variable. | |
void | setLong (unsigned char *data, unsigned long value) |
Save a long as four byte binary data stored in the endian order specified in the source description. | |
Protected Attributes | |
char * | pathname |
Error | error |
unsigned long | header |
unsigned long | minimum |
unsigned long | length |
union { | |
int fd | |
void * handle | |
} | file |
Mode | mode |
unsigned long | iolimit |
A class used to manipulate audio data.
This class provides file level access to audio data stored in different formats. This class also provides the ability to write audio data into a disk file.
ost::AudioFile::AudioFile | ( | const char * | name, |
unsigned long | offset = 0 |
||
) |
Construct and open an existing audio file for read/write.
name | of file to open. |
offset | to start access. |
ost::AudioFile::AudioFile | ( | const char * | name, |
Info * | info, | ||
unsigned long | minimum = 0 |
||
) |
Create and open a new audio file for writing.
name | of file to create. |
info | source description for new file. |
minimum | file size to accept at close. |
ost::AudioFile::AudioFile | ( | ) | [inline] |
Construct an audio file without attaching to the filesystem.
virtual ost::AudioFile::~AudioFile | ( | ) | [virtual] |
virtual void ost::AudioFile::afClose | ( | void | ) | [protected, virtual] |
Close the derived file handling system's file handle.
virtual bool ost::AudioFile::afCreate | ( | const char * | path, |
bool | exclusive = false |
||
) | [protected, virtual] |
virtual bool ost::AudioFile::afOpen | ( | const char * | path, |
Mode | m = modeWrite |
||
) | [protected, virtual] |
virtual bool ost::AudioFile::afPeek | ( | unsigned char * | data, |
unsigned | size | ||
) | [protected, virtual] |
virtual int ost::AudioFile::afRead | ( | unsigned char * | data, |
unsigned | size | ||
) | [protected, virtual] |
Read a given number of bytes from the file, starting from the current file pointer.
May be overridden by derived classes.
data | A pointer to the buffer to copy the bytes to. |
size | The number of bytes to read. |
virtual bool ost::AudioFile::afSeek | ( | unsigned long | pos | ) | [protected, virtual] |
Seek to the given position relative to the start of the file and set the file pointer.
This does not use 64-bit clean seek functions, so seeking to positions greater than (2^32)-1 will result in undefined behavior.
pos | The position to seek to. |
virtual int ost::AudioFile::afWrite | ( | unsigned char * | data, |
unsigned | size | ||
) | [protected, virtual] |
Write a number of bytes into the file at the current file pointer.
May be overridden by derived classes.
data | A pointer to the buffer with the bytes to write. |
size | The number of bytes to write from the buffer. |
void ost::AudioFile::clear | ( | void | ) |
Clear the AudioFile structure.
Called by AudioFile::close(). Sets all fields to zero and deletes the dynamically allocated memory pointed to by the pathname and info.annotation members. See AudioFile::initialize() for the dynamic allocation code.
void ost::AudioFile::close | ( | void | ) |
Close an object associated with an open file.
This updates the header metadata with the file length if the file length has changed.
Reimplemented in ost::AudioStream.
void ost::AudioFile::create | ( | const char * | name, |
Info * | info, | ||
bool | exclusive = false , |
||
timeout_t | framing = 0 |
||
) |
Create a new audio file and associate it with this object.
Called implicitly by the three-argument version of the constructor.
name | The name of the file to open. |
info | The type of the audio file to be created. |
exclusive | create option. |
framing | time in milliseconds. |
Reimplemented in ost::AudioStream.
unsigned long ost::AudioFile::getAbsolutePosition | ( | void | ) |
Get the current file pointer in bytes relative to the start of the file.
See getPosition() to determine the position relative to the start of the sample buffer.
time_t ost::AudioFile::getAge | ( | void | ) |
Returns age since last prior access.
Used for cache computations.
char* ost::AudioFile::getAnnotation | ( | void | ) | [inline] |
Get annotation extracted from header of containing file.
ssize_t ost::AudioFile::getBuffer | ( | Encoded | buffer, |
size_t | len = 0 |
||
) | [virtual] |
Retrieve bytes from the file into a memory buffer.
This increments the file pointer so subsequent calls read further bytes. If you want to read a number of samples rather than bytes, use getSamples().
buffer | area to copy the samples to. |
len | The number of bytes (not samples) to copy or 0 for frame. |
Implements ost::AudioBase.
Reimplemented in ost::AudioStream.
AudioCodec* ost::AudioFile::getCodec | ( | void | ) | [protected] |
Reimplemented in ost::AudioStream.
virtual char* ost::AudioFile::getContinuation | ( | void | ) | [inline, protected, virtual] |
This function is used to splice multiple audio files together into a single stream of continues audio data.
The continuation method returns the next audio file to open.
Encoding ost::AudioFile::getEncoding | ( | void | ) | [inline] |
Return audio encoding format for this audio file.
Reimplemented from ost::AudioBase.
Error ost::AudioFile::getError | ( | void | ) | [inline] |
Get last error code.
const char* ost::AudioFile::getErrorStr | ( | Error | err | ) | [protected] |
Return a human-readable error message given a numeric error code of type Audio::Error.
err | The numeric error code to translate. |
Format ost::AudioFile::getFormat | ( | void | ) | [inline] |
Return base file format of containing audio file.
unsigned long ost::AudioFile::getHeader | ( | void | ) | [inline, protected] |
Get number of bytes in the file header.
Data packets will begin after this header.
Copy the source description of the audio file into the specified object.
info | pointer to object to copy source description into. |
unsigned ost::AudioFile::getLinear | ( | Linear | buffer, |
unsigned | request = 0 |
||
) |
Retrieve and convert content to linear encoded audio data from it's original form.
buffer | to copy linear data into. |
request | number of linear samples to extract or 0 for frame. |
unsigned long ost::AudioFile::getLong | ( | unsigned char * | data | ) | [protected] |
Convert binary 4 byte data stored in the order specified in the source description into a long variable.
This is often used to manipulate header data.
data | binary 4 byte data pointer. |
void ost::AudioFile::getPosition | ( | char * | timestamp, |
size_t | size | ||
) |
Return the timestamp of the current absolute file position.
timestamp | to save ascii position into. |
size | of timestamp buffer. |
unsigned long ost::AudioFile::getPosition | ( | void | ) |
Get the current file pointer in samples relative to the start of the sample buffer.
Note that you must multiply this result by the result of a call to toBytes(info.encoding, 1) in order to determine the offset in bytes.
unsigned ost::AudioFile::getSampleRate | ( | void | ) | [inline] |
Get audio encoding sample rate, in samples per second, for this audio file.
Reimplemented from ost::AudioBase.
Error ost::AudioFile::getSamples | ( | void * | buffer, |
unsigned | samples = 0 |
||
) |
Retrieve samples from the file into a memory buffer.
This increments the file pointer so subsequent calls read further samples. If a limit has been set using setLimit(), the number of samples read will be truncated to the limit position. If you want to read a certain number of bytes rather than a certain number of samples, use getBuffer().
buffer | pointer to copy the samples to. |
samples | The number of samples to read or 0 for frame. |
unsigned short ost::AudioFile::getShort | ( | unsigned char * | data | ) | [protected] |
Convert binary 2 byte data stored in the order specified in the source description into a short variable.
This is often used to manipulate header data.
data | binary 2 byte data pointer. |
size_t ost::AudioFile::getSize | ( | void | ) | [inline] |
Get maximum size of frame buffer for data use.
void ost::AudioFile::getWaveFormat | ( | int | size | ) | [protected] |
virtual bool ost::AudioFile::hasPositioning | ( | void | ) | [inline, virtual] |
Return true if underlying derived class supports direct access to file positioning.
Derived classes based on URL's or fifo devices may not have this ability.
void ost::AudioFile::initialize | ( | void | ) | [protected] |
virtual bool ost::AudioFile::isOpen | ( | void | ) | [virtual] |
Test if the file is opened.
bool ost::AudioFile::isSigned | ( | void | ) |
Return if the current content is signed or unsigned samples.
void ost::AudioFile::mp3info | ( | mpeg_audio * | mp3 | ) | [protected] |
Open an audio file and associate it with this object.
Called implicitly by the two-argument version of the constructor.
name | of the file to open. Don't forget to double your backslashes for DOS-style pathnames. |
mode | to open file under. |
framing | time in milliseconds. |
Reimplemented in ost::AudioStream.
bool ost::AudioFile::operator! | ( | void | ) | [inline] |
Error ost::AudioFile::position | ( | const char * | timestamp | ) |
Seek a file position by timestamp.
The actual position will be rounded by framing.
timestamp | position to seek. |
ssize_t ost::AudioFile::putBuffer | ( | Encoded | buffer, |
size_t | len = 0 |
||
) | [virtual] |
Insert bytes into the file from a memory buffer.
This increments the file pointer so subsequent calls append further samples. If you want to write a number of samples rather than bytes, use putSamples().
buffer | area to append the samples from. |
len | The number of bytes (not samples) to append. |
Implements ost::AudioBase.
unsigned ost::AudioFile::putLinear | ( | Linear | buffer, |
unsigned | request = 0 |
||
) |
Convert and store content from linear encoded audio data to the format of the audio file.
buffer | to copy linear data from. |
request | Number of linear samples to save or 0 for frame. |
Error ost::AudioFile::putSamples | ( | void * | buffer, |
unsigned | samples = 0 |
||
) |
Insert samples into the file from a memory buffer.
This increments the file pointer so subsequent calls append further samples. If you want to write a certain number of bytes rather than a certain number of samples, use putBuffer().
buffer | pointer to append the samples from. |
samples | The number of samples (not bytes) to append. |
Error ost::AudioFile::setLimit | ( | unsigned long | maximum = 0l | ) |
Set the maximum file position for reading and writing of audio data by samples.
If 0, then no limit is set.
maximum | file i/o access size sample position. |
void ost::AudioFile::setLong | ( | unsigned char * | data, |
unsigned long | value | ||
) | [protected] |
Save a long as four byte binary data stored in the endian order specified in the source description.
This is often used to manipulate header data.
data | binary 4 byte data pointer. |
value | to convert. |
Error ost::AudioFile::setMinimum | ( | unsigned long | minimum | ) |
Set minimum file size for a created file.
If the file is closed with fewer samples than this, it will also be deleted.
minimum | number of samples for new file. |
Error ost::AudioFile::setPosition | ( | unsigned long | samples = ~0l | ) |
Seek a file position by sample count.
If no position specified, then seeks to end of file.
samples | position to seek in file. |
void ost::AudioFile::setShort | ( | unsigned char * | data, |
unsigned short | value | ||
) | [protected] |
Save a short as two byte binary data stored in the endian order specified in the source description.
This is often used to manipulate header data.
data | binary 2 byte data pointer. |
value | to convert. |
Error ost::AudioFile::skip | ( | long | number | ) |
Change the file position by skipping a specified number of audio samples of audio data.
number | of samples to skip. |
Error ost::AudioFile::error [protected] |
union { ... } ost::AudioFile::file [protected] |
void* ost::AudioFile::handle |
unsigned long ost::AudioFile::header [protected] |
unsigned long ost::AudioFile::iolimit [protected] |
unsigned long ost::AudioFile::length [protected] |
unsigned long ost::AudioFile::minimum [protected] |
Mode ost::AudioFile::mode [protected] |
char* ost::AudioFile::pathname [protected] |