muestra nombre de los dispositivos en la UI

This commit is contained in:
snt 2024-05-23 15:53:44 +02:00
parent 53bcb38455
commit db86987b6a
7 changed files with 76 additions and 10 deletions

View file

@ -91,9 +91,39 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, int layer):
volumeBox->setSpacing(0); volumeBox->setSpacing(0);
volumeBox->setContentsMargins(0, 0, 0, 0); volumeBox->setContentsMargins(0, 0, 0, 0);
layout->addLayout(volumeBox); layout->addLayout(volumeBox);
m_level = new QLabel(); QHBoxLayout *labelsBox = new QHBoxLayout;
m_level->setText("0"); m_level = new QLabel("-inf");
layout->addWidget(m_level); 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->setAlignment(Qt::AlignHCenter);
layout->setSpacing(0); layout->setSpacing(0);
layout->setContentsMargins(1, 1, 1, 1); layout->setContentsMargins(1, 1, 1, 1);
@ -255,9 +285,22 @@ void AudioLayerWidget::setFilterParam(int channel, int value)
void AudioLayerWidget::setLevel(float db) void AudioLayerWidget::setLevel(float db)
{ {
m_level->blockSignals(true); m_level->blockSignals(true);
if (db > -200) if (db > -150)
m_level->setText(QString::number(db)); m_level->setText(QString::number(db));
else else
m_level->setText("-inf"); m_level->setText("-inf");
m_level->blockSignals(false); 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);
}
}

View file

@ -29,6 +29,7 @@ public:
void setPitch(int pitch); void setPitch(int pitch);
void setFilterParam(int channel, int value); void setFilterParam(int channel, int value);
void setLevel(float db); void setLevel(float db);
void setBusName(uint bus, char *name);
private: private:
Status m_status; Status m_status;
@ -37,7 +38,6 @@ private:
QPushButton *m_suspendResumeButton; QPushButton *m_suspendResumeButton;
ClickableLabel *m_fileValue; ClickableLabel *m_fileValue;
ClickableLabel * m_folderValue; ClickableLabel * m_folderValue;
QLabel *m_level;
SliderGroup *m_volume; SliderGroup *m_volume;
SliderGroup *m_pan; SliderGroup *m_pan;
SliderGroup *m_pitch; SliderGroup *m_pitch;
@ -47,8 +47,9 @@ private:
QTimeEdit *m_totalTimeValue; QTimeEdit *m_totalTimeValue;
QProgressBar *m_progress; QProgressBar *m_progress;
FilterBankWidget *m_filterBank; FilterBankWidget *m_filterBank;
QLabel *m_level;
//public slots: QLabel *m_bus1Label;
QLabel *m_bus2Label;
// From Ui // From Ui
private slots: private slots:

View file

@ -123,3 +123,12 @@ void AudioWidget::levelChanged(int layer, float db)
m_layerUpdate[layer].level = db; m_layerUpdate[layer].level = db;
m_layerUpdate[layer].updated = true; 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<AudioLayerWidget *>(item->widget());
alw->setBusName(bus, name);
}
}

View file

@ -16,6 +16,7 @@ public:
AudioWidget(QWidget *parent = nullptr); AudioWidget(QWidget *parent = nullptr);
void filterParamChanged(int layer, int channel, int value); void filterParamChanged(int layer, int channel, int value);
void levelChanged(int layer, float db); void levelChanged(int layer, float db);
void busNameChanged(uint bus, char *name);
private: private:
QHBoxLayout *m_layout; QHBoxLayout *m_layout;

View file

@ -229,6 +229,10 @@ void libreMediaServerAudio::setUi(libreMediaServerAudioUi *lmsUi)
connect(m_refreshUi, SIGNAL(timeout()), this, SLOT(refreshUi())); connect(m_refreshUi, SIGNAL(timeout()), this, SLOT(refreshUi()));
m_refreshUi->start(UI_REFRESH_TIME); m_refreshUi->start(UI_REFRESH_TIME);
m_ola->start(QThread::TimeCriticalPriority ); 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 // From Ui widgets

View file

@ -340,6 +340,12 @@ ma_result MiniAudioEngine::getAllAudioDevices()
return result; 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 MiniAudioEngine::loadMedia(int layer, char *file, uint audioDevice)
{ {
ma_result result; ma_result result;

View file

@ -43,6 +43,7 @@ typedef struct
ma_resource_manager resourceManager; ma_resource_manager resourceManager;
ma_context context; ma_context context;
ma_device_info* pPlaybackDeviceInfos; ma_device_info* pPlaybackDeviceInfos;
ma_device_info pSelectedPlaybackDeviceInfos[MAX_AUDIODEVICES];
ma_uint32 playbackDeviceCount; ma_uint32 playbackDeviceCount;
ma_uint32 devicesSelected; ma_uint32 devicesSelected;
ma_bool8 mediaLoaded[MAX_LAYERS]; ma_bool8 mediaLoaded[MAX_LAYERS];
@ -58,12 +59,12 @@ class MiniAudioEngine
friend class libreMediaServerAudio; friend class libreMediaServerAudio;
public: 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); static void audioDataCallback(ma_device* pDevice, void* pOutput, const void* pInput, ma_uint32 frameCount);
protected: protected:
MiniAudioEngine();
void stopEngine();
bool startEngine(uint layersQty, uint* audioDevicesID, uint audioDevicesQty);
ma_result loadMedia(int layer, char *media, uint audioDevice); ma_result loadMedia(int layer, char *media, uint audioDevice);
void volChanged(int layer, int vol); void volChanged(int layer, int vol);
void panChanged(int layer, float pan); void panChanged(int layer, float pan);
@ -84,6 +85,7 @@ protected:
float level = ma_vumeter_node_get_level(&m_mae.filters[layer].vumeter); float level = ma_vumeter_node_get_level(&m_mae.filters[layer].vumeter);
return ma_volume_linear_to_db(level); return ma_volume_linear_to_db(level);
}; };
char* getDeviceName(uint id);
private: private:
MAE m_mae; MAE m_mae;