// 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 // required by mmsystem.h #include // 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_)