InputMappingDialog::InputMappingDialog()
: ui(new Ui::InputMappingDialog),
- mapping(global_mixer->get_audio_mixer()->get_input_mapping()),
+ mapping(global_audio_mixer->get_input_mapping()),
old_mapping(mapping),
- card_names(global_mixer->get_audio_mixer()->get_names())
+ devices(global_audio_mixer->get_devices())
{
ui->setupUi(this);
ui->table->setSelectionBehavior(QAbstractItemView::SelectRows);
QComboBox *card_combo = new QComboBox;
unsigned current_index = 0;
card_combo->addItem(QString("(none) "));
- for (const auto &spec_and_name : card_names) {
+ for (const auto &spec_and_info : devices) {
+ QString label(QString::fromStdString(spec_and_info.second.name));
+ if (spec_and_info.first.type == InputSourceType::ALSA_INPUT) {
+ ALSAPool::Device::State state = global_audio_mixer->get_alsa_card_state(spec_and_info.first.index);
+ if (state == ALSAPool::Device::State::EMPTY) {
+ continue;
+ } else if (state == ALSAPool::Device::State::STARTING) {
+ label += " (busy)";
+ } else if (state == ALSAPool::Device::State::DEAD) {
+ label += " (dead)";
+ }
+ }
++current_index;
card_combo->addItem(
- QString::fromStdString(spec_and_name.second + " "),
- qulonglong(DeviceSpec_to_key(spec_and_name.first)));
- if (bus.device == spec_and_name.first) {
+ label + " ",
+ qulonglong(DeviceSpec_to_key(spec_and_info.first)));
+ if (bus.device == spec_and_info.first) {
card_combo->setCurrentIndex(current_index);
}
}
for (unsigned channel = 0; channel < 2; ++channel) {
QComboBox *channel_combo = new QComboBox;
channel_combo->addItem(QString("(none)"));
- if (bus.device.type == InputSourceType::CAPTURE_CARD) {
- for (unsigned source = 0; source < 8; ++source) { // TODO: Ask the card about number of channels, and names.
+ if (bus.device.type == InputSourceType::CAPTURE_CARD ||
+ bus.device.type == InputSourceType::ALSA_INPUT) {
+ auto device_it = devices.find(bus.device);
+ assert(device_it != devices.end());
+ unsigned num_device_channels = device_it->second.num_channels;
+ for (unsigned source = 0; source < num_device_channels; ++source) {
char buf[256];
snprintf(buf, sizeof(buf), "Channel %u ", source + 1);
channel_combo->addItem(QString(buf));
void InputMappingDialog::ok_clicked()
{
- global_mixer->get_audio_mixer()->set_input_mapping(mapping);
+ global_audio_mixer->set_input_mapping(mapping);
accept();
}
void InputMappingDialog::cancel_clicked()
{
- global_mixer->get_audio_mixer()->set_input_mapping(old_mapping);
+ global_audio_mixer->set_input_mapping(old_mapping);
reject();
}