Created
July 22, 2022 20:31
-
-
Save riicchhaarrd/3da09d09ea12ad7962f9cf7f5b88a6d9 to your computer and use it in GitHub Desktop.
cod2 soundfix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PMIXERCONTROLDETAILS soundFuncFix(const char* search) | |
{ | |
HMIXER phmx; | |
//probably wouldn't be a bad idea to also ZeroMemory this structure | |
if (waveInGetNumDevs() < 1 || mixerGetNumDevs() < 1 || mixerOpen(&phmx, 0, 0, 0, 0)) | |
{ | |
return (PMIXERCONTROLDETAILS)-1; | |
} | |
else | |
{ | |
MIXERLINEA pmxl; | |
memset(&pmxl, 0, sizeof(pmxl)); //the proper fix... but since this sets cConnections/nc to 0, ultimately the function still returns -1 when mixerGetLineInfoA doesn't set it to > 0 | |
pmxl.cbStruct = sizeof(pmxl); | |
pmxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN; | |
mixerGetLineInfoA((HMIXEROBJ)phmx, &pmxl, MIXER_GETLINEINFOF_COMPONENTTYPE); | |
int nc = pmxl.cConnections; | |
for (int i = 0; i < nc; ++i) | |
{ | |
pmxl.dwSource = i; | |
mixerGetLineInfoA((HMIXEROBJ)phmx, &pmxl, MIXER_GETLINEINFOF_SOURCE); | |
if (strstr(pmxl.szName, search)) | |
break; | |
} | |
MIXERCONTROLA v9; | |
MIXERLINECONTROLSA pmxlc; | |
pmxlc.dwLineID = pmxl.dwLineID; | |
pmxlc.cbStruct = sizeof(pmxlc); | |
pmxlc.dwControlID = 0x50030001; | |
pmxlc.cControls = 1; | |
pmxlc.cbmxctrl = 148; | |
pmxlc.pamxctrl = &v9; | |
if (mixerGetLineControlsA((HMIXEROBJ)phmx, &pmxlc, 2)) | |
{ | |
mixerClose(phmx); | |
return (PMIXERCONTROLDETAILS)-1; | |
} | |
else { | |
MIXERCONTROLDETAILS pmxcd; | |
PMIXERCONTROLDETAILS v5; | |
pmxcd.cMultipleItems = 0; | |
pmxcd.paDetails = &v5; | |
pmxcd.cbStruct = 24; | |
pmxcd.cChannels = 1; | |
pmxcd.cbDetails = 4; | |
//pmxcd.dwControlID = v10; //v10 wasn't properly referenced | |
pmxcd.dwControlID = pmxlc.dwControlID; //assuming pmxlc is meant | |
mixerGetControlDetailsA((HMIXEROBJ)phmx, &pmxcd, 0); | |
mixerClose(phmx); | |
return v5; | |
} | |
} | |
return (PMIXERCONTROLDETAILS)-1; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment