Files
alure/examples/alure-enum.cpp
Chris Robinson 9d5dd392f7 Make the DeviceManager a reference-counted instance
The DeviceManager is destructed when all user-held instance go out of scope
(are deleted). A WeakPtr is maintained for DeviceManager::getInstance() to
return the same instance as long as there's a pre-existing instance.
2017-11-27 17:18:36 -08:00

53 lines
1.9 KiB
C++

/*
* An example showing how to enumerate available devices and show its
* capabilities.
*/
#include <iostream>
#include "alure2.h"
int main(int argc, char *argv[])
{
alure::DeviceManager devMgr = alure::DeviceManager::getInstance();
alure::Vector<alure::String> list;
alure::String defname;
list = devMgr.enumerate(alure::DeviceEnumeration::Basic);
defname = devMgr.defaultDeviceName(alure::DefaultDeviceType::Basic);
std::cout<< "Available basic devices:\n";
for(const auto &name : list)
std::cout<< " "<<name<<((defname==name)?" [DEFAULT]":"") <<'\n';
std::cout<<std::endl;
list = devMgr.enumerate(alure::DeviceEnumeration::Full);
defname = devMgr.defaultDeviceName(alure::DefaultDeviceType::Full);
std::cout<< "Available devices:\n";
for(const auto &name : list)
std::cout<< " "<<name<<((defname==name)?" [DEFAULT]":"") <<'\n';
std::cout<<std::endl;
list = devMgr.enumerate(alure::DeviceEnumeration::Capture);
defname = devMgr.defaultDeviceName(alure::DefaultDeviceType::Capture);
std::cout<< "Available capture devices:\n";
for(const auto &name : list)
std::cout<< " "<<name<<((defname==name)?" [DEFAULT]":"") <<'\n';
std::cout<<std::endl;
alure::Device dev = devMgr.openPlayback((argc > 1) ? argv[1] : "");
std::cout<< "Info for device \""<<dev.getName(alure::PlaybackName::Full)<<"\":" <<std::endl;
alure::Version version = dev.getALCVersion();
std::cout<< "ALC version: "<<version.getMajor()<<"."<<version.getMinor() <<std::endl;
version = dev.getEFXVersion();
if(!version.isZero())
{
std::cout<< "EFX version: "<<version.getMajor()<<"."<<version.getMinor() <<'\n';
std::cout<< "Max auxiliary sends: "<<dev.getMaxAuxiliarySends() <<std::endl;
}
else
std::cout<< "EFX not supported" <<std::endl;
dev.close();
return 0;
}