Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

PWAVFile Class Reference

#include <pwavfile.h>

Inheritance diagram for PWAVFile:

PFile PChannel PObject List of all members.

Construction

enum  {
  fmt_PCM = 1, fmt_ALaw = 6, fmt_uLaw = 7, fmt_GSM = 0x31,
  fmt_G728 = 0x41, fmt_G723 = 0x42, fmt_MSG7231 = 0x42, fmt_G726 = 0x64,
  fmt_G722 = 0x65, fmt_G729 = 0x84, fmt_VivoG7231 = 0x111, PCM_WavFile = fmt_PCM,
  G7231_WavFile = fmt_VivoG7231
}
 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 ()

Public Types


Public Member Functions

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 unsigned GetFormat () const
virtual unsigned GetChannels () const
virtual unsigned GetSampleRate () const
virtual unsigned GetSampleSize () const
off_t GetHeaderLength () const
virtual off_t GetDataLength ()
BOOL IsValid () const

Protected Member Functions

BOOL ProcessHeader ()
BOOL GenerateHeader ()
BOOL UpdateHeader ()

Protected Attributes

BOOL isValidWAV
unsigned format
unsigned numChannels
unsigned sampleRate
unsigned bitsPerSample
off_t lenHeader
off_t lenData
BOOL header_needs_updating

Detailed Description

A class representing a WAV audio file.


Member Enumeration Documentation

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.

Enumeration values:
fmt_PCM 
fmt_ALaw  PCM, 8kHz, 16 bit, mono.
fmt_uLaw  A-Law 8kHz.
fmt_GSM  u-Law 8kHz
fmt_G728  GSM.
fmt_G723  RFC2361.
fmt_MSG7231  RFC2361.
fmt_G726  Microsoft G.723.1.
fmt_G722  RFC2361.
fmt_G729  RFC2361.
fmt_VivoG7231  RFC2361.
PCM_WavFile  VivoActive G.723.1.
G7231_WavFile 


Constructor & Destructor Documentation

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#

Parameters:
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.

Parameters:
opts  Mode in which to open the file.
format  OpenOptions enum# for open operation. 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.

Parameters:
mode  Name of file to open.
opts  Mode in which to open the file.
format  OpenOptions enum# for open operation. Type of WAV File to create

PWAVFile::~PWAVFile  )  [inline]
 

Close the file before destruction.


Member Function Documentation

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.

Returns:
TRUE if close was OK.

Reimplemented from PFile.

BOOL PWAVFile::GenerateHeader  )  [protected]
 

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 off_t PWAVFile::GetDataLength  )  [virtual]
 

Find out how many bytes of audio data there are.

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.

off_t PWAVFile::GetHeaderLength  )  const
 

Find out the size of WAV header presented in the file.

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.

Returns:
current file position relative to the end of the WAV header.

Reimplemented from PFile.

virtual unsigned PWAVFile::GetSampleRate  )  const [virtual]
 

Find out the sample rate of the WAV file in Hz.

virtual unsigned PWAVFile::GetSampleSize  )  const [virtual]
 

Find out how may bits there are per sample, eg 8 or 16.

BOOL PWAVFile::IsValid  )  const [inline]
 

Determine if the WAV file is a valid wave file.

Returns:
TRUE indicates that the WAV file is valid FALSE indicates that the WAV file is invalid

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.

Returns:
TRUE if the file was successfully opened.

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.

Returns:
TRUE if the file was successfully opened.

Reimplemented from PFile.

BOOL PWAVFile::ProcessHeader  )  [protected]
 

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.

Returns:
TRUE indicates that at least one character was read from the channel. FALSE means no bytes were read due to timeout or some other I/O error.
Parameters:
len  Pointer to a block of memory to receive the read bytes. Maximum number of bytes to read into the buffer.

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::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().

Returns:
TRUE if the new file position was set.
Parameters:
origin  New position to set. Origin for position change.

Reimplemented from PFile.

BOOL PWAVFile::UpdateHeader  )  [protected]
 

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.

Returns:
TRUE indicates that at least one character was written to the channel. FALSE means no bytes were written due to timeout or some other I/O error.
Parameters:
len  Pointer to a block of memory to receive the write bytes. Maximum number of bytes to write to the channel.

Reimplemented from PFile.


Member Data Documentation

unsigned PWAVFile::bitsPerSample [protected]
 

unsigned PWAVFile::format [protected]
 

BOOL PWAVFile::header_needs_updating [protected]
 

BOOL PWAVFile::isValidWAV [protected]
 

off_t PWAVFile::lenData [protected]
 

off_t PWAVFile::lenHeader [protected]
 

unsigned PWAVFile::numChannels [protected]
 

unsigned PWAVFile::sampleRate [protected]
 


The documentation for this class was generated from the following file:
Generated on Sat Jul 24 15:36:00 2004 for PWLib by doxygen 1.3.7