Sonic CD shows Sega logo
[picodrive.git] / platform / uiq3 / engine / audio_mediaserver.h
CommitLineData
cc68a136 1/*******************************************************************\r
2 *\r
3 * File: Audio_mediaserver.h\r
4 *\r
5 * Author: Peter van Sebille (peter@yipton.net)\r
6 *\r
7 * Modified/adapted for picodriveN by notaz, 2006\r
8 *\r
9 * (c) Copyright 2006, notaz\r
10 * (c) Copyright 2001, Peter van Sebille\r
11 * All Rights Reserved\r
12 *\r
13 *******************************************************************/\r
14\r
15#ifndef __AUDIO_MEDIASERVER_H\r
16#define __AUDIO_MEDIASERVER_H\r
17\r
18#include <Mda\Common\Audio.h>\r
19#include <MdaAudioOutputStream.h>\r
20\r
21//#include "audio.h"\r
22#include "polledas.h"\r
23\r
24const TInt KSoundBuffers = 4;\r
25\r
26\r
27class TGameAudioEventListener : public MMdaAudioOutputStreamCallback\r
28{\r
29public: // implements MMdaAudioOutputStreamCallback\r
30 void MaoscOpenComplete(TInt aError);\r
31 void MaoscBufferCopied(TInt aError, const TDesC8& );\r
32 void MaoscPlayComplete(TInt aError);\r
33\r
34 TBool iIsOpen;\r
35// TBool iHasCopied;\r
36 TInt iUnderflowed;\r
37 TInt iLastError;\r
38};\r
39\r
40\r
41class CGameAudioMS // : public IGameAudio // IGameAudio MUST be specified first!\r
42{\r
43public: // implements IGameAudio\r
44 TInt16 *NextFrameL(TInt aPcmFrames);\r
45 TInt16 *ResumeL();\r
46 void Pause();\r
47 void ChangeVolume(TInt aUp);\r
48\r
49public:\r
50 ~CGameAudioMS();\r
51 CGameAudioMS(TInt aRate, TBool aStereo, TInt aWritesPerSec);\r
52 static CGameAudioMS* NewL(TInt aRate, TBool aStereo, TInt aWritesPerSec);\r
53\r
54protected:\r
55 void WriteBlockL();\r
56 void UnderflowedL();\r
57 void ConstructL();\r
58\r
59protected:\r
60 void WaitForOpenToCompleteL();\r
61\r
62 TInt iRate;\r
63 TBool iStereo;\r
64\r
65 CMdaAudioOutputStream *iMdaAudioOutputStream;\r
66 TMdaAudioDataSettings iMdaAudioDataSettings;\r
67\r
68 TGameAudioEventListener iListener;\r
69\r
70 CPolledActiveScheduler *iScheduler;\r
71\r
72 HBufC8* iSoundBuffers[KSoundBuffers];\r
73 TInt iWritesPerSec;\r
74 TInt iBufferedFrames;\r
75 TInt16* iCurrentPosition;\r
76 TInt iCurrentBuffer;\r
77 TInt iCurrentBufferSize;\r
78 TInt iFrameCount;\r
79 CMdaServer* iServer;\r
80\r
81 TInt64 iTime;\r
82 TInt iVolume;\r
83};\r
84\r
85#endif /* __AUDIO_MEDIASERVER_H */\r