Cleaned old code. Changed the GUI refresh. Now there is a global receive

dmx instead one by layer
This commit is contained in:
santi 2014-08-13 22:51:25 +02:00
parent 90f3b093c0
commit d7db568784
10 changed files with 78 additions and 67 deletions

View file

@ -7,14 +7,14 @@
#include <QFile> #include <QFile>
#include <QTime> #include <QTime>
#include <time.h> // nanosleep y la chapuza de liberar el buffer //#include <time.h> // nanosleep y la chapuza de liberar el buffer
AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name): AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
QGroupBox(parent) QGroupBox(parent)
, m_suspendResumeButton(0) , m_suspendResumeButton(0)
, m_watchDMX(new QTimer(this)) , m_watchDMX(new QTimer(this))
, m_progressCounter(new QTime(0,0,0,1)) // , m_progressCounter(new QTime(0,0,0,1))
, m_progressMs(0) // , m_progressMs(0)
, m_currentMedia(" ") , m_currentMedia(" ")
, m_running(false) , m_running(false)
{ {
@ -26,9 +26,9 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
m_statusLabel = new QLabel; m_statusLabel = new QLabel;
m_statusLabel->setText(STATUS_LABEL); m_statusLabel->setText(STATUS_LABEL);
m_statusValue = new QLabel; m_statusValue = new QLabel;
m_receiveDMX = new QCheckBox("Receiving DMX", this); // m_receiveDMX = new QCheckBox("Receiving DMX", this);
m_receiveDMX->setChecked(false); // m_receiveDMX->setChecked(false);
status->addWidget(m_receiveDMX); // status->addWidget(m_receiveDMX);
status->addWidget(m_statusLabel); status->addWidget(m_statusLabel);
status->addWidget(m_statusValue); status->addWidget(m_statusValue);
layout->addLayout(status); layout->addLayout(status);
@ -37,7 +37,7 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
m_folderLabel = new QLabel; m_folderLabel = new QLabel;
m_folderLabel->setText(FOLDER_LABEL); m_folderLabel->setText(FOLDER_LABEL);
m_folderValue = new QLabel; m_folderValue = new QLabel;
m_folderValue->setMaximumWidth(250); m_folderValue->setMaximumWidth(200);
folderLoaded->addWidget(m_folderLabel); folderLoaded->addWidget(m_folderLabel);
folderLoaded->addWidget(m_folderValue); folderLoaded->addWidget(m_folderValue);
layout->addLayout(folderLoaded); layout->addLayout(folderLoaded);
@ -46,7 +46,7 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
m_fileLabel = new QLabel; m_fileLabel = new QLabel;
m_fileLabel->setText(FILE_LABEL); m_fileLabel->setText(FILE_LABEL);
m_fileValue = new QLabel; m_fileValue = new QLabel;
m_fileValue->setMaximumWidth(250); m_fileValue->setMaximumWidth(200);
fileLoaded->addWidget(m_fileLabel); fileLoaded->addWidget(m_fileLabel);
fileLoaded->addWidget(m_fileValue); fileLoaded->addWidget(m_fileValue);
layout->addLayout(fileLoaded); layout->addLayout(fileLoaded);
@ -102,7 +102,7 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
connect(m_watchDMX, SIGNAL(timeout()), connect(m_watchDMX, SIGNAL(timeout()),
this, SLOT(watchDMXExpired())); this, SLOT(watchDMXExpired()));
m_watchDMX->start(123); m_watchDMX->start(243);
} }
AudioLayerWidget::~AudioLayerWidget() AudioLayerWidget::~AudioLayerWidget()
@ -141,7 +141,7 @@ void AudioLayerWidget::loadMedia(QString file)
} }
m_music.setAttenuation(0); m_music.setAttenuation(0);
m_progressCounter->restart(); // m_progressCounter->restart();
durationChanged(m_music.getDuration().asMilliseconds()); durationChanged(m_music.getDuration().asMilliseconds());
fileLoaded(file); fileLoaded(file);
@ -160,15 +160,15 @@ void AudioLayerWidget::fileLoaded(QString file)
m_folderValue->setText(list.at(size - 2)); m_folderValue->setText(list.at(size - 2));
m_fileValue->setText(list.at(size - 1)); m_fileValue->setText(list.at(size - 1));
} }
m_progressMs = 0; // m_progressMs = 0;
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs)); // m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs));
} }
/*
void AudioLayerWidget::notified() void AudioLayerWidget::notified()
{ {
} }
*/
// duration in miliseconds // duration in miliseconds
void AudioLayerWidget::durationChanged(qint64 dur) void AudioLayerWidget::durationChanged(qint64 dur)
{ {
@ -179,13 +179,13 @@ void AudioLayerWidget::durationChanged(qint64 dur)
void AudioLayerWidget::play() void AudioLayerWidget::play()
{ {
m_music.play(); m_music.play();
m_progressCounter->restart(); // m_progressCounter->restart();
} }
void AudioLayerWidget::pause() void AudioLayerWidget::pause()
{ {
m_music.pause(); m_music.pause();
m_progressCounter->restart(); // m_progressCounter->restart();
} }
void AudioLayerWidget::stop() void AudioLayerWidget::stop()
@ -194,34 +194,45 @@ void AudioLayerWidget::stop()
} }
void AudioLayerWidget::watchDMXExpired() { void AudioLayerWidget::watchDMXExpired() {
m_receiveDMX->setChecked(false); // m_receiveDMX->setChecked(false);
int progress;
switch (m_music.getStatus()) { switch (m_music.getStatus()) {
case sf::SoundSource::Playing: case sf::SoundSource::Playing:
m_progressMs += m_progressCounter->restart(); // m_progressMs += m_progressCounter->restart();
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs)); progress = m_music.getPlayingOffset().asMilliseconds();
m_progressSlider->setValue(progress);
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(progress));
m_statusValue->setText(PLAY_LABEL); m_statusValue->setText(PLAY_LABEL);
m_progressSlider->setValue(m_progressMs); m_suspendResumeButton->setText(tr(PLAY_LABEL));
break; break;
case sf::SoundSource::Paused: case sf::SoundSource::Paused:
m_statusValue->setText(PAUSE_LABEL); m_statusValue->setText(PAUSE_LABEL);
m_suspendResumeButton->setText(tr(SUSPEND_LABEL));
break; break;
case sf::SoundSource::Stopped: case sf::SoundSource::Stopped:
m_progressCounter->restart(); // m_progressCounter->restart();
m_progressMs = 0; // m_progressMs = 0;
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs)); m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(0));
m_statusValue->setText(STOP_LABEL); m_statusValue->setText(STOP_LABEL);
m_progressSlider->setValue(m_progressMs); m_suspendResumeButton->setText(tr(SUSPEND_LABEL));
m_progressSlider->setValue(0);
break; break;
} }
} }
/*
void AudioLayerWidget::updateWatchDMX(bool b) void AudioLayerWidget::updateWatchDMX(bool b)
{ {
m_receiveDMX->setChecked(b); // m_receiveDMX->setChecked(b);
} }
*/
void AudioLayerWidget::toggleSuspendResume() void AudioLayerWidget::toggleSuspendResume()
{ {
if (m_music.getStatus() == sf::SoundSource::Playing) {
m_music.pause();
// m_suspendResumeButton->setText(tr(SUSPEND_LABEL));
} else {
m_music.play();
// m_suspendResumeButton->setText(tr(PLAY_LABEL));
}
} }

View file

@ -32,7 +32,7 @@ public:
void pause(); void pause();
void setVol(qreal vol); void setVol(qreal vol);
void resume(); void resume();
void updateWatchDMX(bool b); // void updateWatchDMX(bool b);
public slots: public slots:
@ -66,8 +66,8 @@ private:
QCheckBox *m_receiveDMX; QCheckBox *m_receiveDMX;
QTimer *m_watchDMX; QTimer *m_watchDMX;
QTime *m_progressCounter; // QTime *m_progressCounter;
quint64 m_progressMs; // quint64 m_progressMs;
QString m_currentMedia; QString m_currentMedia;
@ -76,7 +76,7 @@ private:
sf::Music m_music; sf::Music m_music;
private slots: private slots:
void notified(); // void notified();
void fileLoaded(QString file); void fileLoaded(QString file);
void durationChanged(qint64 dur); void durationChanged(qint64 dur);
void watchDMXExpired(); void watchDMXExpired();

View file

@ -38,3 +38,4 @@ void AudioMasterWidget::updateWatchDMX()
{ {
m_receiveDMX->setChecked(true); m_receiveDMX->setChecked(true);
} }

View file

@ -42,9 +42,9 @@ void AudioWidget::playbackChanged(int layer, Status status)
break; break;
} }
} }
/*
void AudioWidget::layerReceived(int layer) void AudioWidget::layerReceived(int layer)
{ {
QLayoutItem * const item = layout->itemAt(layer); QLayoutItem * const item = layout->itemAt(layer);
dynamic_cast<AudioLayerWidget *>(item->widget())->updateWatchDMX(true); dynamic_cast<AudioLayerWidget *>(item->widget())->updateWatchDMX(true);
} }*/

View file

@ -26,7 +26,7 @@ public slots:
void mediaLoaded(int layer, QString media ); void mediaLoaded(int layer, QString media );
void volChanged(int layer, qreal vol); void volChanged(int layer, qreal vol);
void playbackChanged(int layer, Status status); void playbackChanged(int layer, Status status);
void layerReceived(int layer); // void layerReceived(int layer);
}; };
#endif // AUDIOWIDGET_H #endif // AUDIOWIDGET_H

View file

@ -18,7 +18,7 @@
*/ */
#include "libremediaserver-audio.h" #include "libremediaserver-audio.h"
QTextEdit * libreMediaServerAudio::textEdit = 0; // QTextEdit * libreMediaServerAudio::textEdit = 0;
/** /**
/ Constructor / Constructor
@ -33,7 +33,7 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent)
// Inicia la lectura de dmx a través de ola // Inicia la lectura de dmx a través de ola
ola = new olaThread(); ola = new olaThread();
Q_CHECK_PTR(ola); Q_CHECK_PTR(ola);
/*
if (args.contains("-log")) { if (args.contains("-log")) {
// Inicia el widget Terminal // Inicia el widget Terminal
textEdit = new QTextEdit; textEdit = new QTextEdit;
@ -44,7 +44,16 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent)
addDockWidget(Qt::BottomDockWidgetArea, bottomWidget); addDockWidget(Qt::BottomDockWidgetArea, bottomWidget);
connect(ola, SIGNAL(toTerminal(QString)), connect(ola, SIGNAL(toTerminal(QString)),
textEdit, SLOT(append(QString)), Qt::QueuedConnection); textEdit, SLOT(append(QString)), Qt::QueuedConnection);
} }*/
/* connect(MediaLibrary::getInstance(), SIGNAL(debug(QString)),
textEdit, SLOT(append(QString)), Qt::QueuedConnection);
connect(MediaLibrary::getInstance(), SIGNAL(warning(QString)),
textEdit, SLOT(append(QString)), Qt::QueuedConnection);
*/
this->setWindowTitle(VERSION); this->setWindowTitle(VERSION);
// qDebug() << QDate::currentDate().toString() << " "<< QTime::currentTime().toString(); // qDebug() << QDate::currentDate().toString() << " "<< QTime::currentTime().toString();
@ -60,12 +69,6 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent)
ola->blockSignals(true); ola->blockSignals(true);
ola->start(QThread::TimeCriticalPriority ); ola->start(QThread::TimeCriticalPriority );
/* connect(MediaLibrary::getInstance(), SIGNAL(debug(QString)),
textEdit, SLOT(append(QString)), Qt::QueuedConnection);
connect(MediaLibrary::getInstance(), SIGNAL(warning(QString)),
textEdit, SLOT(append(QString)), Qt::QueuedConnection);
*/
// Inicia el widget Master. // Inicia el widget Master.
amw = new AudioMasterWidget(this); amw = new AudioMasterWidget(this);
QDockWidget *topWidget = new QDockWidget(tr("Master"), this); QDockWidget *topWidget = new QDockWidget(tr("Master"), this);
@ -85,8 +88,8 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent)
ola, SLOT( setLayersNumber(int))); ola, SLOT( setLayersNumber(int)));
connect(set, SIGNAL( DMXConf(dmxSetting ) ), connect(set, SIGNAL( DMXConf(dmxSetting ) ),
ola, SLOT( setDMXConf(dmxSetting) ) ); ola, SLOT( setDMXConf(dmxSetting) ) );
connect(ola, SIGNAL (layerReceived(int)), connect(ola, SIGNAL (layerReceived()),
aw, SLOT(layerReceived(int))); amw, SLOT(updateWatchDMX()));
// Lee la configuración por defecto // Lee la configuración por defecto
set->readDefaultFile(); set->readDefaultFile();
@ -224,7 +227,7 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
/** /**
* Send the DMX info to Pure Data in init * Send the DMX info to Pure Data in init
* *
*/ *
void libreMediaServerAudio::loadbang() { void libreMediaServerAudio::loadbang() {
ola->resendDmx(); ola->resendDmx();
} }*/

View file

@ -26,7 +26,7 @@
#include <QFileDialog> #include <QFileDialog>
#include <QTextStream> #include <QTextStream>
#include <QWebView> #include <QWebView>
#include <QUrl> //#include <QUrl>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QTextEdit> #include <QTextEdit>
@ -51,7 +51,7 @@ public:
Ui::LibreMediaServerAudio ui; Ui::LibreMediaServerAudio ui;
static QTextEdit *textEdit; // Terminal de feedback // static QTextEdit *textEdit; // Terminal de feedback
protected: protected:
@ -74,11 +74,7 @@ public slots:
private slots: private slots:
/** // void loadbang();
* @brief loadbang The audio motor engine is setup. Resend the dmx info to maintain aupdated to the current state
*/
void loadbang();
void olasetup(); void olasetup();
void dmxInput(int layer, int channel, int value); void dmxInput(int layer, int channel, int value);

View file

@ -19,16 +19,16 @@
*/ */
#include <QApplication> #include <QApplication>
#include <QMutex> //#include <QMutex>
#include <QMutexLocker> //#include <QMutexLocker>
#include "libremediaserver-audio.h" #include "libremediaserver-audio.h"
// Handler for pipe the stderr to a log file and texEdit // Handler for pipe the stderr to a log file and texEdit
bool initMessageHandler = false; //bool initMessageHandler = false;
QFile outFile; //QFile outFile;
QMutex mutex; //QMutex mutex;
//QMutexLocker mutexLocker(mutex); //QMutexLocker mutexLocker(mutex);
/*
void MessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) void MessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{ {
Q_UNUSED(context); Q_UNUSED(context);
@ -56,7 +56,7 @@ void MessageHandler(QtMsgType type, const QMessageLogContext &context, const QSt
initMessageHandler = true; initMessageHandler = true;
} }
QTextStream ts(&outFile);*/ QTextStream ts(&outFile);*/
if (libreMediaServerAudio::textEdit == 0) /* if (libreMediaServerAudio::textEdit == 0)
{ {
QByteArray localMsg = msg.toLocal8Bit(); QByteArray localMsg = msg.toLocal8Bit();
switch (type) { switch (type) {
@ -134,7 +134,7 @@ void MessageHandler(QtMsgType type, const QMessageLogContext &context, const QSt
// libreMediaServerAudio::textEdit->append(txt); // libreMediaServerAudio::textEdit->append(txt);
} }
// mutex.unlock(); // mutex.unlock();
} }*/
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
@ -145,7 +145,7 @@ int main(int argc, char *argv[])
{ {
qInstallMessageHandler(MessageHandler); qInstallMessageHandler(MessageHandler);
}*/ }*/
qInstallMessageHandler(MessageHandler); // qInstallMessageHandler(MessageHandler);
QApplication app(argc, argv); QApplication app(argc, argv);
QStringList args = app.arguments(); QStringList args = app.arguments();

View file

@ -88,11 +88,11 @@ void olaThread::NewDmx(const ola::client::DMXMetadata &data,
m_counter++; m_counter++;
gettimeofday(&m_last_data, NULL); gettimeofday(&m_last_data, NULL);
uint universe = data.universe; uint universe = data.universe;
emit layerReceived();
for (int i = 0; i < m_layersNumber; i++) { // loop for reading the channels by layer. for (int i = 0; i < m_layersNumber; i++) { // loop for reading the channels by layer.
if(m_settings.at(i).universe == universe) { // Compare if the layer is from this universe if(m_settings.at(i).universe == universe) { // Compare if the layer is from this universe
if ( m_settings.at(i).address > -1 ) { // AND if the DMX address is 0 or greater, process this layer. if ( m_settings.at(i).address > -1 ) { // AND if the DMX address is 0 or greater, process this layer.
emit layerReceived(i); for (int j = 0; j < LAYER_CHANNELS; j++){
for (int j = 0; j < LAYER_CHANNELS; j++){
int value = buffer.Get((m_settings.at(i).address) + j); // Get the value for this channel. int value = buffer.Get((m_settings.at(i).address) + j); // Get the value for this channel.
if (m_dmx[i][j] != value) { // Compare the new value with the old value. if (m_dmx[i][j] != value) { // Compare the new value with the old value.
emit dmxOutput(i,j,value); emit dmxOutput(i,j,value);

View file

@ -100,7 +100,7 @@ signals:
void finished(); // Signal for closing. Not used now. void finished(); // Signal for closing. Not used now.
void dmxOutput(int layer, int channel, int value); // Signal when a channel has changed void dmxOutput(int layer, int channel, int value); // Signal when a channel has changed
void toTerminal(QString message); void toTerminal(QString message);
void layerReceived(int i); void layerReceived();
}; };
using namespace ola; using namespace ola;