示例#1
0
const std::vector<InputDeviceRef>& InputImplAudioUnit::getDevices( bool forceRefresh )
{
	if( forceRefresh || ! sDevicesEnumerated ) {
		sDevices.clear();
		
		UInt32 propSize;
		AudioHardwareGetPropertyInfo( kAudioHardwarePropertyDevices, &propSize, NULL );
		uint32_t deviceCount = ( propSize / sizeof(AudioDeviceID) );
		AudioDeviceID deviceIds[deviceCount];
		AudioHardwareGetProperty( kAudioHardwarePropertyDevices, &propSize, &deviceIds );
		
		for( uint32_t i = 0; i < deviceCount; i++ ) {
			try {
				InputDeviceRef aDevice = InputDeviceRef( new Device( deviceIds[i] ) );
				sDevices.push_back( aDevice );
			} catch( InvalidDeviceInputExc ) {
				continue;
			}
		}
		
		sDevicesEnumerated = true;
	}
	
	return sDevices;
}
示例#2
0
const std::vector<InputDeviceRef>& InputImplAudioUnit::getDevices( bool forceRefresh )
{
	if( forceRefresh || ! sDevicesEnumerated ) {
		sDevices.clear();
		sDevices.push_back( InputDeviceRef( new InputImplAudioUnit::Device() ) );
		sDevicesEnumerated = true;
	}
	return sDevices;
}
示例#3
0
文件: Input.cpp 项目: AKS2346/Cinder
InputDeviceRef Input::findDeviceByNameContains( const std::string &nameFragment )
{
	const std::vector<InputDeviceRef>& devices = getDevices();
	for (size_t i = 0; i < devices.size(); ++i) {
		if (devices[i]->getName().find(nameFragment) != std::string::npos)
			return devices[i];
	}
	return InputDeviceRef();
}
示例#4
0
文件: Input.cpp 项目: AKS2346/Cinder
InputDeviceRef Input::findDeviceByName( const std::string &name )
{
	const std::vector<InputDeviceRef>& devices = getDevices();
	for (size_t i = 0; i < devices.size(); ++i) {
		if (devices[i]->getName() == name)
			return devices[i];
	}
	return InputDeviceRef();
}
示例#5
0
InputDeviceRef InputImplAudioUnit::getDefaultDevice()
{	
	AudioDeviceID aDeviceId;
	UInt32 param = sizeof( AudioDeviceID );
	OSStatus err = AudioHardwareGetProperty( kAudioHardwarePropertyDefaultInputDevice, &param, &aDeviceId );
	if( err != noErr ) {
		//TODO
		std::cout << "Error getting default device" << std::endl;
		throw;
	}
	return InputDeviceRef( new InputImplAudioUnit::Device( aDeviceId ) );
}
示例#6
0
InputDeviceRef Input::findDeviceByNameContains( const std::string &nameFragment )
{
	return InputDeviceRef();
}
示例#7
0
InputDeviceRef Input::findDeviceByName( const std::string &name )
{
	return InputDeviceRef();
}
示例#8
0
Input::Input()
{
	mImpl = std::shared_ptr<InputImpl>( new InputPlatformImpl( InputDeviceRef() ) );
}
示例#9
0
InputDeviceRef InputImplAudioUnit::getDefaultDevice()
{
	return InputDeviceRef( new InputImplAudioUnit::Device() );
}