switch Cyclone to submodule on it's own git repo
[picodrive.git] / platform / uiq2 / audio / motorola / audio_motorola.h
CommitLineData
cc68a136 1/*******************************************************************\r
2 *\r
3 * File: Audio_motorola.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 <cmaudiofb.h>\r
19\r
20#include "audio.h"\r
21#include "polledas.h"\r
22\r
23const TInt KSoundBuffers = 8;\r
24const TInt KMaxUnderflows = 20; // max underflows/API errors we are going allow in a row (to prevent lockups)\r
25\r
26\r
27class TGameAudioEventListener : public MMAudioFBObserver, public MMAudioACObserver\r
28{\r
29public:\r
30 // Implementation of MMAudioFBObserver\r
31 void OnEvent(TMAudioFBCallbackState aState, TInt aError);\r
32 void OnEvent(TMAudioFBCallbackState aState, TInt aError, TDes8* aBuffer);\r
33 // Implementation of MMAudioACObserver\r
34 void OnEvent(TMAudioACCallbackState aState, TInt aError);\r
35\r
36 TBool iIsOpen;\r
37 TBool iIsCtrlOpen;\r
38// TBool iHasCopied;\r
39 TInt iUnderflowed;\r
40 TBool iFatalError;\r
41};\r
42\r
43\r
44class CGameAudioMot : public IGameAudio // IGameAudio MUST be specified first!\r
45{\r
46public: // implements IGameAudio\r
47 TInt16 *NextFrameL();\r
48 TInt16 *DupeFrameL(TInt &aUnderflowed);\r
49 TInt16 *ResumeL();\r
50 void Pause();\r
51 void ChangeVolume(TInt aUp);\r
52\r
53public:\r
54 ~CGameAudioMot();\r
55 CGameAudioMot(TInt aRate, TBool aStereo, TInt aPcmFrames, TInt aBufferedFrames);\r
56 void ConstructL();\r
57 EXPORT_C static CGameAudioMot* NewL(TInt aRate, TBool aStereo, TInt aPcmFrames, TInt aBufferedFrames);\r
58\r
59protected:\r
60 void WriteBlockL();\r
61 void UnderflowedL();\r
62\r
63protected:\r
64 void WaitForOpenToCompleteL();\r
65\r
66 TInt iRate;\r
67 TBool iStereo;\r
68\r
69 CMAudioFB *iAudioOutputStream;\r
70 CMAudioAC *iAudioControl;\r
71 TMAudioFBBufSettings iSettings;\r
72\r
73 TGameAudioEventListener iListener;\r
74\r
75 CPolledActiveScheduler *iScheduler;\r
76\r
77 HBufC8* iSoundBuffers[KSoundBuffers+1];\r
78 TPtr8* iSoundBufferPtrs[KSoundBuffers+1];\r
79\r
80 TInt iBufferedFrames;\r
81 TInt16* iCurrentPosition;\r
82 TInt iCurrentBuffer;\r
83 TInt iFrameCount;\r
84 TInt iPcmFrames;\r
85\r
86 TBool iDecoding;\r
87\r
88 //TInt64 iTime; // removed because can't test\r
89};\r
90\r
91#endif /* __AUDIO_MEDIASERVER_H */\r