Changed the audio library to SFML. Now working in qt5.3.2.

This commit is contained in:
santi 2014-07-25 20:38:18 +02:00
parent 37835e7571
commit 1dd20c9b05
11 changed files with 143 additions and 319 deletions

View file

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='UTF-8'?>
<dmxSettings fileVersion="1" layersNumber="3" path="/home/santi/lo_que_vio_el_mayordomo/sound" universeNumber="1">
<dmxSettings fileVersion="1" layersNumber="3" path="/home/santi/audio" universeNumber="1">
<layer0 dmx="1" universe="1" />
<layer1 dmx="21" universe="1" />
<layer2 dmx="41" universe="1" />

View file

@ -1,55 +0,0 @@
皾湏毄讍悊€潫憙嚈曀寑剛扰臓崙櫗泛疮鷼岸沪瓲驖か<EFBFBD><EFBFBD><EFBFBD><EFBFBD>堪彪Й称蛽咴斕与栧蚜赁尬履匾娤了脜绿衼祧<EFBFBD><EFBFBD><EFBFBD><EFBFBD>雠疰鬻惆<EFBFBD><EFBFBD>
堀阜刀ā相槜灜鬯勖
и拍媚菀<EFBFBD>彏帶寣巼秮憯剴€煥覆蝶趱毤丁窚但К煯缚<EFBFBD>溟驷钽伿谠訖<EFBFBD>
増唵檮儌劀煘潨嚉櫂棅晹搾崘<EFBFBD><EFBFBD><EFBFBD>┅沪イ⒕ 榭〖缓垢范胆
≡顡嫄欃稚惹婆拿禽肋掭苒谫<EFBFBD>
哦剨廖研镱盱腓蹊珂邃汊帱
<EFBFBD><EFBFBD>魂膂豸篁耩崚崒媻増噺<EFBFBD>
桋圯諐倽湜殭槜攭敁拺惎<EFBFBD><EFBFBD>
故貔铘赭<EFBFBD>綘烤郊缓护范荡巢睘<EFBFBD>
呖敂崐槡棕寐晾咿蒉勤儇字赵佄
枚安ū菌勘钩鼬汊徉<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲺趔<EFBFBD>
銋咽吓浭盅俾棙儌亐煘潥嚉櫂棖晹悗
冨耜镥皇鲴<EFBFBD><EFBFBD>臣烤郊缓归<EFBFBD>荡巢毕脱
拶稚惹婆拿垒肋掭苒谯<EFBFBD>
拍稍右研镱镳腙殍珂彐<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲺趔蝰饙<EFBFBD>
煘棅増噯厔仦亐煘潨洏<EFBFBD>
妳姇敁拺惎<EFBFBD><EFBFBD><EFBFBD>ěΗ<EFBFBD>
卑綘烤郊缓护范荡巢蓖<EFBFBD>
咿资扇瞧拍赁晾咿蒈圬<EFBFBD>
刈中扔已畜铐潆鲩桤琦溷赆<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>牾趔黜饛帊悑妷帥唴寖<EFBFBD>
亐煔亷<EFBFBD>妊厞晹搾崘<EFBFBD><EFBFBD>┅沪イ<EFBFBD>
郊痪オ则牯‘毕夏兴适邵婆穆蘖肋掭苒谂
刈盅攘皠摢掣<EFBFBD>觊脲<EFBFBD>溏除<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲺麸
蝰饖挓筝軟攪唴劅倎仐倽湜泤槜枙敁拺<EFBFBD>
<EFBFBD><EFBFBD>犯婶鲲黪瘗臣烤嫉Ш够丢荡吵<EFBFBD>瓮趟噬熔
婆拿铝肋<EFBFBD>
蒈圳儇字稍右研镱眇腙殍珂邃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲺趔蝽饛帊寢妷攪唴剝倎€優潨洑櫂棅晹搾憪<EFBFBD><EFBFBD>Е<EFBFBD>烤郊Ш垢范荡钞毕瓮趟噬郧婆拿铝烂掭苒谫刈收杂已酗铖
<EFBFBD>鲩桤驽溷恺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲺趔铖饛帒寢妷<EFBFBD>
噯厔儌亣優湝泦櫃枱墧捛悓
<EFBFBD><EFBFBD><EFBFBD>┊沪が<EFBFBD>烤〖翰工
范荡巢馍彝趟收惹婆孛铝烂
掭苒谫嬓收杂彝酗铐痣觊棼
驽溷忉锄恺<EFBFBD><EFBFBD><EFBFBD>鲺梵篑驌
帊寢妷蹆殔厓倽€煘潃洓櫂<EFBFBD>
枙敁拺惃箔<EFBFBD><EFBFBD>ěΕ
窘蓟汗攵<EFBFBD>闯箔衔吞资扇勤
拍寐晾屵淋圳倌字赵弦研矧
盱腙殍存<EFBFBD>汊狳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
豸篁耩軒憣媻墧噯厔焸亐焸
潨洑櫂臇墧搾憣<EFBFBD><EFBFBD>藩┄Ш
<EFBFBD>炀〖缓工范荡<EFBFBD>毕窝
趟噬惹暸孛铝烂掭苒瀑刈稚
杂已酗巾痣觊棼驽溷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ヵ梵蝰饟帊寢枆垏啓
柵偀€湆<EFBFBD>
湜殭剠剦唩巸偝<EFBFBD><EFBFBD>订ěЧぃ伎窘姬汗缚<EFBFBD>闯脖衔托
耸扇瞧牌<EFBFBD>
杏芡塘紊<EFBFBD>
倨字赵右托耦盱腙轸瑛邃汊徉泾泓<EFBFBD><EFBFBD>麝蹶篁耩弾憣晩増噯厴
憪潃煘潃
泦檮棅晥搸憣<EFBFBD><EFBFBD><EFBFBD>Е<EFBFBD>
⒔牐尽姬亥斧订疮箔弦托
酥稍勤
<EFBFBD>

View file

@ -1,5 +1,7 @@
#include "audiolayerwidget.h"
#include<iostream>
#include <QDebug>
#include <QVBoxLayout>
#include <QFile>
@ -10,36 +12,16 @@
AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
QGroupBox(parent)
, m_suspendResumeButton(0)
, m_deviceBox(0)
, m_watchDMX(new QTimer(this))
, m_pullTimer(new QTimer(this))
, m_device(QAudioDeviceInfo::defaultOutputDevice())
, m_audioOutput(0)
, m_output(0)
, m_buffer(BufferSize, 0)
, m_decoder(0)
, m_progressCounter(new QTime(0,0,0,1))
, m_progressMs(0)
, m_currentMedia(" ")
, m_running(false)
, m_emptyBuffer()
{
this->setTitle(name);
QVBoxLayout *layout = new QVBoxLayout;
m_deviceBox = new QComboBox(this);
const QAudioDeviceInfo &defaultDeviceInfo = QAudioDeviceInfo::defaultOutputDevice();
m_deviceBox->addItem(defaultDeviceInfo.deviceName(), qVariantFromValue(defaultDeviceInfo));
foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) {
if (deviceInfo != defaultDeviceInfo)
m_deviceBox->addItem(deviceInfo.deviceName(), qVariantFromValue(deviceInfo));
}
m_deviceBox->setMaximumWidth(250);
connect(m_deviceBox,SIGNAL(activated(int)),
this, SLOT(deviceChanged(int)));
layout->addWidget(m_deviceBox);
QHBoxLayout *status = new QHBoxLayout;
m_statusLabel = new QLabel;
m_statusLabel->setText(STATUS_LABEL);
@ -118,35 +100,9 @@ AudioLayerWidget::AudioLayerWidget(QWidget *parent, QString name):
this->setLayout(layout);
m_format.setSampleRate(DataSampleRateHz);
m_format.setChannelCount(2);
m_format.setSampleSize(16);
m_format.setCodec("audio/pcm");
m_format.setByteOrder(QAudioFormat::LittleEndian);
m_format.setSampleType(QAudioFormat::SignedInt);
// Init the silent buffer
QAudioBuffer *abuf = new QAudioBuffer(44100, m_format, -1);
QByteArray ba((const char*)abuf->data(), abuf->byteCount());
m_emptyBuffer.append(ba);
QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
if (!info.isFormatSupported(m_format)) {
qWarning("Default format not supported - trying to use nearest");
m_format = info.nearestFormat(m_format);
}
m_decoder = new AudioDecoder(m_format, this);
m_decoder->start();
connect(m_decoder, SIGNAL(totalTimeChanged(qint64)),
this, SLOT(durationChanged(qint64)));
connect(m_pullTimer, SIGNAL(timeout()),
this, SLOT(pullTimerExpired()));
connect(m_watchDMX, SIGNAL(timeout()),
this, SLOT(watchDMXExpired()));
m_watchDMX->start(1000);
createAudioOutput();
m_watchDMX->start(200);
}
AudioLayerWidget::~AudioLayerWidget()
@ -154,54 +110,46 @@ AudioLayerWidget::~AudioLayerWidget()
}
void AudioLayerWidget::createAudioOutput()
{
m_audioOutput = new QAudioOutput(m_device, m_format, this);
Q_CHECK_PTR(m_audioOutput);
m_audioOutput->setNotifyInterval(NOTIFY_INTERVAL);
m_audioOutput->setCategory("LibreMediaServer");
connect(m_audioOutput, SIGNAL(notify()), SLOT(notified()));
m_output = m_audioOutput->start();
Q_CHECK_PTR(m_output);
m_statusValue->setText(PAUSE_LABEL);
connect(m_audioOutput, SIGNAL(stateChanged(QAudio::State)), SLOT(handleStateChanged(QAudio::State)));
m_pullTimer->start(PULL_TIMER_INTERVAL);
}
void AudioLayerWidget::deviceChanged(int index)
{
m_pullTimer->stop();
m_audioOutput->stop();
m_audioOutput->disconnect(this);
m_device = m_deviceBox->itemData(index).value<QAudioDeviceInfo>();
createAudioOutput();
}
void AudioLayerWidget::volumeChanged(int value)
{
if (m_audioOutput)
m_audioOutput->setVolume(qreal(value/100.0f));
m_music.setVolume(value);
}
// volume range 0 -100
void AudioLayerWidget::setVol(qreal vol)
{
m_audioOutput->setVolume(vol);
m_music.setVolume(vol);
m_volumeSlider->blockSignals(true);
int volume = vol * 100;
m_volumeSlider->setValue(volume);
m_volumeSlider->setValue(vol);
m_volumeSlider->blockSignals(false);
}
void AudioLayerWidget::loadMedia(QString file)
{
if (m_currentMedia == file)
return;
if (QFile::exists(file)){
m_decoder->loadMedia(file);
setInitPosition();
m_currentMedia = file;
if (m_currentMedia == file ) {
fileLoaded(file);
return;
}
if (!QFile::exists(file)) {
qWarning("Can not access to file %s", file.toLatin1().constData());
return;
}
// Load an ogg music file
if (!m_music.openFromFile(file.toStdString())) {
qWarning("Can not open file %s", file.toLatin1().constData());
return;
}
m_music.setAttenuation(0);
m_progressCounter->restart();
durationChanged(m_music.getDuration().asMilliseconds());
fileLoaded(file);
// Display music informations
std::cout << file.toLatin1().constData() << " : " << std::endl;
std::cout << " " << m_music.getDuration().asSeconds() << " seconds" << std::endl;
std::cout << " " << m_music.getSampleRate() << " samples / sec" << std::endl;
std::cout << " " << m_music.getChannelCount() << " channels" << std::endl;
}
void AudioLayerWidget::fileLoaded(QString file)
@ -212,133 +160,37 @@ void AudioLayerWidget::fileLoaded(QString file)
m_folderValue->setText(list.at(size - 2));
m_fileValue->setText(list.at(size - 1));
}
m_progressMs = 0;
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs));
}
void AudioLayerWidget::notified()
{
m_progressMs += m_progressCounter->restart();
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs));
m_progressSlider->setValue(m_progressMs);
/* qDebug() << "bytesFree = " << m_audioOutput->bytesFree()
<< ", " << "elapsedUSecs = " << m_audioOutput->elapsedUSecs()
<< ", " << "processedUSecs = " << m_audioOutput->processedUSecs();
*/
}
void AudioLayerWidget::pullTimerExpired()
{
if (m_audioOutput && m_audioOutput->state() != QAudio::StoppedState) {
int chunks = m_audioOutput->bytesFree() / m_audioOutput->periodSize();
while (chunks) {
if (m_running) {
const qint64 len = m_decoder->read(m_buffer.data(), m_audioOutput->periodSize());
if ( len == -1) {
stop();
qDebug("End of file %s", this->title().toLatin1().constData());
break;
}
if (len) {
m_output->write(m_buffer.data(), len);
}
if (len != m_audioOutput->periodSize())
break;
} else {
m_output->write(m_emptyBuffer.data(), m_audioOutput->periodSize());
}
--chunks;
}
}
}
void AudioLayerWidget::toggleSuspendResume()
{
if (m_audioOutput->state() == QAudio::SuspendedState) {
resume();
} else if (m_audioOutput->state() == QAudio::ActiveState) {
pause();
} else if (m_audioOutput->state() == QAudio::StoppedState) {
play();
} else if (m_audioOutput->state() == QAudio::IdleState) {
qWarning("%s: IdleState", this->title().toLatin1().constData());
reset();
resume();
}
}
void AudioLayerWidget::handleStateChanged(QAudio::State state)
{
if (state == QAudio::SuspendedState) {
m_statusValue->setText(PAUSE_LABEL);
qDebug("Pause");
} else if (state == QAudio::ActiveState) {
m_statusValue->setText(PLAY_LABEL);
qDebug("Play");
} else if (m_audioOutput->state() == QAudio::StoppedState) {
m_statusValue->setText(STOP_LABEL);
qDebug("Stop");
} else if (state == QAudio::IdleState) {
m_statusValue->setText(IDDLE_LABEL);
qDebug("Iddle");
}
}
// duration in miliseconds
void AudioLayerWidget::durationChanged(qint64 dur)
{
if (dur == -1)
return;
m_totalTimeValue->setTime(QTime::fromMSecsSinceStartOfDay(dur));
m_progressSlider->setMaximum(dur);
m_totalTimeValue->setTime(QTime::fromMSecsSinceStartOfDay(dur));
}
void AudioLayerWidget::play()
{
setInitPosition();
// m_pullTimer->start(PULL_TIMER_INTERVAL);
// m_audioOutput->resume();
m_running = true;
pullTimerExpired();
m_progressCounter->start();
m_suspendResumeButton->setText(tr(SUSPEND_LABEL));
m_music.play();
m_progressCounter->restart();
}
void AudioLayerWidget::pause()
{
// m_pullTimer->stop();
// m_audioOutput->suspend();
m_running = false;
m_suspendResumeButton->setText(tr(RESUME_LABEL));
}
void AudioLayerWidget::resume()
{
// m_pullTimer->start(PULL_TIMER_INTERVAL);
// m_audioOutput->resume();
m_running = true;
pullTimerExpired();
m_progressCounter->start();
m_suspendResumeButton->setText(tr(SUSPEND_LABEL));
m_music.pause();
m_progressCounter->restart();
}
void AudioLayerWidget::stop()
{
m_running = false;
setInitPosition();
}
void AudioLayerWidget::reset()
{
m_pullTimer->stop();
m_audioOutput->reset();
m_output = m_audioOutput->start();
Q_CHECK_PTR(m_output);
}
void AudioLayerWidget::setInitPosition()
{
// reset();
m_decoder->setPos(0);
m_progressMs = 0;
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs));
m_progressSlider->setValue(m_progressMs);
m_music.stop();
}
void AudioLayerWidget::watchDMXExpired() {
@ -348,9 +200,26 @@ void AudioLayerWidget::watchDMXExpired() {
void AudioLayerWidget::updateWatchDMX(bool b)
{
m_receiveDMX->setChecked(b);
switch (m_music.getStatus()) {
case sf::SoundSource::Playing:
m_progressMs += m_progressCounter->restart();
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs));
m_statusValue->setText(PLAY_LABEL);
break;
case sf::SoundSource::Paused:
m_statusValue->setText(PAUSE_LABEL);
break;
case sf::SoundSource::Stopped:
m_progressCounter->restart();
m_progressMs = 0;
m_progressTime->setTime(QTime::fromMSecsSinceStartOfDay(m_progressMs));
m_statusValue->setText(STOP_LABEL);
break;
}
}
void AudioLayerWidget::flushBuffer()
void AudioLayerWidget::toggleSuspendResume()
{
// Esto es una chapuza para arreglar que reset() no limpia el buffer realmente
}

View file

@ -1,9 +1,8 @@
#ifndef AUDIOLAYERWIDGET_H
#define AUDIOLAYERWIDGET_H
#include <QAudioOutput>
#include <QByteArray>
#include <QComboBox>
#include <QLabel>
#include <QPushButton>
#include <QSlider>
@ -13,7 +12,9 @@
#include <QGroupBox>
#include <QCheckBox>
#include "audiodecoder.h"
#include "SFML/Audio.hpp"
#include "SFML/System.hpp"
#include "defines.h"
class AudioLayerWidget : public QGroupBox
@ -31,8 +32,8 @@ public:
void pause();
void setVol(qreal vol);
void resume();
void updateWatchDMX(bool b);
public slots:
void toggleSuspendResume();
@ -40,7 +41,6 @@ public slots:
private:
QPushButton *m_suspendResumeButton;
QComboBox *m_deviceBox;
QLabel *m_statusLabel;
QLabel * m_statusValue;
@ -66,14 +66,6 @@ private:
QCheckBox *m_receiveDMX;
QTimer *m_watchDMX;
QTimer *m_pullTimer;
QAudioDeviceInfo m_device;
QAudioOutput *m_audioOutput;
QIODevice *m_output; // not owned
QAudioFormat m_format;
QByteArray m_buffer;
AudioDecoder *m_decoder;
QTime *m_progressCounter;
quint64 m_progressMs;
@ -81,20 +73,11 @@ private:
bool m_running;
QByteArray m_emptyBuffer;
sf::Music m_music;
void createAudioOutput();
void reset();
void setInitPosition();
void flushBuffer();
private slots:
void notified();
void pullTimerExpired();
void fileLoaded(QString file);
void handleStateChanged(QAudio::State state);
void deviceChanged(int index);
void durationChanged(qint64 dur);
void watchDMXExpired();
};

View file

@ -1,20 +1,40 @@
#include "audiomasterwidget.h"
#include <QVBoxLayout>
AudioMasterWidget::AudioMasterWidget(QWidget *parent) :
QGroupBox(parent)
, m_file(new QLabel)
, m_folder(new QLabel)
, m_vol(new QSlider)
, m_mute(new QCheckBox)
, m_status(new QLabel)
, m_receiveDMX(new QCheckBox)
, m_watchDMX(new QTimer)
{
status = new QLabel(this);
vol = new QSlider(this);
mute = new QCheckBox(this);
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(status);
vbox->addWidget(vol);
vbox->addWidget(mute);
// vbox->addWidget(status);
// vbox->addWidget(vol);
// vbox->addWidget(mute);
m_receiveDMX->setText("Receiving DMX");
vbox->addWidget(m_receiveDMX);
this->setLayout(vbox);
connect(m_watchDMX, SIGNAL(timeout()),
this, SLOT(watchDMXExpired()));
m_watchDMX->start(1000);
}
AudioMasterWidget::~AudioMasterWidget()
{
}
void AudioMasterWidget::watchDMXExpired() {
m_receiveDMX->setChecked(false);
}
void AudioMasterWidget::updateWatchDMX()
{
m_receiveDMX->setChecked(true);
}

View file

@ -1,12 +1,11 @@
#ifndef AUDIOMASTERWIDGET_H
#define AUDIOMASTERWIDGET_H
#include <QLabel>
#include <QtGui>
#include <QGroupBox>
#include <QLabel>
#include <QSlider>
#include <QCheckBox>
#include <QVBoxLayout>
#include <QGroupBox>
//#include "ui_audiomasterwidget.h"
@ -24,14 +23,22 @@ public:
~AudioMasterWidget();
private:
public slots:
void updateWatchDMX();
private:
QLabel *m_file;
QLabel *m_folder;
QSlider *m_vol;
QCheckBox *m_mute;
QLabel *m_status;
QCheckBox *m_receiveDMX;
QTimer *m_watchDMX;
private slots:
void watchDMXExpired();
QLabel *file;
QLabel *folder;
QSlider *vol;
QCheckBox *mute;
QLabel *status;
};
#endif // AUDIOMASTERWIDGET_H

View file

@ -27,20 +27,19 @@ void AudioWidget::volChanged(int layer, qreal vol) {
dynamic_cast<AudioLayerWidget *>(item->widget())->setVol(vol);
}
void AudioWidget::playbackChanged(int layer, QAudio::State state)
void AudioWidget::playbackChanged(int layer, Status status)
{
QLayoutItem * const item = layout->itemAt(layer);
switch (state) {
case QAudio::ActiveState:
switch (status) {
case Playing:
dynamic_cast<AudioLayerWidget *>(item->widget())->play();
break;
case QAudio::StoppedState:
case Stopped:
dynamic_cast<AudioLayerWidget *>(item->widget())->stop();
break;
case Paused:
dynamic_cast<AudioLayerWidget *>(item->widget())->pause();
break;
case QAudio::SuspendedState:
dynamic_cast<AudioLayerWidget *>(item->widget())->resume();
case QAudio::IdleState:
break;
}
}

View file

@ -8,6 +8,8 @@
#include "audiolayerwidget.h"
#include "defines.h"
#include "SFML/Audio/SoundSource.hpp"
class AudioWidget : public QWidget
{
Q_OBJECT
@ -21,9 +23,9 @@ private:
signals:
public slots:
void mediaLoaded(int layer, QString media);
void mediaLoaded(int layer, QString media );
void volChanged(int layer, qreal vol);
void playbackChanged(int layer, QAudio::State state);
void playbackChanged(int layer, Status status);
void layerReceived(int layer);
};

View file

@ -57,5 +57,12 @@ struct MediaFolder {
QList<MediaFile> m_MediaInformation; // Pointer to the Medias Information List of this Library
};
enum Status
{
Stopped, ///< Sound is not playing
Paused, ///< Sound is paused
Playing ///< Sound is playing
};
#endif // DEFINES_H

View file

@ -20,9 +20,6 @@
QTextEdit * libreMediaServerAudio::textEdit = 0;
/**
/ Constructor
*/
@ -70,13 +67,12 @@ libreMediaServerAudio::libreMediaServerAudio(QStringList args, QWidget *parent)
textEdit, SLOT(append(QString)), Qt::QueuedConnection);
*/
// Inicia el widget Master. No implementado todavía
/*
amw = new AudioMasterWidget(this);
QDockWidget *topWidget = new QDockWidget(tr("Master"), this);
topWidget->setAllowedAreas(Qt::TopDockWidgetArea);
topWidget->setWidget(amw);
addDockWidget(Qt::TopDockWidgetArea, topWidget);
*/
// Conectamos los menus
connect(ui.actionOpen_conf, SIGNAL(triggered()), this, SLOT(openFile()));
connect(ui.actionSave_conf, SIGNAL(triggered()), this, SLOT(saveFile()));
@ -196,7 +192,7 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
break;
case VOLUME_COARSE:
f = ( value * 0x100 ) + ola->getValue(layer, VOLUME_FINE);
aw->volChanged(layer, f / 65535);
aw->volChanged(layer, f / 655.35);
break;
case VOLUME_FINE:
f = ( ola->getValue(layer, VOLUME_COARSE) * 0x100 ) + value;
@ -211,13 +207,13 @@ void libreMediaServerAudio::dmxInput(int layer, int channel, int value)
aux = value / 25;
switch (aux) {
case 0 :
aw->playbackChanged(layer, QAudio::ActiveState);
aw->playbackChanged(layer, Playing);
break;
case 1 :
aw->playbackChanged(layer, QAudio::StoppedState);
aw->playbackChanged(layer, Stopped);
break;
case 2 :
aw->playbackChanged(layer, QAudio::SuspendedState);
aw->playbackChanged(layer, Paused);
break;
}
default:

View file

@ -1,7 +1,7 @@
TEMPLATE = app
TARGET = libremediaserver-audio
QT += network script webkitwidgets widgets multimedia
QT += webkitwidgets widgets
CONFIG += debug
DESTDIR = ./debug
@ -14,8 +14,7 @@ HEADERS += libremediaserver-audio.h \
audiowidget.h \
audiomasterwidget.h \
defines.h \
settings.h \
audiodecoder.h
settings.h
SOURCES += main.cpp \
libremediaserver-audio.cpp \
@ -24,23 +23,12 @@ SOURCES += main.cpp \
audiolayerwidget.cpp \
audiowidget.cpp \
audiomasterwidget.cpp \
settings.cpp \
audiodecoder.cpp
settings.cpp
FORMS += \
libremediaserver-audio.ui
#INCLUDEPATH += ./
LIBS += -lola -lolacommon
# -L./debug
#win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../debug/release/ -lcitp
#else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../debug/debug/ -lcitp
#else:symbian: LIBS += -lcitp
#else:unix: LIBS += -L$$PWD/../debug/ -lcitp
#INCLUDEPATH += $$PWD/../debug
#DEPENDPATH += $$PWD/../debug
RESOURCES =
@ -51,3 +39,11 @@ OTHER_FILES += \
../compiling.txt \
../changelog.txt \
../lms-audio.xlm
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/SFML/lib/release/ -lsfml-audio
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/SFML/lib/debug/ -lsfml-audio
else:symbian: LIBS += -lsfml-audio
else:unix: LIBS += -L$$PWD/SFML/lib/ -lsfml-audio -lsfml-system
INCLUDEPATH += $$PWD/SFML/include
DEPENDPATH += $$PWD/SFML/include