source: trunk/src/dsound/OS2SNDBUFFER.H@ 3163

Last change on this file since 3163 was 3099, checked in by sandervl, 26 years ago

replaced dsound by new version

File size: 5.7 KB
Line 
1/* $Id: OS2SNDBUFFER.H,v 1.6 2000-03-13 12:47:48 sandervl Exp $ */
2
3/*
4 * DirectSound SoundBuffer class
5 *
6 * Copyright 1998 Sander van Leeuwen (sandervl@xs4all.nl)
7 *
8 * Project Odin Software License can be found in LICENSE.TXT
9 *
10 */
11#ifndef __OS2SNDBUFFER_H__
12#define __OS2SNDBUFFER_H__
13
14#undef THIS
15#define THIS VOID*This
16
17#undef THIS_
18#define THIS_ VOID*This,
19
20// a forward declaration of some classes is needed here!
21class OS2IDirectSoundNotify;
22class OS2IDirectSound3DBuffer;
23
24class OS2IDirectSoundBuffer
25{
26 public:
27 //this one has to go first!
28 IDirectSoundBufferVtbl *lpVtbl;
29 IDirectSoundBufferVtbl Vtbl;
30
31 OS2IDirectSoundBuffer(OS2IDirectSound *DSound, const DSBUFFERDESC *lpDSBufferDesc);
32 OS2IDirectSoundBuffer() {};
33 ~OS2IDirectSoundBuffer();
34
35 static void OS2IDirectSoundBuffer::DestroyAllBuffers(); // called when DSound is closed
36
37 int Referenced;
38 inline HRESULT GetLastError() { return lastError; };
39 inline void SetNotify(OS2IDirectSoundNotify *_notify) {
40 notify = _notify; };
41 inline void Set3DBuffer(OS2IDirectSound3DBuffer *_buffer3D) {
42 buffer3D = _buffer3D; };
43 private:
44
45 protected:
46 HRESULT lastError;
47
48 ULONG writepos, playpos; // DSound write and play cursors
49 ULONG frequency; // DSB frequency - may differ from source sample
50 WAVEFORMATEX *lpfxFormat; // source sample format
51 ULONG status; // DSB status - playing, looping etc.
52 BOOL fLocked; // is buffer currently locked?
53 BOOL fPrimary; // is this a primary buffer?
54 LONG DSvolume; // DSB volume (in dB)
55 LONG volume; // volume (linear)
56 LONG DSpan; // DSB pan (in dB)
57 LONG pan; // pan (linear)
58 BOOL fPlaying,fLoop; // is buffer playing/looping?
59 DSBUFFERDESC bufferdesc; // DSB description
60 LONG frac; // saved mixer position overflow
61
62 char *lpBuffer; // sound data
63
64 OS2IDirectSoundNotify* notify; // pointer to the associated Notify object (if exists)
65 OS2IDirectSound3DBuffer* buffer3D; // pointer to the associated 3DBuffer object (if exists)
66 OS2IDirectSound* parentDS;
67
68 // Linked list management
69 OS2IDirectSoundBuffer* next; // Next OS2IDirectSoundBuffer
70 static OS2IDirectSoundBuffer* dsbroot; // List of OS2IDirectSoundBuffers
71 static OS2IDirectSoundBuffer* primary; // The primary SoundBuffer
72
73 friend HRESULT __stdcall SoundBufQueryInterface(THIS, REFIID riid, LPVOID * ppvObj);
74 friend ULONG __stdcall SoundBufAddRef(THIS);
75 friend ULONG __stdcall SoundBufRelease(THIS);
76 friend HRESULT __stdcall SoundBufGetCaps(THIS_ LPDSBCAPS );
77 friend HRESULT __stdcall SoundBufGetCurrentPosition(THIS_ LPDWORD,LPDWORD ) ;
78 friend HRESULT __stdcall SoundBufGetFormat(THIS_ LPWAVEFORMATEX, DWORD, LPDWORD ) ;
79 friend HRESULT __stdcall SoundBufGetVolume(THIS_ LPLONG ) ;
80 friend HRESULT __stdcall SoundBufGetPan(THIS_ LPLONG ) ;
81 friend HRESULT __stdcall SoundBufGetFrequency(THIS_ LPDWORD ) ;
82 friend HRESULT __stdcall SoundBufGetStatus(THIS_ LPDWORD ) ;
83 friend HRESULT __stdcall SoundBufInitialize(THIS_ LPDIRECTSOUND, LPDSBUFFERDESC ) ;
84 friend HRESULT __stdcall SoundBufLock(THIS_ DWORD,DWORD,LPVOID,LPDWORD,LPVOID,LPDWORD,DWORD ) ;
85 friend HRESULT __stdcall SoundBufPlay(THIS_ DWORD,DWORD,DWORD ) ;
86 friend HRESULT __stdcall SoundBufSetCurrentPosition(THIS_ DWORD ) ;
87 friend HRESULT __stdcall SoundBufSetFormat(THIS_ LPWAVEFORMATEX ) ;
88 friend HRESULT __stdcall SoundBufSetVolume(THIS_ LONG ) ;
89 friend HRESULT __stdcall SoundBufSetPan(THIS_ LONG ) ;
90 friend HRESULT __stdcall SoundBufSetFrequency(THIS_ DWORD ) ;
91 friend HRESULT __stdcall SoundBufStop(THIS ) ;
92 friend HRESULT __stdcall SoundBufUnlock(THIS_ LPVOID,DWORD,LPVOID,DWORD ) ;
93 friend HRESULT __stdcall SoundBufRestore(THIS ) ;
94
95 friend void MixCallback(ULONG cbMix);
96 friend void MixFunc (OS2IDirectSoundBuffer *firstBuf, OS2IDirectSoundBuffer *outBuf, ULONG cbMix);
97 friend void MixOneBuffer(OS2IDirectSoundBuffer *inBuf, int tomix, int outrate);
98};
99//******************************************************************************
100//******************************************************************************
101HRESULT __stdcall SoundBufQueryInterface(THIS, REFIID riid, LPVOID * ppvObj);
102ULONG __stdcall SoundBufAddRef(THIS);
103ULONG __stdcall SoundBufRelease(THIS);
104HRESULT __stdcall SoundBufGetCaps(THIS_ LPDSBCAPS );
105HRESULT __stdcall SoundBufGetCurrentPosition(THIS_ LPDWORD,LPDWORD ) ;
106HRESULT __stdcall SoundBufGetFormat(THIS_ LPWAVEFORMATEX, DWORD, LPDWORD ) ;
107HRESULT __stdcall SoundBufGetVolume(THIS_ LPLONG ) ;
108HRESULT __stdcall SoundBufGetPan(THIS_ LPLONG ) ;
109HRESULT __stdcall SoundBufGetFrequency(THIS_ LPDWORD ) ;
110HRESULT __stdcall SoundBufGetStatus(THIS_ LPDWORD ) ;
111HRESULT __stdcall SoundBufInitialize(THIS_ LPDIRECTSOUND, LPDSBUFFERDESC ) ;
112HRESULT __stdcall SoundBufLock(THIS_ DWORD,DWORD,LPVOID,LPDWORD,LPVOID,LPDWORD,DWORD ) ;
113HRESULT __stdcall SoundBufPlay(THIS_ DWORD,DWORD,DWORD ) ;
114HRESULT __stdcall SoundBufSetCurrentPosition(THIS_ DWORD ) ;
115HRESULT __stdcall SoundBufSetFormat(THIS_ LPWAVEFORMATEX ) ;
116HRESULT __stdcall SoundBufSetVolume(THIS_ LONG ) ;
117HRESULT __stdcall SoundBufSetPan(THIS_ LONG ) ;
118HRESULT __stdcall SoundBufSetFrequency(THIS_ DWORD ) ;
119HRESULT __stdcall SoundBufStop(THIS ) ;
120HRESULT __stdcall SoundBufUnlock(THIS_ LPVOID,DWORD,LPVOID,DWORD ) ;
121HRESULT __stdcall SoundBufRestore(THIS ) ;
122
123#endif
Note: See TracBrowser for help on using the repository browser.