source: branches/gcc-kmk/src/dsound/os2sndbuffer.h@ 21692

Last change on this file since 21692 was 21692, checked in by dmik, 14 years ago

Normalize file case.

Change all uppercase filenames and extensions to lowercase (except well known cases like LICENSE.TXT and so on).

File size: 6.1 KB
Line 
1/* $Id: OS2SNDBUFFER.H,v 1.8 2001-03-10 06:21:06 mike 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// simple structure to handle duplicated buffers - the first DWORD of
21// a sound buffer contains the buffer's usage count (to prevent freeing
22// of buffers still in use)
23typedef struct _SOUNDBUF {
24 DWORD dwReferences;
25 char pData[1];
26} SOUNDBUF;
27
28// a forward declaration of some classes is needed here!
29class OS2IDirectSoundNotify;
30class OS2IDirectSound3DBuffer;
31class OS2IDirectSound;
32
33class OS2IDirectSoundBuffer
34{
35 public:
36 //this one has to go first!
37 IDirectSoundBufferVtbl *lpVtbl;
38 IDirectSoundBufferVtbl Vtbl;
39
40 OS2IDirectSoundBuffer(OS2IDirectSound *DSound, const DSBUFFERDESC *lpDSBufferDesc);
41 OS2IDirectSoundBuffer(OS2IDirectSound *DSound, OS2IDirectSoundBuffer *srcBuf);
42 OS2IDirectSoundBuffer() {};
43 ~OS2IDirectSoundBuffer();
44
45 static void OS2IDirectSoundBuffer::DestroyAllBuffers(); // called when DSound is closed
46
47 int Referenced;
48 inline HRESULT GetLastError() { return lastError; };
49 inline void SetNotify(OS2IDirectSoundNotify *_notify) {
50 notify = _notify; };
51 inline void Set3DBuffer(OS2IDirectSound3DBuffer *_buffer3D) {
52 buffer3D = _buffer3D; };
53 private:
54
55 protected:
56 HRESULT lastError;
57
58 ULONG writepos, playpos; // DSound write and play cursors
59 ULONG frequency; // DSB frequency - may differ from source sample
60 WAVEFORMATEX *lpfxFormat; // source sample format
61 ULONG status; // DSB status - playing, looping etc.
62 BOOL fLocked; // is buffer currently locked?
63 BOOL fPrimary; // is this a primary buffer?
64 LONG DSvolume; // DSB volume (in dB)
65 LONG volume; // volume (linear)
66 LONG DSpan; // DSB pan (in dB)
67 LONG pan; // pan (linear)
68 BOOL fPlaying,fLoop; // is buffer playing/looping?
69 DSBUFFERDESC bufferdesc; // DSB description
70 LONG frac; // saved mixer position overflow
71
72 SOUNDBUF *lpSndBuffer; // sound data + reference count
73 char *lpBuffer; // actual sound data
74
75 OS2IDirectSoundNotify* notify; // pointer to the associated Notify object (if exists)
76 OS2IDirectSound3DBuffer* buffer3D; // pointer to the associated 3DBuffer object (if exists)
77 OS2IDirectSound* parentDS;
78
79 // Linked list management
80 OS2IDirectSoundBuffer* next; // Next OS2IDirectSoundBuffer
81 static OS2IDirectSoundBuffer* dsbroot; // List of OS2IDirectSoundBuffers
82 static OS2IDirectSoundBuffer* primary; // The primary SoundBuffer
83
84 friend HRESULT __stdcall SoundBufQueryInterface(THIS, REFIID riid, LPVOID * ppvObj);
85 friend ULONG __stdcall SoundBufAddRef(THIS);
86 friend ULONG __stdcall SoundBufRelease(THIS);
87 friend HRESULT __stdcall SoundBufGetCaps(THIS_ LPDSBCAPS );
88 friend HRESULT __stdcall SoundBufGetCurrentPosition(THIS_ LPDWORD,LPDWORD ) ;
89 friend HRESULT __stdcall SoundBufGetFormat(THIS_ LPWAVEFORMATEX, DWORD, LPDWORD ) ;
90 friend HRESULT __stdcall SoundBufGetVolume(THIS_ LPLONG ) ;
91 friend HRESULT __stdcall SoundBufGetPan(THIS_ LPLONG ) ;
92 friend HRESULT __stdcall SoundBufGetFrequency(THIS_ LPDWORD ) ;
93 friend HRESULT __stdcall SoundBufGetStatus(THIS_ LPDWORD ) ;
94 friend HRESULT __stdcall SoundBufInitialize(THIS_ LPDIRECTSOUND, LPDSBUFFERDESC ) ;
95 friend HRESULT __stdcall SoundBufLock(THIS_ DWORD,DWORD,LPVOID,LPDWORD,LPVOID,LPDWORD,DWORD ) ;
96 friend HRESULT __stdcall SoundBufPlay(THIS_ DWORD,DWORD,DWORD ) ;
97 friend HRESULT __stdcall SoundBufSetCurrentPosition(THIS_ DWORD ) ;
98 friend HRESULT __stdcall SoundBufSetFormat(THIS_ LPWAVEFORMATEX ) ;
99 friend HRESULT __stdcall SoundBufSetVolume(THIS_ LONG ) ;
100 friend HRESULT __stdcall SoundBufSetPan(THIS_ LONG ) ;
101 friend HRESULT __stdcall SoundBufSetFrequency(THIS_ DWORD ) ;
102 friend HRESULT __stdcall SoundBufStop(THIS ) ;
103 friend HRESULT __stdcall SoundBufUnlock(THIS_ LPVOID,DWORD,LPVOID,DWORD ) ;
104 friend HRESULT __stdcall SoundBufRestore(THIS ) ;
105
106 friend void MixCallback(ULONG cbMix);
107 friend void MixFunc (OS2IDirectSoundBuffer *firstBuf, OS2IDirectSoundBuffer *outBuf, ULONG cbMix);
108 friend void MixOneBuffer(OS2IDirectSoundBuffer *inBuf, int tomix, int outrate);
109};
110//******************************************************************************
111//******************************************************************************
112HRESULT __stdcall SoundBufQueryInterface(THIS, REFIID riid, LPVOID * ppvObj);
113ULONG __stdcall SoundBufAddRef(THIS);
114ULONG __stdcall SoundBufRelease(THIS);
115HRESULT __stdcall SoundBufGetCaps(THIS_ LPDSBCAPS );
116HRESULT __stdcall SoundBufGetCurrentPosition(THIS_ LPDWORD,LPDWORD ) ;
117HRESULT __stdcall SoundBufGetFormat(THIS_ LPWAVEFORMATEX, DWORD, LPDWORD ) ;
118HRESULT __stdcall SoundBufGetVolume(THIS_ LPLONG ) ;
119HRESULT __stdcall SoundBufGetPan(THIS_ LPLONG ) ;
120HRESULT __stdcall SoundBufGetFrequency(THIS_ LPDWORD ) ;
121HRESULT __stdcall SoundBufGetStatus(THIS_ LPDWORD ) ;
122HRESULT __stdcall SoundBufInitialize(THIS_ LPDIRECTSOUND, LPDSBUFFERDESC ) ;
123HRESULT __stdcall SoundBufLock(THIS_ DWORD,DWORD,LPVOID,LPDWORD,LPVOID,LPDWORD,DWORD ) ;
124HRESULT __stdcall SoundBufPlay(THIS_ DWORD,DWORD,DWORD ) ;
125HRESULT __stdcall SoundBufSetCurrentPosition(THIS_ DWORD ) ;
126HRESULT __stdcall SoundBufSetFormat(THIS_ LPWAVEFORMATEX ) ;
127HRESULT __stdcall SoundBufSetVolume(THIS_ LONG ) ;
128HRESULT __stdcall SoundBufSetPan(THIS_ LONG ) ;
129HRESULT __stdcall SoundBufSetFrequency(THIS_ DWORD ) ;
130HRESULT __stdcall SoundBufStop(THIS ) ;
131HRESULT __stdcall SoundBufUnlock(THIS_ LPVOID,DWORD,LPVOID,DWORD ) ;
132HRESULT __stdcall SoundBufRestore(THIS ) ;
133
134#endif
Note: See TracBrowser for help on using the repository browser.