AudioInputPtr AudioInputRegistrar::newFromChoice(QString choice) { if (! qmNew) return AudioInputPtr(); if (!choice.isEmpty() && qmNew->contains(choice)) { g.s.qsAudioInput = choice; current = choice; return AudioInputPtr(qmNew->value(current)->create()); } choice = g.s.qsAudioInput; if (qmNew->contains(choice)) { current = choice; return AudioInputPtr(qmNew->value(choice)->create()); } AudioInputRegistrar *r = NULL; foreach(AudioInputRegistrar *air, *qmNew) if (!r || (air->priority > r->priority)) r = air; if (r) { current = r->name; return AudioInputPtr(r->create()); } return AudioInputPtr(); }
//选择一个新的采集器 directsound or wasapi AudioInputPtr AudioInputRegistrar::newFromChoice(wstring choice) { if (! qmNew) return AudioInputPtr(); if (!choice.empty() && qmNew->find(choice) != qmNew->end()) { g_struct.s.qsAudioInput = choice; current = choice; AudioInputRegistrar * air = qmNew->find(current)->second; return AudioInputPtr(air->create()); } choice = g_struct.s.qsAudioInput; if (qmNew->find(choice) != qmNew->end()) { current = choice; return AudioInputPtr(qmNew->find(choice)->second->create()); } AudioInputRegistrar *r = NULL; std::map<wstring, AudioInputRegistrar *>::iterator mit; for (mit = qmNew->begin(); mit != qmNew->end(); mit++) { if (!r || (mit->second->priority > r->priority)) r = mit->second; } if (r) { current = r->name; g_struct.s.qsAudioInput = current; return AudioInputPtr(r->create()); } return AudioInputPtr(); }
bool Settings::doEcho() const { if (AudioInputRegistrar::qmNew.size()>0) { AudioInputRegistrar *air = AudioInputRegistrar::qmNew.find(qsAudioInput)->second; if (air) { if (air->canEcho(qsAudioOutput)) return true; } } return false; }
std::vector<wstring> AudioInputEngine::GetAudioInputDevice() { if (lstrInputDevice.size() != 0) { return lstrInputDevice; } if (/*AudioInputRegistrar::qmNew && */AudioInputRegistrar::qmNew.find(g_struct.s.strSysSelected) != AudioInputRegistrar::qmNew.end()) { AudioInputRegistrar *air = AudioInputRegistrar::qmNew.find(g_struct.s.strSysSelected)->second; std::vector<audioDevice> ql = air->getDeviceChoices(); for (std::vector<audioDevice>::iterator lit = ql.begin(); lit != ql.end(); lit++) { lstrInputDevice.push_back(lit->first); } } return lstrInputDevice; }
void AudioInputEngine::SetAudioDevice(int iInputDevice) { if (iInputDevice != -1) { //������Ƶ�豸�����ڵ��±��� int iDevice = iInputDevice; AudioInputRegistrar *air = AudioInputRegistrar::qmNew.find(g_struct.s.strSysSelected)->second; std::vector<audioDevice> ql = air->getDeviceChoices(); if (ql.size() == 0) { return; } else if (iDevice >= ql.size()) { iDevice = 0; } air->setDeviceChoice(ql[iDevice].second,g_struct.s); } }