source: trunk/src/winmm/dwaveout.h@ 4

Last change on this file since 4 was 4, checked in by ktk, 26 years ago

Import

File size: 2.5 KB
Line 
1/* $Id: dwaveout.h,v 1.1 1999-05-24 20:20:06 ktk Exp $ */
2
3/*
4 * Wave playback class
5 *
6 * Copyright 1998 Sander van Leeuwen (sandervl@xs4all.nl)
7 *
8 *
9 * Project Odin Software License can be found in LICENSE.TXT
10 *
11 */
12#ifndef __DWAVEOUT_H__
13#define __DWAVEOUT_H__
14
15#define STATE_STOPPED 0
16#define STATE_PLAYING 1
17#define STATE_PAUSED 2
18
19#define PREFILLBUF_DART 4
20#define DART_BUFSIZE 4096
21
22#ifdef OS2_ONLY
23#include "winmmtype.h"
24#endif
25#include "vmutex.h"
26
27#ifdef _OS2WIN_H
28#define MCI_MIX_BUFFER DWORD
29#define PMCI_MIX_BUFFER MCI_MIX_BUFFER *
30#define MCI_MIXSETUP_PARMS DWORD
31#define MCI_BUFFER_PARMS DWORD
32#define MCI_PLAY_PARMS DWORD
33#endif
34
35class DartWaveOut
36{
37public:
38 DartWaveOut(LPWAVEFORMATEX pwfx, ULONG nCallback, ULONG dwInstance);
39 DartWaveOut(LPWAVEFORMATEX pwfx, HWND hwndCallback);
40 DartWaveOut(LPWAVEFORMATEX pwfx);
41 ~DartWaveOut();
42
43 MMRESULT getError();
44 MMRESULT write(LPWAVEHDR pwh, UINT cbwh);
45 MMRESULT pause();
46 MMRESULT restart();
47 int getState() { return State; };
48 MMRESULT reset();
49
50 static BOOL queryFormat(ULONG formatTag, ULONG nChannels,
51 ULONG nSamplesPerSec, ULONG sampleSize);
52
53 static BOOL find(DartWaveOut *dwave);
54
55protected:
56 static void mciError(ULONG ulError);
57 void Init(LPWAVEFORMATEX pwfx);
58 void handler(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer, ULONG ulFlags);
59
60private:
61 USHORT DeviceId;
62 ULONG ulBufferCount; /* Current file buffer */
63 ULONG ulBufSize;
64
65 ULONG ulError, State;
66
67 MCI_MIX_BUFFER *MixBuffer; /* Device buffers */
68 MCI_MIXSETUP_PARMS *MixSetupParms; /* Mixer parameters */
69 MCI_BUFFER_PARMS *BufferParms; /* Device buffer parms */
70
71 int SampleRate;
72 int BitsPerSample;
73 int nChannels;
74 int curPlayBuf, curFillBuf;
75 int curFillPos, curPlayPos; //fillpos == pos in os2 mix buffer, bufpos == pos in win buffer
76
77 LPDRVCALLBACK callback;
78 HWND hwndCallback;
79 DWORD dwInstance;
80 WAVEHDR *wavehdr, *curhdr;
81
82 BOOL fMixerSetup;
83
84 VMutex *wmutex;
85 // Linked list management
86 DartWaveOut* next; // Next Timer
87 static DartWaveOut* waveout; // List of Timer
88
89#ifndef _OS2WIN_H
90 friend LONG APIENTRY WaveOutHandler(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer, ULONG ulFlags);
91#endif
92};
93
94#endif
Note: See TracBrowser for help on using the repository browser.