Changeset 8506 for trunk/src/winmm/mixer.cpp
- Timestamp:
- May 28, 2002, 3:35:02 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/winmm/mixer.cpp
r8498 r8506 1 /* $Id: mixer.cpp,v 1.2 0 2002-05-27 16:10:24sandervl Exp $ */1 /* $Id: mixer.cpp,v 1.21 2002-05-28 13:35:02 sandervl Exp $ */ 2 2 3 3 /* … … 116 116 } 117 117 118 if(OSLibMixGetRecSource(&dwRecSrc , NULL, NULL) == FALSE) {118 if(OSLibMixGetRecSource(&dwRecSrc) == FALSE) { 119 119 dprintf(("OSLibMixGetRecSource failed!!")); 120 120 return MIXERR_INVALCONTROL; … … 144 144 145 145 dprintf(("MIXERCONTROL_CONTROLTYPE_VOLUME")); 146 if(OSLibMixGetVolume(mixerControls[lpmcd->dwControlID].id, NULL,&dwVolLeft, &dwVolRight) == FALSE) {146 if(OSLibMixGetVolume(mixerControls[lpmcd->dwControlID].id, &dwVolLeft, &dwVolRight) == FALSE) { 147 147 dprintf(("OSLibMixGetVolume failed!!")); 148 148 return MIXERR_INVALCONTROL; 149 149 } 150 150 pDetails->dwValue = dwVolLeft; 151 dprintf((" Left volume %d", dwVolLeft));151 dprintf(("%s Left volume %d", mixerControls[lpmcd->dwControlID].ctrl.szName, dwVolLeft)); 152 152 if(lpmcd->cChannels == 2) { 153 dprintf((" Right volume %d", dwVolRight));153 dprintf(("%s Right volume %d", mixerControls[lpmcd->dwControlID].ctrl.szName, dwVolRight)); 154 154 pDetails += 1; 155 155 pDetails->dwValue = dwVolRight; … … 165 165 166 166 dprintf(("MIXERCONTROL_CONTROLTYPE_MUTE")); 167 if(OSLibMixGet Volume(mixerControls[lpmcd->dwControlID].id, &fMute, NULL, NULL) == FALSE) {167 if(OSLibMixGetMute(mixerControls[lpmcd->dwControlID].id, &fMute) == FALSE) { 168 168 dprintf(("OSLibMixGetVolume failed!!")); 169 169 return MIXERR_INVALCONTROL; 170 170 } 171 171 pDetails->fValue = fMute; 172 dprintf((" Left mute %d", fMute));172 dprintf(("%s Left mute %d", mixerControls[lpmcd->dwControlID].ctrl.szName, fMute)); 173 173 if(lpmcd->cChannels == 2) { 174 dprintf((" Right mute %d", fMute));174 dprintf(("%s Right mute %d", mixerControls[lpmcd->dwControlID].ctrl.szName, fMute)); 175 175 pDetails += 1; 176 176 pDetails->fValue = fMute; … … 187 187 dprintf(("MIXERCONTROL_CONTROLTYPE_FADER")); 188 188 189 if(lpmcd->cChannels != 1) { 190 dprintf(("Invalid nr of channels %d!!", lpmcd->cChannels)); 191 return MMSYSERR_INVALPARAM; 192 } 193 if(OSLibMixGetVolume(mixerControls[lpmcd->dwControlID].id, NULL, &dwLevelL, NULL) == FALSE) { 189 if(OSLibMixGetVolume(mixerControls[lpmcd->dwControlID].id, &dwLevelL, NULL) == FALSE) { 194 190 dprintf(("OSLibMixGetVolume failed!!")); 195 191 return MIXERR_INVALCONTROL; … … 202 198 else dprintf(("3D depth %d", dwLevelL)); 203 199 #endif 200 if(lpmcd->cChannels == 2) { 201 pDetails += 1; 202 pDetails->dwValue = dwLevelL; 203 } 204 //todo > 2 channels (??) 204 205 return MMSYSERR_NOERROR; 205 206 } 206 207 207 208 case MIXERCONTROL_CONTROLTYPE_BASS: 208 {209 MIXERCONTROLDETAILS_UNSIGNED *pDetails = (MIXERCONTROLDETAILS_UNSIGNED *)lpmcd->paDetails;210 DWORD dwLevelL;211 212 dprintf(("MIXERCONTROL_CONTROLTYPE_BASS"));213 214 if(lpmcd->cChannels != 1) {215 dprintf(("Invalid nr of channels %d!!", lpmcd->cChannels));216 return MMSYSERR_INVALPARAM;217 }218 if(OSLibMixGetVolume(mixerControls[lpmcd->dwControlID].id, NULL, &dwLevelL, NULL) == FALSE) {219 dprintf(("OSLibMixGetVolume failed!!"));220 return MIXERR_INVALCONTROL;221 }222 pDetails->dwValue = dwLevelL;223 dprintf(("Bass %d", dwLevelL));224 return MMSYSERR_NOERROR;225 }226 227 209 case MIXERCONTROL_CONTROLTYPE_TREBLE: 228 210 { … … 230 212 DWORD dwLevelL; 231 213 232 dprintf(("MIXERCONTROL_CONTROLTYPE_TREBLE")); 233 234 if(lpmcd->cChannels != 1) { 235 dprintf(("Invalid nr of channels %d!!", lpmcd->cChannels)); 236 return MMSYSERR_INVALPARAM; 237 } 238 if(OSLibMixGetVolume(mixerControls[lpmcd->dwControlID].id, NULL, &dwLevelL, NULL) == FALSE) { 214 switch(fdwDetails & MIXER_GETCONTROLDETAILSF_QUERYMASK) { 215 case MIXERCONTROL_CONTROLTYPE_TREBLE: 216 dprintf(("MIXERCONTROL_CONTROLTYPE_TREBLE")); 217 break; 218 case MIXERCONTROL_CONTROLTYPE_BASS: 219 dprintf(("MIXERCONTROL_CONTROLTYPE_BASS")); 220 break; 221 } 222 223 if(OSLibMixGetVolume(mixerControls[lpmcd->dwControlID].id, &dwLevelL, NULL) == FALSE) { 239 224 dprintf(("OSLibMixGetVolume failed!!")); 240 225 return MIXERR_INVALCONTROL; 241 226 } 242 227 pDetails->dwValue = dwLevelL; 243 dprintf(("Treble %d", dwLevelL)); 228 dprintf(("%s %d", mixerControls[lpmcd->dwControlID].ctrl.szName, dwLevelL)); 229 if(lpmcd->cChannels == 2) { 230 pDetails += 1; 231 pDetails->dwValue = dwLevelL; 232 } 244 233 return MMSYSERR_NOERROR; 245 234 } … … 466 455 } 467 456 } 468 if(lpmcd == NULL || lpmcd->cb Details!= sizeof(MIXERCONTROLDETAILS)) {469 dprintf(("ERROR: invalid pointer or structure size "));457 if(lpmcd == NULL || lpmcd->cbStruct != sizeof(MIXERCONTROLDETAILS)) { 458 dprintf(("ERROR: invalid pointer or structure size %x %d", lpmcd, lpmcd->cbStruct)); 470 459 return MMSYSERR_INVALPARAM; 471 460 } … … 504 493 return MMSYSERR_INVALPARAM; 505 494 } 506 #if 0 507 if(OSLibMixGetRecSource(&dwRecSrc, NULL, NULL) == FALSE) { 508 dprintf(("OSLibMixGetRecSource failed!!")); 509 return MIXERR_INVALCONTROL; 510 } 511 //clear the array 512 memset(pDetails, 0, sizeof(MIXERCONTROLDETAILS_BOOLEAN)*lpmcd->u.cMultipleItems); 513 //mark recording source 495 //select recording source 514 496 for(int i=0;i<nrDestinations;i++) { 515 if(mixerDest[i].id == MIXER_DEST_WAVEIN) { 497 if(mixerDest[i].id == MIXER_DEST_WAVEIN) 498 { 516 499 for(int j=0;j<mixerDest[i].cConnections;j++) { 517 500 dprintf(("wavein source %d (id %d)", pmixerLines[mixerDest[i].Connections[j]]->id, mixerDest[i].Connections[j])); 518 if(pmixerLines[mixerDest[i].Connections[j]]->id == dwRecSrc) { 519 pDetails[j].fValue = 1; 501 if(pDetails[j].fValue) 502 { 503 if(OSLibMixSetRecSource(pmixerLines[mixerDest[i].Connections[j]]->id) == FALSE) { 504 dprintf(("OSLibMixGetRecSource failed!!")); 505 return MIXERR_INVALCONTROL; 506 } 520 507 return MMSYSERR_NOERROR; 521 508 } … … 524 511 } 525 512 dprintf(("recording source %d not found!!", dwRecSrc)); 526 #endif527 513 break; 528 514 } … … 531 517 { 532 518 MIXERCONTROLDETAILS_UNSIGNED *pDetails = (MIXERCONTROLDETAILS_UNSIGNED *)lpmcd->paDetails; 519 DWORD dwVolumeL, dwVolumeR; 533 520 534 521 dprintf(("MIXERCONTROL_CONTROLTYPE_VOLUME")); 535 dprintf(("Left volume %d", pDetails->dwValue)); 522 dwVolumeL = pDetails->dwValue; 523 524 dprintf(("%s Left volume %d", mixerControls[lpmcd->dwControlID].ctrl.szName, pDetails->dwValue)); 536 525 if(lpmcd->cChannels == 2) { 537 526 pDetails += 1; 538 dprintf(("Right volume %d", pDetails->dwValue)); 539 } 527 dprintf(("%s Right volume %d", mixerControls[lpmcd->dwControlID].ctrl.szName, pDetails->dwValue)); 528 dwVolumeR = pDetails->dwValue; 529 } 530 else dwVolumeR = dwVolumeL; 540 531 //todo > 2 channels 532 533 if(OSLibMixSetVolume(mixerControls[lpmcd->dwControlID].id, dwVolumeL, dwVolumeR) == FALSE) { 534 return MMSYSERR_INVALPARAM; 535 } 536 mixerControls[lpmcd->dwControlID].val[0].dwValue = dwVolumeL; 537 mixerControls[lpmcd->dwControlID].val[1].dwValue = dwVolumeR; 541 538 return MMSYSERR_NOERROR; 542 539 } … … 545 542 { 546 543 MIXERCONTROLDETAILS_BOOLEAN *pDetails = (MIXERCONTROLDETAILS_BOOLEAN *)lpmcd->paDetails; 544 BOOL fMute; 547 545 548 546 dprintf(("MIXERCONTROL_CONTROLTYPE_MUTE")); 549 dprintf(("Left mute %d", pDetails->fValue)); 547 dprintf(("%s Left mute %d", mixerControls[lpmcd->dwControlID].ctrl.szName, pDetails->fValue)); 548 fMute = pDetails->fValue; 550 549 if(lpmcd->cChannels == 2) { 551 550 pDetails += 1; 552 dprintf((" Right mute %d", pDetails->fValue));551 dprintf(("%s Right mute %d", mixerControls[lpmcd->dwControlID].ctrl.szName, pDetails->fValue)); 553 552 } 554 553 //todo > 2 channels (usually only 1 channel is requested though) 554 555 if(OSLibMixSetMute(mixerControls[lpmcd->dwControlID].id, fMute) == FALSE) { 556 return MMSYSERR_INVALPARAM; 557 } 558 mixerControls[lpmcd->dwControlID].val[0].dwValue = fMute; 555 559 return MMSYSERR_NOERROR; 556 560 } 557 561 562 case MIXERCONTROL_CONTROLTYPE_BASS: 563 case MIXERCONTROL_CONTROLTYPE_TREBLE: 558 564 case MIXERCONTROL_CONTROLTYPE_FADER: 559 565 { 560 566 MIXERCONTROLDETAILS_UNSIGNED *pDetails = (MIXERCONTROLDETAILS_UNSIGNED *)lpmcd->paDetails; 561 562 dprintf(("MIXERCONTROL_CONTROLTYPE_FADER")); 563 564 if(lpmcd->cChannels != 1) { 565 dprintf(("Invalid nr of channels %d!!", lpmcd->cChannels)); 567 DWORD dwLevel; 568 569 #ifdef DEBUG 570 switch(fdwDetails & MIXER_GETCONTROLDETAILSF_QUERYMASK) { 571 case MIXERCONTROL_CONTROLTYPE_TREBLE: 572 dprintf(("MIXERCONTROL_CONTROLTYPE_TREBLE")); 573 break; 574 case MIXERCONTROL_CONTROLTYPE_BASS: 575 dprintf(("MIXERCONTROL_CONTROLTYPE_BASS")); 576 break; 577 case MIXERCONTROL_CONTROLTYPE_FADER: 578 dprintf(("MIXERCONTROL_CONTROLTYPE_FADER")); 579 break; 580 } 581 #endif 582 dprintf(("%s %d", mixerControls[lpmcd->dwControlID].ctrl.szName, pDetails->dwValue)); 583 dwLevel = pDetails->dwValue; 584 if(OSLibMixSetVolume(mixerControls[lpmcd->dwControlID].id, dwLevel, dwLevel) == FALSE) { 566 585 return MMSYSERR_INVALPARAM; 567 586 } 568 #ifdef DEBUG 569 if(mixerControls[lpmcd->dwControlID].id == MIX_CTRL_OUT_L_3DCENTER) { 570 dprintf(("3D center %d", pDetails->dwValue)); 571 } 572 else dprintf(("3D depth %d", pDetails->dwValue)); 573 #endif 574 return MMSYSERR_NOERROR; 575 } 576 577 case MIXERCONTROL_CONTROLTYPE_BASS: 578 { 579 MIXERCONTROLDETAILS_UNSIGNED *pDetails = (MIXERCONTROLDETAILS_UNSIGNED *)lpmcd->paDetails; 580 581 dprintf(("MIXERCONTROL_CONTROLTYPE_BASS")); 582 583 if(lpmcd->cChannels != 1) { 584 dprintf(("Invalid nr of channels %d!!", lpmcd->cChannels)); 585 return MMSYSERR_INVALPARAM; 586 } 587 dprintf(("Bass %d", pDetails->dwValue)); 588 return MMSYSERR_NOERROR; 589 } 590 591 case MIXERCONTROL_CONTROLTYPE_TREBLE: 592 { 593 MIXERCONTROLDETAILS_UNSIGNED *pDetails = (MIXERCONTROLDETAILS_UNSIGNED *)lpmcd->paDetails; 594 595 dprintf(("MIXERCONTROL_CONTROLTYPE_TREBLE")); 596 597 if(lpmcd->cChannels != 1) { 598 dprintf(("Invalid nr of channels %d!!", lpmcd->cChannels)); 599 return MMSYSERR_INVALPARAM; 600 } 601 dprintf(("Treble %d", pDetails->dwValue)); 587 mixerControls[lpmcd->dwControlID].val[0].dwValue = dwLevel; 602 588 return MMSYSERR_NOERROR; 603 589 }
Note:
See TracChangeset
for help on using the changeset viewer.