aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/General/scrobbler/scrobblerfactory.cpp4
-rw-r--r--src/plugins/Output/CMakeLists.txt2
-rw-r--r--src/plugins/Output/Output.pro2
-rw-r--r--src/plugins/Output/alsa/outputalsafactory.cpp2
-rw-r--r--src/plugins/Output/jack/outputjack.cpp157
-rw-r--r--src/plugins/Output/jack/outputjack.h33
-rw-r--r--src/plugins/Output/jack/outputjackfactory.cpp11
-rw-r--r--src/plugins/Output/jack/outputjackfactory.h3
-rw-r--r--src/plugins/Output/oss/outputossfactory.cpp4
-rw-r--r--src/plugins/Output/pulseaudio/outputpulseaudiofactory.cpp4
-rw-r--r--src/plugins/Output/waveout/outputwaveoutfactory.cpp1
11 files changed, 46 insertions, 177 deletions
diff --git a/src/plugins/General/scrobbler/scrobblerfactory.cpp b/src/plugins/General/scrobbler/scrobblerfactory.cpp
index 560552bd7..fc613bb0b 100644
--- a/src/plugins/General/scrobbler/scrobblerfactory.cpp
+++ b/src/plugins/General/scrobbler/scrobblerfactory.cpp
@@ -19,7 +19,7 @@
***************************************************************************/
#include <QtGui>
-
+#include <qmmp/qmmp.h>
#include "scrobblerhandler.h"
#include "settingsdialog.h"
#include "scrobblerfactory.h"
@@ -55,7 +55,7 @@ void ScrobblerFactory::showAbout(QWidget *parent)
QTranslator *ScrobblerFactory::createTranslator(QObject *parent)
{
QTranslator *translator = new QTranslator(parent);
- QString locale = QLocale::system().name();
+ QString locale = Qmmp::systemLanguageID();
translator->load(QString(":/scrobbler_plugin_") + locale);
return translator;
}
diff --git a/src/plugins/Output/CMakeLists.txt b/src/plugins/Output/CMakeLists.txt
index f2199ca04..9bd11aea8 100644
--- a/src/plugins/Output/CMakeLists.txt
+++ b/src/plugins/Output/CMakeLists.txt
@@ -8,7 +8,7 @@ add_subdirectory(alsa)
ENDIF(USE_ALSA)
IF(USE_JACK)
-#add_subdirectory(jack)
+add_subdirectory(jack)
ENDIF(USE_JACK)
IF(USE_OSS)
diff --git a/src/plugins/Output/Output.pro b/src/plugins/Output/Output.pro
index 73453c7b4..95a9baf4d 100644
--- a/src/plugins/Output/Output.pro
+++ b/src/plugins/Output/Output.pro
@@ -5,7 +5,7 @@ TEMPLATE = subdirs
win32:SUBDIRS += waveout
unix{
contains(CONFIG, JACK_PLUGIN){
-# SUBDIRS += jack
+ SUBDIRS += jack
message(***********************)
message(* JACK plugin enabled *)
message(***********************)
diff --git a/src/plugins/Output/alsa/outputalsafactory.cpp b/src/plugins/Output/alsa/outputalsafactory.cpp
index c2f8711e5..e2c8d03d0 100644
--- a/src/plugins/Output/alsa/outputalsafactory.cpp
+++ b/src/plugins/Output/alsa/outputalsafactory.cpp
@@ -19,7 +19,7 @@
***************************************************************************/
#include <QtGui>
-
+#include <qmmp/qmmp.h>
#include "settingsdialog.h"
#include "outputalsa.h"
#include "outputalsafactory.h"
diff --git a/src/plugins/Output/jack/outputjack.cpp b/src/plugins/Output/jack/outputjack.cpp
index 2555e5b1e..2819941d4 100644
--- a/src/plugins/Output/jack/outputjack.cpp
+++ b/src/plugins/Output/jack/outputjack.cpp
@@ -32,45 +32,8 @@
#include <stdio.h>
#include <string.h>
-void OutputJACK::stop()
-{
- m_userStop = TRUE;
-}
-
-void OutputJACK::status()
-{
- long ct = (m_totalWritten - latency()) / m_bps;
-
- if (ct < 0)
- ct = 0;
-
- if (ct > m_currentSeconds)
- {
- m_currentSeconds = ct;
- dispatch(m_currentSeconds, m_totalWritten, m_rate,
- m_frequency, m_precision, m_channels);
- }
-}
-
-long OutputJACK::written()
-{
- return m_totalWritten;
-}
-
-void OutputJACK::seek(long pos)
-{
- /*recycler()->mutex()->lock ();
- recycler()->clear();
- recycler()->mutex()->unlock();*/
-
- m_totalWritten = (pos * m_bps);
- m_currentSeconds = -1;
-}
-
OutputJACK::OutputJACK(QObject *parent)
- : Output(parent), m_inited(FALSE), m_pause(FALSE), m_play(FALSE),
- m_userStop(FALSE), m_totalWritten(0), m_currentSeconds(-1),
- m_bps(-1), m_frequency(-1), m_channels(-1), m_precision(-1)
+ : Output(parent), m_inited(FALSE), m_configure(FALSE)
{
JACK_Init();
}
@@ -80,42 +43,23 @@ OutputJACK::~OutputJACK()
uninitialize();
}
-void OutputJACK::configure(long freq, int chan, int prec, int)
+void OutputJACK::configure(quint32 freq, int chan, int prec)
{
qDebug("OutputJACK: configure");
- m_precision = prec;
- m_channels = chan;
- m_frequency = freq;
- m_bps = freq * chan * (prec / 8);
if(JACK_Open(&jack_device, prec, (unsigned long *)&freq, chan))
- {
+ {
m_configure = FALSE;
- return;
- }
+ return;
+ }
else
m_configure = TRUE;
-
+ Output::configure(freq, chan, prec);
qDebug("OutputJACK: configure end");
}
-void OutputJACK::pause()
-{
- m_pause = (m_pause) ? FALSE : TRUE;
- {
- int state = m_pause ? OutputState::Paused: OutputState::Playing;
- dispatch(OutputState((OutputState::Type) state));
- }
-
-}
-
bool OutputJACK::initialize()
{
- m_inited = m_pause = m_play = m_userStop = FALSE;
- m_currentSeconds = -1;
- m_totalWritten = 0;
- if (m_inited)
- m_inited = TRUE;
- m_inited = TRUE;
+ m_inited = FALSE;
m_configure = FALSE;
jack_options_t options = JackNoStartServer;
jack_status_t status;
@@ -133,96 +77,25 @@ bool OutputJACK::initialize()
return TRUE;
}
-long OutputJACK::latency()
+qint64 OutputJACK::latency()
{
- ulong used = 0;
- return used;
+ return 0;
}
-void OutputJACK::run()
+qint64 OutputJACK::writeAudio(unsigned char *data, qint64 maxSize)
{
- mutex()->lock ();
- if (! m_inited)
- {
- mutex()->unlock();
- return;
- }
-
- m_play = TRUE;
- Buffer *b = 0;
- bool done = FALSE;
- long m = 0;
- unsigned long l;
-
- dispatch(OutputState::Playing);
-
- mutex()->unlock();
- while (!done&&m_configure)
- {
- mutex()->lock ();
- recycler()->mutex()->lock ();
- done = m_userStop;
-
- while (! done && (recycler()->empty() || m_pause))
- {
- mutex()->unlock();
- recycler()->cond()->wakeOne();
- recycler()->cond()->wait(recycler()->mutex());
- mutex()->lock ();
- done = m_userStop;
- status();
- }
-
- if (! b)
- {
- b = recycler()->next();
- if (b->rate)
- m_rate = b->rate;
- }
-
- recycler()->cond()->wakeOne();
- recycler()->mutex()->unlock();
-
- if (b)
- {
- l = int(b->nbytes);
- unsigned char *buf = b->data;
- m_totalWritten += l;
- while (l > 0)
- {
- m = JACK_Write(jack_device, (unsigned char*)buf, l);
- if (!m)
- usleep(2000);
- usleep(((m/m_channels)*100000)/m_frequency);
- l-=m;
- buf+=m;
- }
-
- status();
- dispatchVisual(b, m_totalWritten, m_channels, m_precision);
- }
- recycler()->mutex()->lock ();
- recycler()->done();
- recycler()->mutex()->unlock();
- b = 0;
- mutex()->unlock();
- }
- mutex()->lock ();
- m_play = FALSE;
- dispatch(OutputState::Stopped);
- mutex()->unlock();
+ m = JACK_Write(jack_device, (unsigned char*)data, maxSize);
+ if (!m)
+ usleep(2000);
+ return m;
}
void OutputJACK::uninitialize()
{
if (!m_inited)
return;
- m_inited = FALSE;
- m_inited = m_pause = m_play = m_userStop = FALSE;
- m_currentSeconds = -1;
- m_totalWritten = 0;
+
if (m_configure)
JACK_Close(jack_device);
- dispatch(OutputState::Stopped);
}
diff --git a/src/plugins/Output/jack/outputjack.h b/src/plugins/Output/jack/outputjack.h
index 0f0c7ea5f..8a340002d 100644
--- a/src/plugins/Output/jack/outputjack.h
+++ b/src/plugins/Output/jack/outputjack.h
@@ -38,32 +38,21 @@ class OutputJACK : public Output
public:
OutputJACK(QObject * parent = 0);
~OutputJACK();
+
bool initialize();
- bool isInitialized() const
- {
- return m_inited;
- }
- void uninitialize();
- void configure(long, int, int, int);
- void stop();
- void pause();
- long written();
- long latency();
- void seek(long);
+ void configure(quint32, int, int);
+ qint64 latency();
private:
- // thread run function
- void run();
+ //output api
+ qint64 writeAudio(unsigned char *data, qint64 maxSize);
+ void flush(){};
+
// helper functions
- void status();
- QString audio_device;
- bool m_inited, m_configure, m_pause, m_play, m_userStop;
- long m_totalWritten, m_currentSeconds, m_bps;
- int m_rate, m_frequency, m_channels, m_precision, jack_device;
- bool do_select;
- int audio_fd;
+ void uninitialize();
+ qint64 m;
+ bool m_inited, m_configure;
+ int jack_device;
};
-
#endif
-
diff --git a/src/plugins/Output/jack/outputjackfactory.cpp b/src/plugins/Output/jack/outputjackfactory.cpp
index 2a9709e5e..997330d5c 100644
--- a/src/plugins/Output/jack/outputjackfactory.cpp
+++ b/src/plugins/Output/jack/outputjackfactory.cpp
@@ -19,7 +19,7 @@
***************************************************************************/
#include <QtGui>
-
+#include <qmmp/qmmp.h>
#include "outputjack.h"
#include "outputjackfactory.h"
@@ -30,15 +30,20 @@ const OutputProperties OutputJACKFactory::properties() const
properties.name = tr("JACK Plugin");
properties.hasAbout = TRUE;
properties.hasSettings = FALSE;
+ properties.shortName = "jack";
return properties;
}
-Output* OutputJACKFactory::create(QObject* parent, bool volume)
+Output* OutputJACKFactory::create(QObject* parent)
{
- Q_UNUSED(volume);
return new OutputJACK(parent);
}
+VolumeControl *OutputJACKFactory::createVolumeControl(QObject *)
+{
+ return 0;
+}
+
void OutputJACKFactory::showSettings(QWidget*)
{
}
diff --git a/src/plugins/Output/jack/outputjackfactory.h b/src/plugins/Output/jack/outputjackfactory.h
index 6b99805e4..0847b8a0b 100644
--- a/src/plugins/Output/jack/outputjackfactory.h
+++ b/src/plugins/Output/jack/outputjackfactory.h
@@ -38,7 +38,8 @@ Q_INTERFACES(OutputFactory);
public:
const OutputProperties properties() const;
- Output* create(QObject* parent, bool volume);
+ Output* create(QObject* parent);
+ VolumeControl *createVolumeControl(QObject *parent);
void showSettings(QWidget* parent);
void showAbout(QWidget *parent);
QTranslator *createTranslator(QObject *parent);
diff --git a/src/plugins/Output/oss/outputossfactory.cpp b/src/plugins/Output/oss/outputossfactory.cpp
index 7e2e258f6..36dd55f34 100644
--- a/src/plugins/Output/oss/outputossfactory.cpp
+++ b/src/plugins/Output/oss/outputossfactory.cpp
@@ -19,7 +19,7 @@
***************************************************************************/
#include <QtGui>
-
+#include <qmmp/qmmp.h>
#include "settingsdialog.h"
#include "outputoss.h"
#include "outputossfactory.h"
@@ -62,7 +62,7 @@ QMessageBox::about (parent, tr("About OSS Output Plugin"),
QTranslator *OutputOSSFactory::createTranslator(QObject *parent)
{
QTranslator *translator = new QTranslator(parent);
- QString locale = QLocale::system().name();
+ QString locale = Qmmp::systemLanguageID();
translator->load(QString(":/oss_plugin_") + locale);
return translator;
}
diff --git a/src/plugins/Output/pulseaudio/outputpulseaudiofactory.cpp b/src/plugins/Output/pulseaudio/outputpulseaudiofactory.cpp
index 5618e7ba7..371bc18f5 100644
--- a/src/plugins/Output/pulseaudio/outputpulseaudiofactory.cpp
+++ b/src/plugins/Output/pulseaudio/outputpulseaudiofactory.cpp
@@ -19,7 +19,7 @@
***************************************************************************/
#include <QtGui>
-
+#include <qmmp/qmmp.h>
#include "outputpulseaudio.h"
#include "outputpulseaudiofactory.h"
@@ -59,7 +59,7 @@ void OutputPulseAudioFactory::showAbout(QWidget *parent)
QTranslator *OutputPulseAudioFactory::createTranslator(QObject *parent)
{
QTranslator *translator = new QTranslator(parent);
- QString locale = QLocale::system().name();
+ QString locale = Qmmp::systemLanguageID();
translator->load(QString(":/pulseaudio_plugin_") + locale);
return translator;
}
diff --git a/src/plugins/Output/waveout/outputwaveoutfactory.cpp b/src/plugins/Output/waveout/outputwaveoutfactory.cpp
index 2f80f11e1..1b01c1e84 100644
--- a/src/plugins/Output/waveout/outputwaveoutfactory.cpp
+++ b/src/plugins/Output/waveout/outputwaveoutfactory.cpp
@@ -30,6 +30,7 @@ const OutputProperties OutputWaveOutFactory::properties() const
properties.name = tr("WaveOut Plugin");
properties.hasAbout = TRUE;
properties.hasSettings = FALSE;
+ properties.shortName = "waveout"
return properties;
}