Определение активности микрофона в WinXP
От: monkeycoder  
Дата: 05.11.13 09:56
Оценка:
Доброго времени суток!

Может есть какой-нибудь способ получить доступ к основному буферу микрофона и следить за изменениями или мерять скачки нагрузки на джеке, если такое вообще возможно программно.
Важный момент: нужно определить активность микрофона, а не его подключение в разъём, например, определять активацию\деактивацию из другого приложения.
Вариант с хуками вызовов waweIn... и directsound не подходит.
win api microphone usage detect
Re: Определение активности микрофона в WinXP
От: Аноним  
Дата: 05.11.13 13:22
Оценка:
Здравствуйте, monkeycoder, Вы писали:

M>Доброго времени суток!


M>Может есть какой-нибудь способ получить доступ к основному буферу микрофона и следить за изменениями или мерять скачки нагрузки на джеке, если такое вообще возможно программно.


Что бы мерить нагрузку надо одновременно измерять ток и напр. если железо не позволяет то никак.

M>Важный момент: нужно определить активность микрофона, а не его подключение в разъём, например, определять активацию\деактивацию из другого приложения.

M>Вариант с хуками вызовов waweIn... и directsound не подходит.
Тогда пиши свой драйвер.
Re[2]: Определение активности микрофона в WinXP
От: monkeycoder  
Дата: 05.11.13 14:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, monkeycoder, Вы писали:


M>>Доброго времени суток!


M>>Может есть какой-нибудь способ получить доступ к основному буферу микрофона и следить за изменениями или мерять скачки нагрузки на джеке, если такое вообще возможно программно.


А>Что бы мерить нагрузку надо одновременно измерять ток и напр. если железо не позволяет то никак.


M>>Важный момент: нужно определить активность микрофона, а не его подключение в разъём, например, определять активацию\деактивацию из другого приложения.

M>>Вариант с хуками вызовов waweIn... и directsound не подходит.
А>Тогда пиши свой драйвер.

Если драйвер то тогда нужно ещё убедить пользователя его использовать.
Должен быть более изящный путь...

В XP есть функция для получения инфы о состоянии линии используемой микрофоном mixerGetLineInfo которая в качестве результата заполняет структуру MIXERLINE
typedef struct { 
  DWORD cbStruct; 
  DWORD dwDestination; 
  DWORD dwSource; 
  DWORD dwLineID; 
  DWORD fdwLine; 
  DWORD dwUser; 
  DWORD dwComponentType; 
  DWORD cChannels; 
  DWORD cConnections; 
  DWORD cControls; 
  CHAR  szShortName[MIXER_SHORT_NAME_CHARS]; 
  CHAR  szName[MIXER_LONG_NAME_CHARS]; 
  struct { 
    DWORD dwType; 
    DWORD dwDeviceID; 
    WORD wMid; 
    WORD wPid; 
    MMVERSION vDriverVersion; 
    CHAR szPname[MAXPNAMELEN]; 
  } Target; 
} MIXERLINE;


Якобы в параметр fdwLine должен устанавливатся флаг MIXERLINE_LINEF_ACTIVE когда она активна, но этот флаг установлен всегда как и другие флаги одновременно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.