void AudioConfigSettings::AudioAdvanced() { QString out = m_OutputDevice->getValue(); bool invalid = false; AudioOutputSettings settings; if (!audiodevs.contains(out)) { invalid = true; } else { settings = audiodevs.value(out).settings; } AudioAdvancedSettingsGroup audiosettings(invalid || (settings.canLPCM() && settings.canPassthrough() >= 0)); if (audiosettings.exec() == kDialogCodeAccepted) { AudioRescan(); UpdateCapabilities(QString::null); } }
void AudioConfigSettings::AudioAdvanced() { QString out = m_OutputDevice->getValue(); bool invalid = false; AudioOutputSettings settings; if (!audiodevs.contains(out)) { invalid = true; } else { settings = audiodevs.value(out).settings; } bool LPCM1 = settings.canFeature(FEATURE_LPCM) && gCoreContext->GetNumSetting("StereoPCM", false); AudioAdvancedSettingsGroup audiosettings(invalid || (settings.canPassthrough() >= 0)); if (audiosettings.exec() == kDialogCodeAccepted) { // Rescan audio list to check of override digital device AudioRescan(); bool LPCM2 = settings.canFeature(FEATURE_LPCM) && gCoreContext->GetNumSetting("StereoPCM", false); // restore speakers configure only of StereoPCM has changed and // we have LPCM capabilities UpdateCapabilities(QString::null, LPCM1 != LPCM2); } }
AudioConfigSettings::AudioConfigSettings(ConfigurationWizard *parent) : VerticalConfigurationGroup(false, true, false, false), m_OutputDevice(NULL), m_MaxAudioChannels(NULL), m_AudioUpmix(NULL), m_AudioUpmixType(NULL), m_AC3PassThrough(NULL), m_DTSPassThrough(NULL), m_EAC3PassThrough(NULL),m_TrueHDPassThrough(NULL), m_DTSHDPassThrough(NULL), m_parent(parent) { setLabel(QObject::tr("Audio System")); setUseLabel(false); ConfigurationGroup *devicegroup = new HorizontalConfigurationGroup(false, false); devicegroup->addChild((m_OutputDevice = new AudioDeviceComboBox(this))); // Rescan button TransButtonSetting *rescan = new TransButtonSetting("rescan"); rescan->setLabel(QObject::tr("Rescan")); rescan->setHelpText(QObject::tr("Rescan for available audio devices. " "Current entry will be checked and " "capability entries populated.")); devicegroup->addChild(rescan); connect(rescan, SIGNAL(pressed()), this, SLOT(AudioRescan())); addChild(devicegroup); QString name = m_OutputDevice->getValue(); AudioOutput::AudioDeviceConfig *adc = AudioOutput::GetAudioDeviceConfig(name, name, true); if (adc->settings.IsInvalid()) { LOG(VB_GENERAL, LOG_ERR, QString("Audio device %1 isn't usable Check audio configuration") .arg(name)); } audiodevs.insert(name, *adc); devices.append(*adc); delete adc; ConfigurationGroup *maingroup = new VerticalConfigurationGroup(false, false); addChild(maingroup); m_triggerDigital = new TransCheckBoxSetting(); m_AC3PassThrough = AC3PassThrough(); m_DTSPassThrough = DTSPassThrough(); m_EAC3PassThrough = EAC3PassThrough(); m_TrueHDPassThrough = TrueHDPassThrough(); m_DTSHDPassThrough = DTSHDPassThrough(); m_cgsettings = new HorizontalConfigurationGroup(); m_cgsettings->setLabel(QObject::tr("Digital Audio Capabilities")); m_cgsettings->addChild(m_AC3PassThrough); m_cgsettings->addChild(m_DTSPassThrough); m_cgsettings->addChild(m_EAC3PassThrough); m_cgsettings->addChild(m_TrueHDPassThrough); m_cgsettings->addChild(m_DTSHDPassThrough); TriggeredItem *sub1 = new TriggeredItem(m_triggerDigital, m_cgsettings); maingroup->addChild(sub1); maingroup->addChild((m_MaxAudioChannels = MaxAudioChannels())); maingroup->addChild((m_AudioUpmix = AudioUpmix())); maingroup->addChild((m_AudioUpmixType = AudioUpmixType())); TransButtonSetting *test = new TransButtonSetting("test"); test->setLabel(QObject::tr("Test")); test->setHelpText(QObject::tr("Will play a test pattern on all configured " "speakers")); connect(test, SIGNAL(pressed()), this, SLOT(StartAudioTest())); addChild(test); TransButtonSetting *advanced = new TransButtonSetting("advanced"); advanced->setLabel(QObject::tr("Advanced Audio Settings")); advanced->setHelpText(QObject::tr("Enable extra audio settings. Under most " "usage all options should be left alone")); connect(advanced, SIGNAL(pressed()), this, SLOT(AudioAdvanced())); addChild(advanced); // Set slots connect(m_MaxAudioChannels, SIGNAL(valueChanged(const QString&)), this, SLOT(UpdateVisibility(const QString&))); connect(m_OutputDevice, SIGNAL(valueChanged(const QString&)), this, SLOT(UpdateCapabilities(const QString&))); connect(m_AC3PassThrough, SIGNAL(valueChanged(const QString&)), this, SLOT(UpdateCapabilities(const QString&))); connect(m_DTSPassThrough, SIGNAL(valueChanged(const QString&)), this, SLOT(UpdateCapabilities(const QString&))); connect(m_EAC3PassThrough, SIGNAL(valueChanged(const QString&)), this, SLOT(UpdateCapabilities(const QString&))); connect(m_TrueHDPassThrough, SIGNAL(valueChanged(const QString&)), this, SLOT(UpdateCapabilities(const QString&))); connect(m_DTSHDPassThrough, SIGNAL(valueChanged(const QString&)), this, SLOT(UpdateCapabilities(const QString&))); AudioRescan(); }