volume.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #include "3d_all.h"
  2. //static HMIXER m_hMixer = NULL;
  3. static int m_dwVolumeControlID = 0;
  4. static long m_dwMinimum = 0;
  5. static long m_dwMaximum = 0;
  6. BOOL amdInitialize(HWND hwnd)
  7. {
  8. /*
  9. MIXERCAPS m_mxcaps;
  10. // get the number of mixer devices present in the system
  11. int m_nNumMixers = mixerGetNumDevs();
  12. ZeroMemory(&m_mxcaps, sizeof(MIXERCAPS));
  13. // open the first mixer
  14. // A "mapper" for audio mixer devices does not currently exist.
  15. if (m_nNumMixers != 0)
  16. {
  17. if(mixerOpen(&m_hMixer,0,0,0,MIXER_OBJECTF_MIXER) != MMSYSERR_NOERROR)
  18. {
  19. return FALSE;
  20. }
  21. if(mixerGetDevCaps((unsigned int) m_hMixer,&m_mxcaps, sizeof(MIXERCAPS)) != MMSYSERR_NOERROR)
  22. {
  23. return FALSE;
  24. }
  25. }
  26. kprintf(1, "Mixer: %s", m_mxcaps.szPname);
  27. */
  28. return TRUE;
  29. }
  30. void amdUninitialize()
  31. {
  32. /*
  33. if (m_hMixer != NULL)
  34. {
  35. mixerClose(m_hMixer);
  36. m_hMixer = NULL;
  37. }
  38. */
  39. return;
  40. }
  41. BOOL amdGetMasterVolumeControl()
  42. {
  43. /*
  44. MIXERLINE mxl;
  45. MIXERCONTROL mxc;
  46. MIXERLINECONTROLS mxlc;
  47. if (m_hMixer == NULL)
  48. {
  49. return FALSE;
  50. }
  51. // get dwLineID
  52. mxl.cbStruct = sizeof(MIXERLINE);
  53. mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
  54. if (mixerGetLineInfo((HMIXEROBJ)(m_hMixer),&mxl, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE)!= MMSYSERR_NOERROR)
  55. {
  56. return FALSE;
  57. }
  58. // get dwControlID
  59. mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
  60. mxlc.dwLineID = mxl.dwLineID;
  61. mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
  62. mxlc.cControls = 1;
  63. mxlc.cbmxctrl = sizeof(MIXERCONTROL);
  64. mxlc.pamxctrl = &mxc;
  65. if (mixerGetLineControls((HMIXEROBJ)(m_hMixer), &mxlc, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)!= MMSYSERR_NOERROR)
  66. {
  67. return FALSE;
  68. }
  69. // store dwControlID
  70. m_dwMinimum = mxc.Bounds.dwMinimum;
  71. m_dwMaximum = mxc.Bounds.dwMaximum;
  72. m_dwVolumeControlID = mxc.dwControlID;
  73. */
  74. return TRUE;
  75. }
  76. BOOL amdGetMasterVolumeValue(float *dwVal)
  77. {
  78. /*
  79. MIXERCONTROLDETAILS_UNSIGNED mxcdVolume;
  80. MIXERCONTROLDETAILS mxcd;
  81. if (m_hMixer == NULL)
  82. {
  83. return FALSE;
  84. }
  85. mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
  86. mxcd.dwControlID = m_dwVolumeControlID;
  87. mxcd.cChannels = 1;
  88. mxcd.cMultipleItems = 0;
  89. mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
  90. mxcd.paDetails = &mxcdVolume;
  91. if (mixerGetControlDetails((HMIXEROBJ)(m_hMixer),&mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
  92. {
  93. return FALSE;
  94. }
  95. *dwVal = mxcdVolume.dwValue / (float)(m_dwMaximum - m_dwMinimum);
  96. */
  97. return TRUE;
  98. }
  99. BOOL amdSetMasterVolumeValue(float dwVal)
  100. {
  101. /*
  102. MIXERCONTROLDETAILS_UNSIGNED mxcdVolume;
  103. MIXERCONTROLDETAILS mxcd;
  104. if (m_hMixer == NULL)
  105. {
  106. return FALSE;
  107. }
  108. mxcdVolume.dwValue = m_dwMinimum + (int)floor((m_dwMaximum - m_dwMinimum) * dwVal);
  109. mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);
  110. mxcd.dwControlID = m_dwVolumeControlID;
  111. mxcd.cChannels = 1;
  112. mxcd.cMultipleItems = 0;
  113. mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
  114. mxcd.paDetails = &mxcdVolume;
  115. if (mixerSetControlDetails((HMIXEROBJ)(m_hMixer),&mxcd, MIXER_OBJECTF_HMIXER | MIXER_SETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR)
  116. {
  117. return FALSE;
  118. }
  119. */
  120. return TRUE;
  121. }