예제 #1
0
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();
}
예제 #2
0
파일: AudioInput.cpp 프로젝트: fffonion/V8
//选择一个新的采集器 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();
}
예제 #3
0
파일: Settings.cpp 프로젝트: fffonion/V8
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;
}
예제 #4
0
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;

}
예제 #5
0
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);
    }
}