Changeset 5643 for trunk/src/dsound/waveoutdaud.cpp
- Timestamp:
- Apr 30, 2001, 11:06:56 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/dsound/waveoutdaud.cpp
r5608 r5643 1 /* $Id: waveoutdaud.cpp,v 1. 1 2001-04-27 17:39:49sandervl Exp $ */1 /* $Id: waveoutdaud.cpp,v 1.2 2001-04-30 21:06:37 sandervl Exp $ */ 2 2 3 3 /* … … 32 32 #include "misc.h" 33 33 #include "waveoutdaud.h" 34 34 #include <options.h> 35 35 36 36 DWORD WIN32API DAudioThreadHandler(LPVOID pUserData); … … 39 39 /******************************************************************************/ 40 40 /******************************************************************************/ 41 DAudioWaveOut::DAudioWaveOut(LPWAVEFORMATEX pwfx) : ulError(0), hDAudioDrv(0) 41 DAudioWaveOut::DAudioWaveOut(LPWAVEFORMATEX pwfx) : 42 ulError(0), hDAudioDrv(0), fUnderrun(FALSE), State(STATE_STOPPED) 42 43 { 43 44 APIRET rc; … … 48 49 ULONG ParmLength = 0, DataLength; 49 50 50 fUnderrun = FALSE;51 52 51 rc = DosOpen("DAUDIO1$", &hDAudioDrv, &action, 0, 53 52 FILE_NORMAL, FILE_OPEN, OPEN_ACCESS_READWRITE | … … 91 90 DAUDIO_CMD cmd; 92 91 92 if(State != STATE_STOPPED) { 93 stop(); 94 } 93 95 if(hDAudioDrv) { 94 96 sendIOCTL(DAUDIO_CLOSE, &cmd); … … 99 101 /******************************************************************************/ 100 102 /******************************************************************************/ 101 MMRESULT DAudioWaveOut::write(LP WAVEHDR pwh, UINT cbwh)102 { 103 DAUDIO_CMD cmd; 104 105 cmd.Buffer.lpBuffer = (ULONG) pwh->lpData;106 cmd.Buffer.ulBufferLength = pwh->dwBufferLength;103 MMRESULT DAudioWaveOut::write(LPVOID lpBuffer, UINT ulSize) 104 { 105 DAUDIO_CMD cmd; 106 107 cmd.Buffer.lpBuffer = (ULONG)lpBuffer; 108 cmd.Buffer.ulBufferLength = ulSize; 107 109 if(sendIOCTL(DAUDIO_ADDBUFFER, &cmd)) { 108 110 dprintf(("Unable to add buffer!!!!!")); … … 110 112 } 111 113 112 if(State == STATE_STOPPED) {//continue playback113 restart();114 }115 else116 if(fUnderrun) {117 dprintf(("Resume playback after underrun"));118 fUnderrun = FALSE;119 State = STATE_PLAYING;120 121 // Resume the playback.122 resume();123 }124 114 return(MMSYSERR_NOERROR); 125 115 } … … 187 177 /******************************************************************************/ 188 178 /******************************************************************************/ 189 ULONG DAudioWaveOut::getPosition() 179 MMRESULT DAudioWaveOut::setProperty(int type, ULONG value) 180 { 181 DAUDIO_CMD cmd; 182 183 dprintf(("DAudioWaveOut::setProperty %d %x", type, value)); 184 185 cmd.SetProperty.type = type; 186 cmd.SetProperty.value = type; 187 return sendIOCTL(DAUDIO_SETPROPERTY, &cmd); 188 } 189 /******************************************************************************/ 190 /******************************************************************************/ 191 MMRESULT DAudioWaveOut::setVolume(ULONG ulVol) 192 { 193 DAUDIO_CMD cmd; 194 195 //Scale down from 0-64k-1 -> 0-100 196 cmd.Vol.VolumeR = (((ulVol & 0xFFFF0000) >> 16)*100)/0xFFFF; 197 cmd.Vol.VolumeL = ((ulVol & 0x0000FFFF) *100)/0xFFFF; 198 return sendIOCTL(DAUDIO_SETVOLUME, &cmd); 199 } 200 /******************************************************************************/ 201 /******************************************************************************/ 202 ULONG DAudioWaveOut::getPosition(PULONG pulWritePos) 190 203 { 191 204 DAUDIO_CMD cmd; … … 196 209 return 0xFFFFFFFF; 197 210 } 211 *pulWritePos = cmd.Pos.ulWritePos; 198 212 return cmd.Pos.ulCurrentPos; 199 213 } … … 253 267 HFILE hDriver; 254 268 269 255 270 if(!fTested) { 271 if(PROFILE_GetOdinIniInt(SECTION_WINMM, KEY_DIRECTAUDIO, 1) == 0) { 272 fTested = TRUE; 273 return FALSE; 274 } 256 275 rc = DosOpen("DAUDIO1$", &hDriver, &action, 0, 257 276 FILE_NORMAL, FILE_OPEN, OPEN_ACCESS_READWRITE | … … 270 289 /******************************************************************************/ 271 290 /******************************************************************************/ 272 MMRESULT DAudioWaveOut::setVolume(ULONG ulVol)273 {274 DAUDIO_CMD cmd;275 276 //Scale down from 0-64k-1 -> 0-100277 cmd.Vol.VolumeR = (((ulVol & 0xFFFF0000) >> 16)*100)/0xFFFF;278 cmd.Vol.VolumeL = ((ulVol & 0x0000FFFF) *100)/0xFFFF;279 return sendIOCTL(DAUDIO_SETVOLUME, &cmd);280 }281 /******************************************************************************/282 /******************************************************************************/283 291 MMRESULT DAudioWaveOut::sendIOCTL(ULONG cmd, DAUDIO_CMD *pDataPacket) 284 292 {
Note:
See TracChangeset
for help on using the changeset viewer.