/*
* main.h
*
* PWLib application header file for sound test.
*
*
* $Log: audio.h,v $
* Revision 1.2 2005/11/30 12:47:39 csoutheren
* Removed tabs, reformatted some code, and changed tags for Doxygen
*
* Revision 1.1 2005/08/18 22:29:15 dereksmithies
* Add a full duplex sound card test (which was excised from ohphone).
* Add copyright header and cvs log statements.
* Fix startup and closedown segfaults.
* Add safety mechanism so it can never fill up all computer memory.
*
*
*
*
*
*
*
*
*/
#ifndef _AUDIO_MAIN_H
#define _AUDIO_MAIN_H
class Audio : public PProcess
{
PCLASSINFO(Audio, PProcess);
public:
Audio();
void Main();
PString GetTestDeviceName() { return devName; }
static Audio & Current()
{ return (Audio &)PProcess::Current(); }
protected:
PString devName;
};
/////////////////////////////////////////////////////////////////////////////
PDECLARE_LIST(TestAudioDevice, PBYTEArray *)
#if 0 //This makes emacs bracket matching code happy.
{
#endif
public:
virtual ~TestAudioDevice();
void Test();
BOOL DoEndNow();
void WriteAudioFrame(PBYTEArray *data);
PBYTEArray *GetNextAudioFrame();
protected:
PMutex access;
BOOL endNow;
};
class TestAudio : public PThread
{
PCLASSINFO(TestAudio, PThread)
public:
TestAudio(TestAudioDevice &master);
virtual ~TestAudio();
virtual void Terminate() { keepGoing = FALSE; }
void LowerVolume();
void RaiseVolume();
protected:
PString name;
BOOL OpenAudio(enum PSoundChannel::Directions dir);
PINDEX currentVolume;
TestAudioDevice &controller;
PSoundChannel sound;
BOOL keepGoing;
};
class TestAudioRead : public TestAudio
{
PCLASSINFO(TestAudioRead, TestAudio);
public:
TestAudioRead(TestAudioDevice &master);
void Main();
};
class TestAudioWrite : public TestAudio
{
PCLASSINFO(TestAudioWrite, TestAudio);
public:
TestAudioWrite(TestAudioDevice &master);
void Main();
};
#endif // _AUDIO_MAIN_H
syntax highlighted by Code2HTML, v. 0.9.1