From db86987b6ade7d15ee2bafc8cb42caa0be730c62 Mon Sep 17 00:00:00 2001 From: snt Date: Thu, 23 May 2024 15:53:44 +0200 Subject: [PATCH] muestra nombre de los dispositivos en la UI --- src/audiolayerwidget.cpp | 51 +++++++++++++++++++++++++++++++--- src/audiolayerwidget.h | 7 +++-- src/audiowidget.cpp | 9 ++++++ src/audiowidget.h | 1 + src/libremediaserver-audio.cpp | 4 +++ src/miniaudioengine.cpp | 6 ++++ src/miniaudioengine.h | 8 ++++-- 7 files changed, 76 insertions(+), 10 deletions(-) diff --git a/src/audiolayerwidget.cpp b/src/audiolayerwidget.cpp index 646cb96..7fc467b 100644 --- a/src/audiolayerwidget.cpp +++ b/src/audiolayerwidget.cpp @@ -91,9 +91,39 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer): volumeBox->setSpacing(0); volumeBox->setContentsMargins(0, 0, 0, 0); layout->addLayout(volumeBox); - m_level = new QLabel(); - m_level->setText("0"); - layout->addWidget(m_level); + QHBoxLayout *labelsBox = new QHBoxLayout; + m_level = new QLabel("-inf"); + m_level->setStyleSheet("border: 1px solid #5a4855;" + "margin: 0px;" + "background-color: #180014;" + "color: white;" + "width:70px;" + "text-align: center;" + ); + m_level->setMinimumWidth(70); + m_level->setAlignment(Qt::AlignHCenter); + labelsBox->addWidget(m_level); + m_bus1Label = new QLabel("dummy"); + m_bus1Label->setMinimumWidth(80); + m_bus1Label->setStyleSheet("border: 1px solid #5a4855;" + "margin: 0px;" + "background-color: #383034;" + "width:70px;" + ); + m_bus1Label->setAlignment(Qt::AlignHCenter); + labelsBox->addWidget(m_bus1Label); + m_bus2Label = new QLabel("dummy"); + m_bus2Label->setMinimumWidth(80); + m_bus2Label->setStyleSheet("border: 1px solid #5a4855;" + "margin: 0px;" + "background-color: #383034;" + "width: 70px;" + ); + m_bus2Label->setAlignment(Qt::AlignHCenter); + labelsBox->addWidget(m_bus2Label); + labelsBox->setSpacing(0); + labelsBox->setContentsMargins(0, 0, 0, 0); + layout->addLayout(labelsBox); layout->setAlignment(Qt::AlignHCenter); layout->setSpacing(0); layout->setContentsMargins(1, 1, 1, 1); @@ -255,9 +285,22 @@ void AudioLayerWidget::setFilterParam(int channel, int value) void AudioLayerWidget::setLevel(float db) { m_level->blockSignals(true); - if (db > -200) + if (db > -150) m_level->setText(QString::number(db)); else m_level->setText("-inf"); m_level->blockSignals(false); } + +void AudioLayerWidget::setBusName(uint bus, char *name) +{ + if (bus == 0) { + m_bus1Label->blockSignals(true); + m_bus1Label->setText(name); + m_bus1Label->blockSignals(false); + } else if (bus == 1) { + m_bus2Label->blockSignals(true); + m_bus2Label->setText(name); + m_bus2Label->blockSignals(false); + } +} diff --git a/src/audiolayerwidget.h b/src/audiolayerwidget.h index 0f9517c..bc7010f 100644 --- a/src/audiolayerwidget.h +++ b/src/audiolayerwidget.h @@ -29,6 +29,7 @@ public: void setPitch(int pitch); void setFilterParam(int channel, int value); void setLevel(float db); + void setBusName(uint bus, char *name); private: Status m_status; @@ -37,7 +38,6 @@ private: QPushButton *m_suspendResumeButton; ClickableLabel *m_fileValue; ClickableLabel * m_folderValue; - QLabel *m_level; SliderGroup *m_volume; SliderGroup *m_pan; SliderGroup *m_pitch; @@ -47,8 +47,9 @@ private: QTimeEdit *m_totalTimeValue; QProgressBar *m_progress; FilterBankWidget *m_filterBank; - -//public slots: + QLabel *m_level; + QLabel *m_bus1Label; + QLabel *m_bus2Label; // From Ui private slots: diff --git a/src/audiowidget.cpp b/src/audiowidget.cpp index 98b3a32..8d43127 100644 --- a/src/audiowidget.cpp +++ b/src/audiowidget.cpp @@ -123,3 +123,12 @@ void AudioWidget::levelChanged(int layer, float db) m_layerUpdate[layer].level = db; m_layerUpdate[layer].updated = true; } + +void AudioWidget::busNameChanged(uint bus, char* name) +{ + for (uint i = 0; i < m_layers; i++) { + QLayoutItem *item = m_layout->itemAt(i); + AudioLayerWidget *alw = dynamic_cast(item->widget()); + alw->setBusName(bus, name); + } +} diff --git a/src/audiowidget.h b/src/audiowidget.h index ddb5767..238ead2 100644 --- a/src/audiowidget.h +++ b/src/audiowidget.h @@ -16,6 +16,7 @@ public: AudioWidget(QWidget *parent = nullptr); void filterParamChanged(int layer, int channel, int value); void levelChanged(int layer, float db); + void busNameChanged(uint bus, char *name); private: QHBoxLayout *m_layout; diff --git a/src/libremediaserver-audio.cpp b/src/libremediaserver-audio.cpp index 56b016a..177eec2 100644 --- a/src/libremediaserver-audio.cpp +++ b/src/libremediaserver-audio.cpp @@ -229,6 +229,10 @@ void libreMediaServerAudio::setUi(libreMediaServerAudioUi *lmsUi) connect(m_refreshUi, SIGNAL(timeout()), this, SLOT(refreshUi())); m_refreshUi->start(UI_REFRESH_TIME); m_ola->start(QThread::TimeCriticalPriority ); + for (uint i = 0; i < m_settings->getAudioDeviceQty(); i++) { + char *name = m_mae.getDeviceName(i); + m_lmsUi->m_aw->busNameChanged(i, name); + } }; // From Ui widgets diff --git a/src/miniaudioengine.cpp b/src/miniaudioengine.cpp index 3ea5c1b..292251e 100644 --- a/src/miniaudioengine.cpp +++ b/src/miniaudioengine.cpp @@ -340,6 +340,12 @@ ma_result MiniAudioEngine::getAllAudioDevices() return result; } +char* MiniAudioEngine::getDeviceName(uint id) +{ + return m_mae.pPlaybackDeviceInfos[m_mae.audioDevicesId[id]].name; + +} + ma_result MiniAudioEngine::loadMedia(int layer, char *file, uint audioDevice) { ma_result result; diff --git a/src/miniaudioengine.h b/src/miniaudioengine.h index 89095e6..b97a9e9 100644 --- a/src/miniaudioengine.h +++ b/src/miniaudioengine.h @@ -43,6 +43,7 @@ typedef struct ma_resource_manager resourceManager; ma_context context; ma_device_info* pPlaybackDeviceInfos; + ma_device_info pSelectedPlaybackDeviceInfos[MAX_AUDIODEVICES]; ma_uint32 playbackDeviceCount; ma_uint32 devicesSelected; ma_bool8 mediaLoaded[MAX_LAYERS]; @@ -58,12 +59,12 @@ class MiniAudioEngine friend class libreMediaServerAudio; public: - MiniAudioEngine(); - void stopEngine(); - bool startEngine(uint layersQty, uint* audioDevicesID, uint audioDevicesQty); static void audioDataCallback(ma_device* pDevice, void* pOutput, const void* pInput, ma_uint32 frameCount); protected: + MiniAudioEngine(); + void stopEngine(); + bool startEngine(uint layersQty, uint* audioDevicesID, uint audioDevicesQty); ma_result loadMedia(int layer, char *media, uint audioDevice); void volChanged(int layer, int vol); void panChanged(int layer, float pan); @@ -84,6 +85,7 @@ protected: float level = ma_vumeter_node_get_level(&m_mae.filters[layer].vumeter); return ma_volume_linear_to_db(level); }; + char* getDeviceName(uint id); private: MAE m_mae;