📄 optionaudio.cpp
字号:
// OptionAudio.cpp : implementation file
//
#include "stdafx.h"
#include "VISEP.h"
#include "OptionAudio.h"
#include "VISEPDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// COptionAudio dialog
COptionAudio::COptionAudio(CWnd* pParent /*=NULL*/)
: CDialog(COptionAudio::IDD, pParent)
{
//{{AFX_DATA_INIT(COptionAudio)
m_inputDevice = -1;
m_jitter = 0;
m_micVolume = 0;
m_outputDevice = -1;
m_preferredCodec = -1;
m_silenceDetection = -1;
m_spkVolume = 0;
m_threshold = 0;
//}}AFX_DATA_INIT
}
void COptionAudio::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(COptionAudio)
DDX_Control(pDX, IDC_PREFERRED_CODEC, m_ctlPreferredCodec);
DDX_Control(pDX, IDC_SILENCE_DETECTION, m_ctlSilenceDetection);
DDX_Control(pDX, IDC_OUTPUT_DEVICE, m_ctlOutputDevice);
DDX_Control(pDX, IDC_INPUT_DEVICE, m_ctlInputDevice);
DDX_CBIndex(pDX, IDC_INPUT_DEVICE, m_inputDevice);
DDX_Text(pDX, IDC_JITTER, m_jitter);
DDV_MinMaxDWord(pDX, m_jitter, 30, 1000);
DDX_Slider(pDX, IDC_MIC_VOLUME, m_micVolume);
DDX_CBIndex(pDX, IDC_OUTPUT_DEVICE, m_outputDevice);
DDX_CBIndex(pDX, IDC_PREFERRED_CODEC, m_preferredCodec);
DDX_CBIndex(pDX, IDC_SILENCE_DETECTION, m_silenceDetection);
DDX_Slider(pDX, IDC_SPK_VOLUME, m_spkVolume);
DDX_Text(pDX, IDC_THRESHOLD, m_threshold);
DDV_MinMaxDWord(pDX, m_threshold, 0, 100);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(COptionAudio, CDialog)
//{{AFX_MSG_MAP(COptionAudio)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_MIC_VOLUME, OnReleasedcaptureMicVolume)
ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SPK_VOLUME, OnReleasedcaptureSpkVolume)
ON_CBN_SELCHANGE(IDC_INPUT_DEVICE, OnSelchangeInputDevice)
ON_CBN_SELCHANGE(IDC_OUTPUT_DEVICE, OnSelchangeOutputDevice)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COptionAudio message handlers
BOOL COptionAudio::OnInitDialog()
{
CDialog::OnInitDialog();
DWORD i;
char name[256]="";
//枚举录音设备
for(i=0;i<CAudioRecorder::GetDeviceCount();i++)
{
CAudioRecorder::GetDeviceName(i,name,256);
m_ctlInputDevice.AddString(name);
}
//枚举播放设备
for(i=0;i<CAudioPlayer::GetDeviceCount();i++)
{
CAudioPlayer::GetDeviceName(i,name,256);
m_ctlOutputDevice.AddString(name);
}
m_ctlSilenceDetection.AddString("不使用");
m_ctlSilenceDetection.AddString("手动");
m_ctlSilenceDetection.AddString("自动");
CVISEPDlg *dlg=(CVISEPDlg*)AfxGetMainWnd();
//枚举可用的音频codec
for(i=0;i<dlg->m_pep->GetAudioCodecCount();i++)
{
dlg->m_pep->GetAudioCodecName(i,name,256);
m_ctlPreferredCodec.AddString(name);
}
//打开音量控制
m_volumeIn.Open(m_inputDevice,VOL_IN);
m_micVolume=m_volumeIn.GetVolume();
m_volumeOut.Open(m_outputDevice,VOL_OUT);
m_spkVolume=m_volumeOut.GetVolume();
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void COptionAudio::OnReleasedcaptureMicVolume(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData();
m_volumeIn.SetVolume(m_micVolume);
*pResult = 0;
}
void COptionAudio::OnReleasedcaptureSpkVolume(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData();
m_volumeOut.SetVolume(m_spkVolume);
*pResult = 0;
}
void COptionAudio::OnSelchangeInputDevice()
{
UpdateData();
m_volumeIn.Open(m_inputDevice,VOL_IN);
m_micVolume=m_volumeIn.GetVolume();
UpdateData(FALSE);
}
void COptionAudio::OnSelchangeOutputDevice()
{
UpdateData();
m_volumeOut.Open(m_outputDevice,VOL_OUT);
m_spkVolume=m_volumeOut.GetVolume();
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -