#include <pwavfile.h>
Inheritance diagram for PWAVFile:
Construction | |
enum | { fmt_PCM = 1, fmt_MSADPCM = 2, fmt_ALaw = 6, fmt_uLaw = 7, fmt_VOXADPCM = 0x10, fmt_IMAADPCM = 0x11, fmt_GSM = 0x31, fmt_G728 = 0x41, fmt_G723 = 0x42, fmt_MSG7231 = 0x42, fmt_G726 = 0x64, fmt_G722 = 0x65, fmt_G729 = 0x83, fmt_VivoG7231 = 0x111, PCM_WavFile = fmt_PCM, G7231_WavFile = fmt_VivoG7231, fmt_NotKnown = 0x10000 } |
PWAVFile (unsigned format=fmt_PCM) | |
PWAVFile (OpenMode mode, int opts=ModeDefault, unsigned format=fmt_PCM) | |
PWAVFile (const PFilePath &name, OpenMode mode=ReadWrite, int opts=ModeDefault, unsigned format=fmt_PCM) | |
PWAVFile (const PString &format, const PFilePath &name, OpenMode mode=PFile::ReadWrite, int opts=PFile::ModeDefault) | |
~PWAVFile () | |
static PWAVFile * | format (const PString &format) |
static PWAVFile * | format (const PString &format, PFile::OpenMode mode, int opts=PFile::ModeDefault) |
Public Member Functions | |
BOOL | RawRead (void *buf, PINDEX len) |
BOOL | RawWrite (const void *buf, PINDEX len) |
BOOL | FileRead (void *buf, PINDEX len) |
BOOL | FileWrite (const void *buf, PINDEX len) |
off_t | RawGetPosition () const |
BOOL | RawSetPosition (off_t pos, FilePositionOrigin origin) |
off_t | RawGetDataLength () |
void | SetLastReadCount (PINDEX v) |
Overrides from class PFile | |
virtual BOOL | Read (void *buf, PINDEX len) |
virtual BOOL | Write (const void *buf, PINDEX len) |
virtual BOOL | Open (OpenMode mode=ReadWrite, int opts=ModeDefault) |
virtual BOOL | Open (const PFilePath &name, OpenMode mode=ReadWrite, int opts=ModeDefault) |
virtual BOOL | Close () |
virtual BOOL | SetPosition (off_t pos, FilePositionOrigin origin=Start) |
virtual off_t | GetPosition () const |
Member variable access | |
virtual BOOL | SetFormat (unsigned fmt) |
virtual BOOL | SetFormat (const PString &format) |
virtual unsigned | GetFormat () const |
virtual PString | GetFormatAsString () const |
virtual unsigned | GetChannels () const |
virtual void | SetChannels (unsigned v) |
virtual unsigned | GetSampleRate () const |
virtual void | SetSampleRate (unsigned v) |
virtual unsigned | GetSampleSize () const |
virtual void | SetSampleSize (unsigned v) |
virtual unsigned | GetBytesPerSecond () const |
virtual void | SetBytesPerSecond (unsigned v) |
off_t | GetHeaderLength () const |
virtual off_t | GetDataLength () |
BOOL | IsValid () const |
PString | GetFormatString () const |
void | SetAutoconvert () |
Public Attributes | |
PWAV::FMTChunk | wavFmtChunk |
PBYTEArray | extendedHeader |
Protected Member Functions | |
void | Construct () |
void | SelectFormat (unsigned fmt) |
void | SelectFormat (const PString &format) |
BOOL | ProcessHeader () |
BOOL | GenerateHeader () |
BOOL | UpdateHeader () |
Protected Attributes | |
PBYTEArray | wavHeaderData |
BOOL | isValidWAV |
unsigned int | origFmt |
PWAVFileFormat * | formatHandler |
BOOL | autoConvert |
PWAVFileConverter * | autoConverter |
off_t | lenHeader |
off_t | lenData |
BOOL | header_needs_updating |
Friends | |
class | PWAVFileConverter |
anonymous enum |
When a file is opened for writing, we can specify if this is a PCM wav file or a G.723.1 wav file.
PWAVFile::PWAVFile | ( | unsigned | format = fmt_PCM |
) |
Create a WAV file object but do not open it. It does not initially have a valid file name. However, an attempt to open the file using the PFile::Open()# function will generate a unique temporary file.
If a WAV file is being created, the type parameter can be used to create a PCM Wave file or a G.723.1 Wave file by using WaveType enum#
format | Type of WAV File to create |
PWAVFile::PWAVFile | ( | OpenMode | mode, | |
int | opts = ModeDefault , |
|||
unsigned | format = fmt_PCM | |||
) |
Create a unique temporary file name, and open the file in the specified mode and using the specified options. Note that opening a new, unique, temporary file name in ReadOnly mode will always fail. This would only be usefull in a mode and options that will create the file.
If a WAV file is being created, the type parameter can be used to create a PCM Wave file or a G.723.1 Wave file by using WaveType enum#
The PChannel::IsOpen()# function may be used after object construction to determine if the file was successfully opened.
mode | Mode in which to open the file. |
opts | OpenOptions enum# for open operation. |
format | Type of WAV File to create |
PWAVFile::PWAVFile | ( | const PFilePath & | name, | |
OpenMode | mode = ReadWrite , |
|||
int | opts = ModeDefault , |
|||
unsigned | format = fmt_PCM | |||
) |
Create a WAV file object with the specified name and open it in the specified mode and with the specified options. If a WAV file is being created, the type parameter can be used to create a PCM Wave file or a G.723.1 Wave file by using WaveType enum#
The PChannel::IsOpen()# function may be used after object construction to determine if the file was successfully opened.
name | Name of file to open. |
mode | Mode in which to open the file. |
opts | OpenOptions enum# for open operation. |
format | Type of WAV File to create |
PWAVFile::PWAVFile | ( | const PString & | format, | |
const PFilePath & | name, | |||
OpenMode | mode = PFile::ReadWrite , |
|||
int | opts = PFile::ModeDefault | |||
) |
format | Type of WAV File to create |
name | Name of file to open. |
mode | Mode in which to open the file. |
opts | OpenOptions enum# for open operation. |
PWAVFile::~PWAVFile | ( | ) |
Close the file before destruction.
format | Type of WAV File to create |
static PWAVFile* PWAVFile::format | ( | const PString & | format, | |
PFile::OpenMode | mode, | |||
int | opts = PFile::ModeDefault | |||
) | [static] |
format | Type of WAV File to create |
mode | Mode in which to open the file. |
opts | OpenOptions enum# for open operation. |
virtual BOOL PWAVFile::Read | ( | void * | buf, | |
PINDEX | len | |||
) | [virtual] |
Call PFile::Read() to read in audio data and perform necessary processing such as byte-order swaping.
buf | Pointer to a block of memory to receive the read bytes. |
len | Maximum number of bytes to read into the buffer. |
Reimplemented from PFile.
virtual BOOL PWAVFile::Write | ( | const void * | buf, | |
PINDEX | len | |||
) | [virtual] |
Call PFile::Write() to write out audio data and perform necessary processing such as byte-order swaping.
buf | Pointer to a block of memory to receive the write bytes. |
len | Maximum number of bytes to write to the channel. |
Reimplemented from PFile.
virtual BOOL PWAVFile::Open | ( | OpenMode | mode = ReadWrite , |
|
int | opts = ModeDefault | |||
) | [virtual] |
Open the current file in the specified mode and with the specified options. If the file object already has an open file then it is closed.
If there has not been a filename attached to the file object (via SetFilePath()#, the name# parameter or a previous open) then a new unique temporary filename is generated.
mode | Mode in which to open the file. |
opts | Options for open operation. |
Reimplemented from PFile.
virtual BOOL PWAVFile::Open | ( | const PFilePath & | name, | |
OpenMode | mode = ReadWrite , |
|||
int | opts = ModeDefault | |||
) | [virtual] |
Open the specified WAV file name in the specified mode and with the specified options. If the file object already has an open file then it is closed. This reads (and validates) the header for existing files. For new files, it creates a new file (and header) using the type of WAV file specified in the class constructor.
Note: if mode# is StandardInput, StandardOutput or StandardError, then the name# parameter is ignored.
name | Name of file to open. |
mode | Mode in which to open the file. |
opts | OpenOptions enum# for open operation. |
Reimplemented from PFile.
virtual BOOL PWAVFile::Close | ( | ) | [virtual] |
Close the file channel. If a WAV file has been written to, this will update the header to contain the correct size information.
Reimplemented from PFile.
virtual BOOL PWAVFile::SetPosition | ( | off_t | pos, | |
FilePositionOrigin | origin = Start | |||
) | [virtual] |
Set the current active position in the file for the next read or write operation. The pos# variable is a signed number which is added to the specified origin. For origin == PFile::Start# only positive values for pos# are meaningful. For origin == PFile::End# only negative values for pos# are meaningful.
Note that for a WAV file, the origin of the file is right after the header. That is, the WAV header is not included when perform SetPosition().
pos | New position to set. |
origin | Origin for position change. |
Reimplemented from PFile.
virtual off_t PWAVFile::GetPosition | ( | ) | const [virtual] |
Get the current active position in the file for the next read or write operation. The WAV header is excluded from calculation the position.
Reimplemented from PFile.
virtual BOOL PWAVFile::SetFormat | ( | unsigned | fmt | ) | [virtual] |
Find out the format of the WAV file. Eg 0x01 for PCM, 0x42 or 0x111 for G.723.1.
virtual BOOL PWAVFile::SetFormat | ( | const PString & | format | ) | [virtual] |
virtual unsigned PWAVFile::GetFormat | ( | ) | const [virtual] |
Find out the format of the WAV file. Eg 0x01 for PCM, 0x42 or 0x111 for G.723.1.
virtual PString PWAVFile::GetFormatAsString | ( | ) | const [virtual] |
virtual unsigned PWAVFile::GetChannels | ( | ) | const [virtual] |
Find out the number of channels the WAV file has. Typically this is 1 for mono and 2 for stereo.
virtual void PWAVFile::SetChannels | ( | unsigned | v | ) | [virtual] |
virtual unsigned PWAVFile::GetSampleRate | ( | ) | const [virtual] |
Find out the sample rate of the WAV file in Hz.
virtual void PWAVFile::SetSampleRate | ( | unsigned | v | ) | [virtual] |
virtual unsigned PWAVFile::GetSampleSize | ( | ) | const [virtual] |
Find out how may bits there are per sample, eg 8 or 16.
virtual void PWAVFile::SetSampleSize | ( | unsigned | v | ) | [virtual] |
virtual unsigned PWAVFile::GetBytesPerSecond | ( | ) | const [virtual] |
Find out how may bytes there are per second
virtual void PWAVFile::SetBytesPerSecond | ( | unsigned | v | ) | [virtual] |
off_t PWAVFile::GetHeaderLength | ( | ) | const |
Find out the size of WAV header presented in the file.
virtual off_t PWAVFile::GetDataLength | ( | ) | [virtual] |
Find out how many bytes of audio data there are.
BOOL PWAVFile::IsValid | ( | ) | const [inline] |
Determine if the WAV file is a valid wave file.
PString PWAVFile::GetFormatString | ( | ) | const [inline] |
Return a string that describes the WAV format
void PWAVFile::SetAutoconvert | ( | ) |
enable autoconversion between PCM-16 and the native format
BOOL PWAVFile::RawRead | ( | void * | buf, | |
PINDEX | len | |||
) |
BOOL PWAVFile::RawWrite | ( | const void * | buf, | |
PINDEX | len | |||
) |
BOOL PWAVFile::FileRead | ( | void * | buf, | |
PINDEX | len | |||
) |
BOOL PWAVFile::FileWrite | ( | const void * | buf, | |
PINDEX | len | |||
) |
off_t PWAVFile::RawGetPosition | ( | ) | const |
BOOL PWAVFile::RawSetPosition | ( | off_t | pos, | |
FilePositionOrigin | origin | |||
) |
off_t PWAVFile::RawGetDataLength | ( | ) |
void PWAVFile::SetLastReadCount | ( | PINDEX | v | ) | [inline] |
void PWAVFile::Construct | ( | ) | [protected] |
Reimplemented from PChannel.
void PWAVFile::SelectFormat | ( | unsigned | fmt | ) | [protected] |
void PWAVFile::SelectFormat | ( | const PString & | format | ) | [protected] |
BOOL PWAVFile::ProcessHeader | ( | ) | [protected] |
BOOL PWAVFile::GenerateHeader | ( | ) | [protected] |
BOOL PWAVFile::UpdateHeader | ( | ) | [protected] |
friend class PWAVFileConverter [friend] |
PBYTEArray PWAVFile::wavHeaderData [protected] |
BOOL PWAVFile::isValidWAV [protected] |
unsigned int PWAVFile::origFmt [protected] |
PWAVFileFormat* PWAVFile::formatHandler [protected] |
BOOL PWAVFile::autoConvert [protected] |
PWAVFileConverter* PWAVFile::autoConverter [protected] |
off_t PWAVFile::lenHeader [protected] |
off_t PWAVFile::lenData [protected] |
BOOL PWAVFile::header_needs_updating [protected] |