// AudioSample.h: interface for the AudioSample class.
|
//
|
//////////////////////////////////////////////////////////////////////
|
|
#ifndef AFX_AUDIOSAMPLE_H__963A2A54_7AFE_4DE9_BF2A_1E79F911E37B__INCLUDED_
|
#define AFX_AUDIOSAMPLE_H__963A2A54_7AFE_4DE9_BF2A_1E79F911E37B__INCLUDED_
|
|
#include <windows.h> // required by mmsystem.h
|
#include <mmsystem.h> // required for WAVEFORMATEX structure
|
|
#include "WaveFormats.h"
|
#include "TraceUser.h"
|
|
// #define DEBUG_AUDIOSAMPLES
|
|
class AudioSampleManager;
|
class RTPPacket;
|
|
class AudioSample :
|
public TraceUser
|
{
|
friend class AudioSampleManager;
|
public:
|
virtual ~AudioSample();
|
bool operator < (AudioSample &);
|
bool operator >= (AudioSample &);
|
int GetFormat(WAVEFORMATEX *waveFormat);
|
int SetFormat(WAVEFORMATEX &waveFormat);
|
int BufferSize();
|
int DataSize();
|
int SilenceSize();
|
int MinFrameDuration();
|
int MinFrameSize();
|
int SetDataSize(int dataSize);
|
char * Data();
|
int GetDuration();
|
int SetSilenceDuration(int milliseconds);
|
int GetSilenceDuration();
|
RTPPacket* RTPHeader();
|
int SetRTPHeader(RTPPacket *headerPtr);
|
int AddRef(TraceUser *container);
|
int Release(TraceUser *container);
|
protected:
|
virtual int SetTraceLevel();
|
private:
|
int AddRef();
|
int Release();
|
int Initialize(AudioSampleManager *manager, int size);
|
int Uninitialize();
|
AudioSample(AudioSampleManager *audioSampleManager, int size);
|
AudioSample(AudioSampleManager *audioSampleManager);
|
private:
|
WAVEFORMATEX format;
|
int bufferSize;
|
int dataSize;
|
char *data;
|
RTPPacket *rtpHeader;
|
int refCount;
|
int silenceLengthMilliseconds;
|
AudioSampleManager *manager;
|
int minFrameSize; // no. of bytes in the minimum sized frame for this format
|
int minFrameDuration; // duration (in microseconds) of the minimum frame for this format
|
CRITICAL_SECTION sampleMutex;
|
};
|
|
#endif // !defined(AFX_AUDIOSAMPLE_H__963A2A54_7AFE_4DE9_BF2A_1E79F911E37B__INCLUDED_)
|