Changeset 8510 for trunk/src/winmm/mixeros2.cpp
- Timestamp:
- May 28, 2002, 7:10:02 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/winmm/mixeros2.cpp
r8506 r8510 1 /* $Id: mixeros2.cpp,v 1. 6 2002-05-28 13:35:02 sandervl Exp $ */1 /* $Id: mixeros2.cpp,v 1.7 2002-05-28 17:10:02 sandervl Exp $ */ 2 2 3 3 /* … … 26 26 #include "mixeros2.h" 27 27 28 #ifndef LOWORD 29 #define LOWORD(a) (a & 0xffff) 30 #endif 31 28 32 static BOOL GetAudioPDDName (char *pszPDDName); 29 33 static HFILE DevOpen (char *ddName); … … 58 62 59 63 memset(szVolumeLevels, -1, sizeof(szVolumeLevels)); 64 65 //query current master volume 66 MCI_MASTERAUDIO_PARMS parms = {0}; 67 APIRET rc; 68 69 rc = mymciSendCommand(0, MCI_MASTERAUDIO, MCI_MASTERVOL | MCI_WAIT | MCI_QUERYCURRENTSETTING, &parms, 0); 70 if(LOWORD(rc) == MCIERR_SUCCESS) 71 { 72 dprintf(("Current master volume %d -> %d", parms.ulReturn, MMPM2MASTER_TO_WIN32_VOLUME(parms.ulReturn))); 73 szVolumeLevels[MIX_CTRL_VOL_OUT_LINE][0] = MMPM2MASTER_TO_WIN32_VOLUME(parms.ulReturn); 74 szVolumeLevels[MIX_CTRL_VOL_OUT_LINE][1] = szVolumeLevels[MIX_CTRL_VOL_OUT_LINE][0]; 75 szVolumeLevels[MIX_CTRL_MUTE_OUT_LINE][0] = (szVolumeLevels[MIX_CTRL_MUTE_OUT_LINE][0] == 0); 76 } 77 else { 78 char szError[256] = ""; 79 80 mymciGetErrorString(rc, szError, sizeof(szError)); 81 dprintf(("mciSendCommand returned error %x = %s", rc, szError)); 82 } 60 83 return TRUE; 61 84 } … … 140 163 141 164 idx = OSLibMixGetIndex(dwControl); 142 if(idx == -1) { 165 if(idx == -1) { 143 166 return FALSE; 144 167 } … … 153 176 MIXSTRUCT mixstruct; 154 177 155 //TODO: implement master volume with MMPM2 156 if(dwControl == MIX_CTRL_VOL_OUT_LINE) { 178 if(dwControl > MIX_CTRL_MAX) { 179 DebugInt3(); 180 return FALSE; 181 } 182 if(dwVolLeft > MIXER_WIN32_MAX_VOLUME || dwVolRight > MIXER_WIN32_MAX_VOLUME) { 183 dprintf(("OSLibMixSetVolume: Volume (%d,%d) out of RANGE!!", dwVolLeft, dwVolRight)); 184 return FALSE; 185 } 186 187 szVolumeLevels[dwControl][0] = dwVolLeft; 188 szVolumeLevels[dwControl][1] = dwVolRight; 189 190 //Master volume/mute can't be controlled with ioctl90 191 if(dwControl == MIX_CTRL_VOL_OUT_LINE) 192 { 193 MCI_MASTERAUDIO_PARMS parms; 194 195 if(szVolumeLevels[MIX_CTRL_MUTE_OUT_LINE][0] == TRUE) { 196 //muted, ignore 197 return TRUE; 198 } 199 memset(&parms, 0, sizeof(parms)); 200 parms.ulMasterVolume = WIN32_TO_MMPM2MASTER_VOLUME(szVolumeLevels[dwControl][0]); 201 202 mymciSendCommand(0, MCI_MASTERAUDIO, MCI_MASTERVOL | MCI_WAIT, &parms, 0); 203 157 204 return TRUE; 158 205 } 159 206 160 //wave in recording levels are virtual controls as there is only161 //one control for recording gain162 switch(dwControl) {163 case MIX_CTRL_VOL_IN_W_MONO:164 case MIX_CTRL_VOL_IN_W_PHONE:165 case MIX_CTRL_VOL_IN_W_MIC:166 case MIX_CTRL_VOL_IN_W_LINE:167 case MIX_CTRL_VOL_IN_W_CD:168 case MIX_CTRL_VOL_IN_W_VIDEO:169 case MIX_CTRL_VOL_IN_W_AUX:170 case MIX_CTRL_VOL_IN_W_PCM:171 szVolumeLevels[dwControl][0] = dwVolLeft;172 szVolumeLevels[dwControl][1] = dwVolRight;173 break;174 }175 207 dwFunc = OSLibMixGetIndex(dwControl); 176 208 if(dwFunc == -1) { … … 184 216 } 185 217 186 if(dwVolLeft > MIXER_WIN32_MAX_VOLUME || dwVolRight > MIXER_WIN32_MAX_VOLUME) {187 dprintf(("OSLibMixSetVolume: Volume (%d,%d) out of RANGE!!", dwVolLeft, dwVolRight));188 return FALSE;189 }190 218 if(dwControl == MIX_CTRL_OUT_L_TREBLE) { 191 219 //get bass value (right = treble, left = bass) … … 223 251 MIXSTRUCT mixstruct; 224 252 225 //TODO: implement master volume with MMPM2 253 if(dwControl > MIX_CTRL_MAX) { 254 DebugInt3(); 255 return FALSE; 256 } 257 szVolumeLevels[dwControl][0] = fMute; 258 259 //Master volume/mute can't be controlled with ioctl90 226 260 if(dwControl == MIX_CTRL_MUTE_OUT_LINE) { 261 MCI_MASTERAUDIO_PARMS parms; 262 263 memset(&parms, 0, sizeof(parms)); 264 parms.ulMasterVolume = (fMute) ? 0 : MMPM2MASTER_TO_WIN32_VOLUME(szVolumeLevels[MIX_CTRL_VOL_OUT_LINE][0]); 265 266 mymciSendCommand(0, MCI_MASTERAUDIO, MCI_MASTERVOL | MCI_WAIT, &parms, 0); 267 227 268 return TRUE; 228 269 } … … 259 300 MIXSTRUCT mixstruct; 260 301 261 //TODO: implement master volume with MMPM2 262 if(dwControl == MIX_CTRL_VOL_OUT_LINE) { 263 if(pdwVolLeft) *pdwVolLeft = 50000; 264 if(pdwVolRight) *pdwVolRight = 50000; 302 //Master volume/mute can't be controlled with ioctl90 303 if(dwControl == MIX_CTRL_VOL_OUT_LINE) 304 { 305 if(pdwVolLeft) *pdwVolLeft = szVolumeLevels[MIX_CTRL_VOL_OUT_LINE][0]; 306 if(pdwVolRight) *pdwVolRight = szVolumeLevels[MIX_CTRL_VOL_OUT_LINE][1]; 307 265 308 return TRUE; 266 309 } … … 324 367 MIXSTRUCT mixstruct; 325 368 326 //TODO: implement master volume with MMPM2 327 if(dwControl == MIX_CTRL_MUTE_OUT_LINE) { 328 if(pfMute) *pfMute = 0; 369 //Master volume/mute can't be controlled with ioctl90 370 if(dwControl == MIX_CTRL_MUTE_OUT_LINE) 371 { 372 if(pfMute) *pfMute = szVolumeLevels[MIX_CTRL_MUTE_OUT_LINE][0]; 373 329 374 return TRUE; 330 375 } 376 331 377 dwFunc = OSLibMixGetIndex(dwControl); 332 378 if(dwFunc == -1) {
Note:
See TracChangeset
for help on using the changeset viewer.