Ignore:
Timestamp:
May 25, 2002, 7:19:41 PM (23 years ago)
Author:
sandervl
Message:

more mixer changes/fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/winmm/mixeros2.cpp

    r8485 r8492  
    1 /* $Id: mixeros2.cpp,v 1.3 2002-05-24 18:02:48 sandervl Exp $ */
     1/* $Id: mixeros2.cpp,v 1.4 2002-05-25 17:19:41 sandervl Exp $ */
    22
    33/*
     
    116116        idx = RECORDSRCSET;
    117117        break;
     118    case MIX_CTRL_VOL_IN_W_MONO:
     119    case MIX_CTRL_VOL_IN_W_PHONE:
     120    case MIX_CTRL_VOL_IN_W_MIC:
     121    case MIX_CTRL_VOL_IN_W_LINE:
     122    case MIX_CTRL_VOL_IN_W_CD:
     123    case MIX_CTRL_VOL_IN_W_VIDEO:
     124    case MIX_CTRL_VOL_IN_W_AUX:
     125    case MIX_CTRL_VOL_IN_W_PCM:
     126        idx = RECORDGAINSET;
     127        break;
     128
    118129    default:
    119130        return -1;
     
    141152    MIXSTRUCT mixstruct;
    142153
     154    //TODO: implement master volume with MMPM2
     155    if(dwControl == MIX_CTRL_VOL_OUT_LINE || dwControl == MIX_CTRL_MUTE_OUT_LINE) {
     156        return TRUE;
     157    }
     158
    143159    dwFunc = OSLibMixGetIndex(dwControl);
    144160    if(dwFunc == -1) {
     
    147163    dwFunc += MONOINSET;
    148164
    149     if(dwVolLeft > MIXER_MAX_VOLUME || dwVolRight > MIXER_MAX_VOLUME) {
     165    if(dwVolLeft > MIXER_IOCTL90_MAX_VOLUME || dwVolRight > MIXER_IOCTL90_MAX_VOLUME) {
    150166        dprintf(("OSLibMixSetVolume: Volume (%d,%d) out of RANGE!!", dwVolLeft, dwVolRight));
    151167        return FALSE;
    152168    }
    153169    mixstruct.Mute    = fMute;
    154     mixstruct.VolumeL = dwVolLeft;
    155     mixstruct.VolumeR = dwVolRight;
     170    mixstruct.VolumeL = WIN32_TO_IOCTL90_VOLUME(dwVolLeft);
     171    mixstruct.VolumeR = WIN32_TO_IOCTL90_VOLUME(dwVolRight);
    156172
    157173    if(mixerapiIOCTL90(hPDDMix, dwFunc, &mixstruct, sizeof(mixstruct)) == TRUE) {
     
    168184    MIXSTRUCT mixstruct;
    169185
     186    //TODO: implement master volume with MMPM2
     187    if(dwControl == MIX_CTRL_VOL_OUT_LINE || dwControl == MIX_CTRL_MUTE_OUT_LINE) {
     188        if(pfMute)      *pfMute      = 0;
     189        if(pdwVolLeft)  *pdwVolLeft  = 50000;
     190        if(pdwVolRight) *pdwVolRight = 50000;
     191        return TRUE;
     192    }
     193
    170194    dwFunc = OSLibMixGetIndex(dwControl);
    171195    if(dwFunc == -1) {
     
    177201        return FALSE;
    178202    }
     203    if(mixstruct.VolumeL > MIXER_IOCTL90_MAX_VOLUME || mixstruct.VolumeR > MIXER_IOCTL90_MAX_VOLUME) {
     204        dprintf(("OSLibMixGetVolume: Volume (%d,%d) out of RANGE!!", mixstruct.VolumeL, mixstruct.VolumeR));
     205    }
     206    mixstruct.VolumeL = min(MIXER_IOCTL90_MAX_VOLUME, mixstruct.VolumeL);
     207    mixstruct.VolumeR = min(MIXER_IOCTL90_MAX_VOLUME, mixstruct.VolumeR);
     208
    179209    if(pfMute)      *pfMute      = mixstruct.Mute;
    180     if(pdwVolLeft)  *pdwVolLeft  = mixstruct.VolumeL;
    181     if(pdwVolRight) *pdwVolRight = mixstruct.VolumeR;
    182 
    183     if(mixstruct.VolumeL > MIXER_MAX_VOLUME || mixstruct.VolumeR > MIXER_MAX_VOLUME) {
    184         dprintf(("OSLibMixGetVolume: Volume (%d,%d) out of RANGE!!", mixstruct.VolumeL, mixstruct.VolumeR));
     210    if(pdwVolLeft)  *pdwVolLeft  = IOCTL90_TO_WIN32_VOLUME(mixstruct.VolumeL);
     211    if(pdwVolRight) *pdwVolRight = IOCTL90_TO_WIN32_VOLUME(mixstruct.VolumeR);
     212
     213    return TRUE;
     214}
     215/******************************************************************************/
     216/******************************************************************************/
     217BOOL OSLibMixGetCtrlCaps(DWORD dwControl, LONG *plMinimum, LONG *plMaximum, DWORD *pcSteps)
     218{
     219    switch(dwControl) {
     220    case MIX_CTRL_VOL_OUT_LINE:
     221        *plMinimum = MIXER_WIN32_MIN_VOLUME;
     222        *plMaximum = MIXER_WIN32_MAX_VOLUME;
     223        *pcSteps   = MIXER_WIN32_CSTEP_VOLUME;
     224        break;
     225
     226    case MIX_CTRL_VOL_IN_L_MONO:
     227    case MIX_CTRL_VOL_IN_L_PHONE:
     228    case MIX_CTRL_VOL_IN_L_MIC:
     229    case MIX_CTRL_VOL_IN_L_LINE:
     230    case MIX_CTRL_VOL_IN_L_CD:
     231    case MIX_CTRL_VOL_IN_L_VIDEO:
     232    case MIX_CTRL_VOL_IN_L_AUX:
     233    case MIX_CTRL_VOL_IN_L_PCM:
     234        *plMinimum = MIXER_WIN32_MIN_VOLUME;
     235        *plMaximum = MIXER_WIN32_MAX_VOLUME;
     236        *pcSteps   = MIXER_WIN32_CSTEP_VOLUME;
     237        break;
     238
     239    case MIX_CTRL_VOL_IN_W_MONO:
     240    case MIX_CTRL_VOL_IN_W_PHONE:
     241    case MIX_CTRL_VOL_IN_W_MIC:
     242    case MIX_CTRL_VOL_IN_W_LINE:
     243    case MIX_CTRL_VOL_IN_W_CD:
     244    case MIX_CTRL_VOL_IN_W_VIDEO:
     245    case MIX_CTRL_VOL_IN_W_AUX:
     246    case MIX_CTRL_VOL_IN_W_PCM:
     247        *plMinimum = MIXER_WIN32_MIN_VOLUME;
     248        *plMaximum = MIXER_WIN32_MAX_VOLUME;
     249        *pcSteps   = MIXER_WIN32_CSTEP_VOLUME;
     250        break;
     251
     252    case MIX_CTRL_OUT_L_BASS:
     253    case MIX_CTRL_OUT_L_TREBLE:
     254        *plMinimum = MIXER_WIN32_MIN_VOLUME;
     255        *plMaximum = MIXER_WIN32_MAX_VOLUME;
     256        *pcSteps   = MIXER_WIN32_CSTEP_VOLUME;
     257        break;
     258
     259    case MIX_CTRL_OUT_L_3DCENTER:
     260    case MIX_CTRL_OUT_L_3DDEPTH:
     261        *plMinimum = MIXER_WIN32_MIN_VOLUME;
     262        *plMaximum = MIXER_WIN32_MAX_VOLUME;
     263        *pcSteps   = MIXER_WIN32_CSTEP_VOLUME;
     264        break;
     265    default:
     266        DebugInt3();
    185267        return FALSE;
    186268    }
     
    240322
    241323    mixstruct.Mute    = 0;
    242     mixstruct.VolumeL = dwVolL;
    243     mixstruct.VolumeR = dwVolR;
     324    mixstruct.VolumeL = WIN32_TO_IOCTL90_VOLUME(dwVolL);
     325    mixstruct.VolumeR = WIN32_TO_IOCTL90_VOLUME(dwVolR);
    244326    if(mixerapiIOCTL90(hPDDMix, RECORDGAINSET, &mixstruct, sizeof(mixstruct)) == FALSE) {
    245327        dprintf(("OSLibMixSetRecSource: mixerapiIOCTL90 RECORDGAINSET failed!!"));
     
    290372    }
    291373    if(pdwVolL) {
    292         *pdwVolL = mixstruct.VolumeL;
     374        *pdwVolL = IOCTL90_TO_WIN32_VOLUME(mixstruct.VolumeL);
    293375    }
    294376    if(pdwVolR) {
    295         *pdwVolR = mixstruct.VolumeR;
     377        *pdwVolR = IOCTL90_TO_WIN32_VOLUME(mixstruct.VolumeR);
    296378    }
    297379    return TRUE;
Note: See TracChangeset for help on using the changeset viewer.