source: trunk/src/winmm/dwavein.h@ 5280

Last change on this file since 5280 was 5272, checked in by sandervl, 25 years ago

Added preliminary wavein support

File size: 3.0 KB
Line 
1/* $Id: dwavein.h,v 1.1 2001-02-27 21:13:59 sandervl Exp $ */
2
3/*
4 * Wave playback class
5 * Copyright 2001 Sander van Leeuwen (sandervl@xs4all.nl)
6 * Project Odin Software License can be found in LICENSE.TXT
7 */
8#ifndef __DWAVEIN_H__
9#define __DWAVEIN_H__
10
11#define STATE_STOPPED 0
12#define STATE_RECORDING 1
13
14#define PREFILLBUF_DART_REC 8
15#define DART_BUFSIZE_REC 16384
16
17#ifdef OS2_ONLY
18#include "winmmtype.h"
19#endif
20#include "vmutex.h"
21
22#ifdef _OS2WIN_H
23#define MCI_MIX_BUFFER DWORD
24#define PMCI_MIX_BUFFER MCI_MIX_BUFFER *
25#define MCI_MIXSETUP_PARMS DWORD
26#define MCI_BUFFER_PARMS DWORD
27#define MCI_PLAY_PARMS DWORD
28#endif
29
30class DartWaveIn
31{
32public:
33 DartWaveIn(LPWAVEFORMATEX pwfx, ULONG nCallback, ULONG dwInstance, USHORT usSel);
34 DartWaveIn(LPWAVEFORMATEX pwfx, HWND hwndCallback);
35 DartWaveIn(LPWAVEFORMATEX pwfx);
36 ~DartWaveIn();
37
38 MMRESULT getError();
39 MMRESULT addBuffer(LPWAVEHDR pwh, UINT cbwh);
40 MMRESULT start();
41 MMRESULT stop();
42 int getState() { return State; };
43 MMRESULT reset();
44 ULONG getPosition();
45
46 ULONG getSampleRate() { return SampleRate; };
47 ULONG getBitsPerSample() { return BitsPerSample; };
48 ULONG getnumChannels() { return nChannels; };
49 ULONG getAvgBytesPerSecond() { return (BitsPerSample/8) * nChannels * SampleRate; };
50
51 static BOOL queryFormat(ULONG formatTag, ULONG nChannels,
52 ULONG nSamplesPerSec, ULONG sampleSize);
53
54 static BOOL find(DartWaveIn *dwave);
55 static int getNumDevices();
56
57protected:
58 static void mciError(ULONG ulError);
59 void Init(LPWAVEFORMATEX pwfx);
60 void handler(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer, ULONG ulFlags);
61
62private:
63 USHORT DeviceId;
64 ULONG ulBufferCount; /* Current file buffer */
65 ULONG ulBufSize;
66
67 ULONG ulError, State;
68
69 MCI_MIX_BUFFER *MixBuffer; /* Device buffers */
70 MCI_MIXSETUP_PARMS *MixSetupParms; /* Mixer parameters */
71 MCI_BUFFER_PARMS *BufferParms; /* Device buffer parms */
72
73 int SampleRate;
74 int BitsPerSample;
75 int nChannels;
76
77 // callback interface
78 LPDRVCALLBACK mthdCallback; // pointer to win32 routine for the callback
79 USHORT selCallback; // the win32 tib selector for the callback (saved at waveOutOpen)
80 void callback(HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
81 HWND hwndCallback;
82 DWORD dwInstance;
83
84 WAVEHDR *wavehdr;
85
86 BOOL fMixerSetup;
87 BOOL fOverrun;
88
89 VMutex *wmutex;
90 // Linked list management
91 DartWaveIn* next; // Next Timer
92 static DartWaveIn* wavein; // List of Timer
93
94#ifndef _OS2WIN_H
95 friend LONG APIENTRY WaveInHandler(ULONG ulStatus, PMCI_MIX_BUFFER pBuffer, ULONG ulFlags);
96#endif
97};
98
99#endif
Note: See TracBrowser for help on using the repository browser.