35 #ifndef PTLIB_PWAVFILE_H 36 #define PTLIB_PWAVFILE_H 50 #define P_PACKED __attribute__ ((packed)); 96 virtual unsigned GetFormat()
const = 0;
100 virtual PString GetFormatString()
const = 0;
104 virtual PString GetDescription()
const = 0;
107 virtual bool CanSetChannels(
unsigned channels)
const = 0;
159 virtual unsigned GetFormat (
const PWAVFile & file)
const = 0;
160 virtual off_t GetPosition (
const PWAVFile & file)
const = 0;
162 virtual unsigned GetSampleSize(
const PWAVFile & file)
const = 0;
163 virtual off_t GetDataLength (
PWAVFile & file) = 0;
196 fmt_VivoG7231 = 0x111,
199 PCM_WavFile = fmt_PCM,
200 G7231_WavFile = fmt_VivoG7231,
203 fmt_NotKnown = 0x10000
216 unsigned format = fmt_PCM
233 int opts = ModeDefault,
234 unsigned format = fmt_PCM
249 int opts = ModeDefault,
250 unsigned format = fmt_PCM
305 int opts = ModeDefault
324 int opts = ModeDefault
360 virtual off_t GetPosition()
const;
367 virtual PBoolean SetFormat(
unsigned fmt);
372 virtual unsigned GetFormat()
const;
373 virtual PString GetFormatAsString()
const;
378 virtual unsigned GetChannels()
const;
379 virtual void SetChannels(
unsigned v);
383 virtual unsigned GetSampleRate()
const;
384 virtual void SetSampleRate(
unsigned v);
388 virtual unsigned GetSampleSize()
const;
389 virtual void SetSampleSize(
unsigned v);
393 virtual unsigned GetBytesPerSecond()
const;
394 virtual void SetBytesPerSecond(
unsigned v);
398 off_t GetHeaderLength()
const;
402 virtual off_t GetDataLength();
415 {
if (formatHandler == NULL)
return PString(
"N/A");
else return formatHandler->GetFormatString(); }
419 void SetAutoconvert();
423 PBoolean RawRead(
void * buf, PINDEX len);
424 PBoolean RawWrite(
const void * buf, PINDEX len);
426 PBoolean FileRead(
void * buf, PINDEX len);
427 PBoolean FileWrite(
const void * buf, PINDEX len);
429 off_t RawGetPosition()
const;
431 off_t RawGetDataLength();
443 bool SelectFormat(
unsigned fmt);
444 bool SelectFormat(
const PString & format);
470 #endif // PTLIB_PWAVFILE_H This class represents a disk file.
Definition: file.h:60
PBYTEArray wavHeaderData
Definition: pwavfile.h:450
#define PCLASSINFO(cls, par)
Declare all the standard PTLib class information.
Definition: object.h:1049
void SetLastReadCount(PINDEX v)
Definition: pwavfile.h:433
virtual ~PWAVFileConverter()
Definition: pwavfile.h:158
A class representing a WAV audio file.
Definition: pwavfile.h:172
PBoolean IsValid() const
Determine if the WAV file is a valid wave file.
Definition: pwavfile.h:410
PWAVFileConverter * autoConverter
Definition: pwavfile.h:460
This class describes a full description for a file on the particular platform.
Definition: filepath.h:65
File can be both read and written.
Definition: file.h:80
PWAV::FMTChunk wavFmtChunk
Definition: pwavfile.h:451
PBYTEArray extendedHeader
Definition: pwavfile.h:452
PWAVFileFormat * formatHandler
Definition: pwavfile.h:457
off_t lenHeader
Definition: pwavfile.h:462
PUInt16l bitsPerSample P_PACKED
Bits Per Sample, eg 16.
Definition: pwavfile.h:76
PUInt16l bytesPerSample P_PACKED
Bytes Per Sample, eg 2.
Definition: pwavfile.h:75
PUInt32l sampleRate P_PACKED
Sample Rate in Hz.
Definition: pwavfile.h:73
PFactory< PWAVFileFormat, PCaselessString > PWAVFileFormatByFormatFactory
Definition: pwavfile.h:147
BOOL PBoolean
Definition: object.h:102
Array of unsigned characters.
Definition: array.h:670
PFACTORY_LOAD(PWAVFileFormatPCM)
bool isValidWAV
Definition: pwavfile.h:454
off_t lenData
Definition: pwavfile.h:463
ChunkHeader hdr
chunk header (already packed)
Definition: pwavfile.h:70
bool header_needs_updating
Definition: pwavfile.h:465
PFactory< PWAVFileFormat, unsigned > PWAVFileFormatByIDFactory
Definition: pwavfile.h:148
FilePositionOrigin
Options for the origin in setting the file position.
Definition: file.h:457
PUInt32l bytesPerSec P_PACKED
Average bytes Per Second.
Definition: pwavfile.h:74
PUInt16l numChannels P_PACKED
Channels 0x01 = mono, 0x02 = stereo.
Definition: pwavfile.h:72
void SetLastWriteCount(PINDEX v)
Definition: pwavfile.h:434
The character string class.
Definition: pstring.h:108
File options depend on the OpenMode parameter.
Definition: file.h:95
Definition: pwavfile.h:47
Template class for generic factories of an abstract class.
Definition: pfactory.h:144
PBoolean autoConvert
Definition: pwavfile.h:459
PString GetFormatString() const
Return a string that describes the WAV format.
Definition: pwavfile.h:414
PFactory< PWAVFileConverter, unsigned > PWAVFileConverterFactory
Definition: pwavfile.h:168
unsigned int origFmt
Definition: pwavfile.h:456
Abstract factory class for autoconversion of WAV files to/from PCM-16.
Definition: pwavfile.h:155
PUInt16l format P_PACKED
Format.
Definition: pwavfile.h:71
WaveType
When a file is opened for writing, we can specify if this is a PCM wav file or a G.723.1 wav file.
Definition: pwavfile.h:182
Definition: pwavfile.h:68
OpenMode
When a file is opened, it may restrict the access available to operations on the object instance...
Definition: file.h:77