aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-01-16 15:33:17 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-01-16 15:33:17 +0000
commit435f1da1de18bafe57e43e47fd8a6fc69fd8bab7 (patch)
treee332293971b3b3883685b79c62bcd50bf2f49c12 /src/plugins
parent2fa169a585994ceb40db55405f46783d06820947 (diff)
downloadqmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.tar.gz
qmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.tar.bz2
qmmp-435f1da1de18bafe57e43e47fd8a6fc69fd8bab7.zip
updated audio engine
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1503 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Effect/bs2b/bs2bplugin.cpp29
-rw-r--r--src/plugins/Effect/bs2b/bs2bplugin.h7
-rw-r--r--src/plugins/Effect/ladspa/ladspahelper.cpp12
-rw-r--r--src/plugins/Effect/ladspa/ladspahelper.h4
-rw-r--r--src/plugins/Effect/ladspa/ladspahost.cpp5
-rw-r--r--src/plugins/Effect/ladspa/ladspahost.h3
-rw-r--r--src/plugins/Effect/srconverter/srconverter.cpp39
-rw-r--r--src/plugins/Effect/srconverter/srconverter.h6
-rw-r--r--src/plugins/Input/aac/decoder_aac.cpp2
-rw-r--r--src/plugins/Input/cdaudio/decoder_cdaudio.cpp2
-rw-r--r--src/plugins/Input/cdaudio/decodercdaudiofactory.cpp5
-rw-r--r--src/plugins/Input/cdaudio/translations/cdaudio_plugin_cs.ts10
-rw-r--r--src/plugins/Input/cdaudio/translations/cdaudio_plugin_de.ts10
-rw-r--r--src/plugins/Input/cdaudio/translations/cdaudio_plugin_it.ts10
-rw-r--r--src/plugins/Input/cdaudio/translations/cdaudio_plugin_lt.ts10
-rw-r--r--src/plugins/Input/cdaudio/translations/cdaudio_plugin_pl.ts10
-rw-r--r--src/plugins/Input/cdaudio/translations/cdaudio_plugin_ru.ts10
-rw-r--r--src/plugins/Input/cdaudio/translations/cdaudio_plugin_tr.ts10
-rw-r--r--src/plugins/Input/cdaudio/translations/cdaudio_plugin_uk_UA.ts10
-rw-r--r--src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_CN.ts10
-rw-r--r--src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_TW.ts10
-rw-r--r--src/plugins/Input/cue/decoder_cue.cpp10
-rw-r--r--src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp4
-rw-r--r--src/plugins/Input/flac/decoder_flac.cpp58
-rw-r--r--src/plugins/Input/mad/decoder_mad.cpp2
-rw-r--r--src/plugins/Input/mad/settingsdialog.h4
-rw-r--r--src/plugins/Input/modplug/decoder_modplug.cpp4
-rw-r--r--src/plugins/Input/mpc/decoder_mpc.cpp2
-rw-r--r--src/plugins/Input/sndfile/decoder_sndfile.cpp2
-rw-r--r--src/plugins/Input/vorbis/decoder_vorbis.cpp2
-rw-r--r--src/plugins/Input/wavpack/decoder_wavpack.cpp25
-rw-r--r--src/plugins/Output/alsa/outputalsa.cpp36
-rw-r--r--src/plugins/Output/alsa/outputalsa.h5
-rw-r--r--src/plugins/Output/alsa/settingsdialog.ui9
-rw-r--r--src/plugins/Output/alsa/translations/alsa_plugin_cs.ts22
-rw-r--r--src/plugins/Output/alsa/translations/alsa_plugin_de.ts22
-rw-r--r--src/plugins/Output/alsa/translations/alsa_plugin_it.ts22
-rw-r--r--src/plugins/Output/alsa/translations/alsa_plugin_lt.ts22
-rw-r--r--src/plugins/Output/alsa/translations/alsa_plugin_pl.ts22
-rw-r--r--src/plugins/Output/alsa/translations/alsa_plugin_ru.ts22
-rw-r--r--src/plugins/Output/alsa/translations/alsa_plugin_tr.ts22
-rw-r--r--src/plugins/Output/alsa/translations/alsa_plugin_uk_UA.ts22
-rw-r--r--src/plugins/Output/alsa/translations/alsa_plugin_zh_CN.ts22
-rw-r--r--src/plugins/Output/alsa/translations/alsa_plugin_zh_TW.ts22
-rw-r--r--src/plugins/Output/jack/outputjack.cpp10
-rw-r--r--src/plugins/Output/jack/outputjack.h2
-rw-r--r--src/plugins/Output/oss/outputoss.cpp21
-rw-r--r--src/plugins/Output/oss/outputoss.h4
-rw-r--r--src/plugins/Output/pulseaudio/CMakeLists.txt2
-rw-r--r--src/plugins/Output/pulseaudio/outputpulseaudio.cpp20
-rw-r--r--src/plugins/Output/pulseaudio/outputpulseaudio.h4
-rw-r--r--src/plugins/Visual/analyzer/analyzer.cpp26
-rw-r--r--src/plugins/Visual/analyzer/analyzer.h8
-rw-r--r--src/plugins/Visual/projectm/projectmplugin.cpp8
-rw-r--r--src/plugins/Visual/projectm/projectmplugin.h4
55 files changed, 369 insertions, 337 deletions
diff --git a/src/plugins/Effect/bs2b/bs2bplugin.cpp b/src/plugins/Effect/bs2b/bs2bplugin.cpp
index d2ced9bb9..b9f0bda94 100644
--- a/src/plugins/Effect/bs2b/bs2bplugin.cpp
+++ b/src/plugins/Effect/bs2b/bs2bplugin.cpp
@@ -32,6 +32,7 @@ Bs2bPlugin::Bs2bPlugin() : Effect()
m_bs2b_handler = bs2b_open();
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
bs2b_set_level(m_bs2b_handler, settings.value("bs2b/level", BS2B_DEFAULT_CLEVEL).toUInt());
+ m_chan = 0;
}
Bs2bPlugin::~Bs2bPlugin()
@@ -43,35 +44,33 @@ Bs2bPlugin::~Bs2bPlugin()
#define CASE_BS2B(bitsPerSample, dataType, functionToCall, samples, out_data) \
case bitsPerSample: \
{ \
- dataType * data = reinterpret_cast<dataType *>(*out_data); \
+ dataType * data = reinterpret_cast<dataType *>(out_data); \
functionToCall(m_bs2b_handler, data, samples); \
} \
break;
-ulong Bs2bPlugin::process(char *in_data, const ulong size, char **out_data)
+void Bs2bPlugin::applyEffect(Buffer *b)
{
- memcpy(*out_data, in_data, size);
- if (channels() != 2)
- return size;
-
- uint samples = size / (bitsPerSample() / 8) / 2;
+ if(m_chan != 2)
+ return;
+ uint samples = b->nbytes / audioParameters().sampleSize() / 2;
m_mutex.lock();
- switch (bitsPerSample())
+ switch (format())
{
- CASE_BS2B(8, int8_t, bs2b_cross_feed_s8, samples, out_data)
- CASE_BS2B(16, int16_t, bs2b_cross_feed_s16le, samples, out_data)
- CASE_BS2B(24, bs2b_int24_t, bs2b_cross_feed_s24, samples, out_data)
- CASE_BS2B(32, int32_t, bs2b_cross_feed_s32le, samples, out_data)
+ CASE_BS2B(Qmmp::PCM_S8, int8_t, bs2b_cross_feed_s8, samples, b->data)
+ CASE_BS2B(Qmmp::PCM_S16LE, int16_t, bs2b_cross_feed_s16le, samples, b->data)
+ //CASE_BS2B(Qmmp::PCM_S24LE, bs2b_int24_t, bs2b_cross_feed_s24le, samples, out_data)
+ CASE_BS2B(Qmmp::PCM_S32LE, int32_t, bs2b_cross_feed_s32le, samples, b->data)
default:
; // noop
}
m_mutex.unlock();
- return size;
}
-void Bs2bPlugin::configure(quint32 freq, int chan, int res)
+void Bs2bPlugin::configure(quint32 freq, int chan, Qmmp::AudioFormat format)
{
- Effect::configure(freq, chan, res);
+ m_chan = chan;
+ Effect::configure(freq, chan, format);
bs2b_set_srate(m_bs2b_handler,freq);
}
diff --git a/src/plugins/Effect/bs2b/bs2bplugin.h b/src/plugins/Effect/bs2b/bs2bplugin.h
index 93ad482bb..0070d0f6e 100644
--- a/src/plugins/Effect/bs2b/bs2bplugin.h
+++ b/src/plugins/Effect/bs2b/bs2bplugin.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -35,13 +35,14 @@ public:
virtual ~Bs2bPlugin();
- ulong process(char *in_data, const ulong size, char **out_data);
- void configure(quint32 freq, int chan, int res);
+ void applyEffect(Buffer *b);
+ void configure(quint32 freq, int chan, Qmmp::AudioFormat format);
void setCrossfeedLevel(uint32_t level);
static Bs2bPlugin* instance();
private:
t_bs2bdp m_bs2b_handler;
+ int m_chan;
QMutex m_mutex;
static Bs2bPlugin *m_instance;
};
diff --git a/src/plugins/Effect/ladspa/ladspahelper.cpp b/src/plugins/Effect/ladspa/ladspahelper.cpp
index af683beca..ca34106f3 100644
--- a/src/plugins/Effect/ladspa/ladspahelper.cpp
+++ b/src/plugins/Effect/ladspa/ladspahelper.cpp
@@ -31,15 +31,13 @@ LADSPAHelper::LADSPAHelper() : Effect()
LADSPAHelper::~LADSPAHelper()
{}
-ulong LADSPAHelper::process(char *in_data, const ulong size, char **out_data)
+void LADSPAHelper::applyEffect(Buffer *b)
{
- LADSPAHost::instance()->applyEffect((qint16 *) in_data, size);
- memcpy(*out_data, in_data, size);
- return size;
+ LADSPAHost::instance()->applyEffect((qint16 *)b->data, b->nbytes);
}
-void LADSPAHelper::configure(quint32 freq, int chan, int res)
+void LADSPAHelper::configure(quint32 freq, int chan, Qmmp::AudioFormat format)
{
- LADSPAHost::instance()->configure(freq,chan,res);
- Effect::configure(freq, chan, res);
+ LADSPAHost::instance()->configure(freq,chan,format);
+ Effect::configure(freq, chan, format);
}
diff --git a/src/plugins/Effect/ladspa/ladspahelper.h b/src/plugins/Effect/ladspa/ladspahelper.h
index 53983fa17..18a44dafd 100644
--- a/src/plugins/Effect/ladspa/ladspahelper.h
+++ b/src/plugins/Effect/ladspa/ladspahelper.h
@@ -32,8 +32,8 @@ public:
LADSPAHelper();
virtual ~LADSPAHelper();
- ulong process(char *in_data, const ulong size, char **out_data);
- void configure(quint32 freq, int chan, int res);
+ void applyEffect(Buffer *b);
+ void configure(quint32 freq, int chan, Qmmp::AudioFormat format);
};
#endif // LADSPAHELPER_H
diff --git a/src/plugins/Effect/ladspa/ladspahost.cpp b/src/plugins/Effect/ladspa/ladspahost.cpp
index d9eef5281..2e84fe205 100644
--- a/src/plugins/Effect/ladspa/ladspahost.cpp
+++ b/src/plugins/Effect/ladspa/ladspahost.cpp
@@ -27,6 +27,7 @@
#include <stdlib.h>
#include <dlfcn.h>
#include <qmmp/qmmp.h>
+#include <qmmp/audioparameters.h>
#include "ladspahost.h"
#ifndef PATH_MAX
@@ -56,10 +57,10 @@ LADSPAHost::~LADSPAHost()
}
}
-void LADSPAHost::configure(quint32 freq, int chan, int res)
+void LADSPAHost::configure(quint32 freq, int chan, Qmmp::AudioFormat format)
{
m_chan = chan;
- m_prec = res;
+ m_prec = AudioParameters::sampleSize(format);
m_freq = freq;
foreach(LADSPAEffect *e, m_effects)
{
diff --git a/src/plugins/Effect/ladspa/ladspahost.h b/src/plugins/Effect/ladspa/ladspahost.h
index f97e54c08..2a35d7bbc 100644
--- a/src/plugins/Effect/ladspa/ladspahost.h
+++ b/src/plugins/Effect/ladspa/ladspahost.h
@@ -24,6 +24,7 @@
#include <QMutex>
#include <QList>
#include <QObject>
+#include <qmmp/qmmp.h>
#include "ladspa.h"
class QWidget;
@@ -83,7 +84,7 @@ public:
virtual ~LADSPAHost();
int applyEffect(qint16 *d, int length);
- void configure(quint32 freq, int chan, int res);
+ void configure(quint32 freq, int chan, Qmmp::AudioFormat format);
QList <LADSPAPlugin *> plugins();
QList <LADSPAEffect *> runningPlugins();
LADSPAEffect *addPlugin(LADSPAPlugin * plugin);
diff --git a/src/plugins/Effect/srconverter/srconverter.cpp b/src/plugins/Effect/srconverter/srconverter.cpp
index 8a31bb18f..95c912cb6 100644
--- a/src/plugins/Effect/srconverter/srconverter.cpp
+++ b/src/plugins/Effect/srconverter/srconverter.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2007 by Ilya Kotov *
+ * Copyright (C) 2007-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -50,32 +50,32 @@ SRConverter::~SRConverter()
m_src_data.output_frames = 0;
if (m_isSrcAlloc)
{
- free(m_srcIn);
- free(m_srcOut);
- free(m_wOut);
+ delete [] m_srcIn;
+ delete [] m_srcOut;
+ delete [] m_wOut;
m_isSrcAlloc = FALSE;
}
}
-ulong SRConverter::process(char *in_data, const ulong size, char **out_data)
+void SRConverter::applyEffect(Buffer *b)
{
if (m_isSrcAlloc)
{
- free(m_srcIn);
- free(m_srcOut);
- free(m_wOut);
+ delete [] m_srcIn;
+ delete [] m_srcOut;
+ delete [] m_wOut;
m_isSrcAlloc = FALSE;
}
ulong wbytes = 0;
- if (m_src_state && size > 0)
+ if (m_src_state && b->nbytes > 0)
{
- int lrLength = size/2;
+ int lrLength = b->nbytes/2;
int overLrLength= (int)floor(lrLength*(m_src_data.src_ratio+1));
- m_srcIn = (float*) malloc(sizeof(float)*lrLength);
- m_srcOut = (float*) malloc(sizeof(float)*overLrLength);
- m_wOut = (short int*) malloc(sizeof(short int)*overLrLength);
- src_short_to_float_array((short int*)in_data, m_srcIn, lrLength);
+ m_srcIn = new float [lrLength];
+ m_srcOut = new float [overLrLength];
+ m_wOut = new short[overLrLength];
+ src_short_to_float_array((short *)b->data, m_srcIn, lrLength);
m_isSrcAlloc = TRUE;
m_src_data.data_in = m_srcIn;
m_src_data.data_out = m_srcOut;
@@ -90,14 +90,15 @@ ulong SRConverter::process(char *in_data, const ulong size, char **out_data)
{
src_float_to_short_array(m_srcOut, m_wOut, m_src_data.output_frames_gen*2);
wbytes = m_src_data.output_frames_gen*4;
- *out_data = new char[wbytes];
- memcpy(*out_data, (char*) m_wOut, wbytes);
+ delete [] b->data;
+ b->data = (unsigned char *) m_wOut;
+ b->nbytes = wbytes;
+ m_wOut = 0;
}
}
- return wbytes;
}
-void SRConverter::configure(quint32 freq, int chan, int res)
+void SRConverter::configure(quint32 freq, int chan, Qmmp::AudioFormat format)
{
freeSRC();
uint rate = freq;
@@ -111,7 +112,7 @@ void SRConverter::configure(quint32 freq, int chan, int res)
else
qDebug("SRConverter: src_new(): %s", src_strerror(m_srcError));
}
- Effect::configure(m_overSamplingFs, chan, res);
+ Effect::configure(m_overSamplingFs, chan, format);
}
void SRConverter::freeSRC()
diff --git a/src/plugins/Effect/srconverter/srconverter.h b/src/plugins/Effect/srconverter/srconverter.h
index bb4c2913c..5bc4b4ad1 100644
--- a/src/plugins/Effect/srconverter/srconverter.h
+++ b/src/plugins/Effect/srconverter/srconverter.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2007 by Ilya Kotov *
+ * Copyright (C) 2007-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -33,8 +33,8 @@ public:
SRConverter();
virtual ~SRConverter();
- ulong process(char *in_data, const ulong size, char **out_data);
- void configure(quint32 freq, int chan, int res);
+ void applyEffect(Buffer *b);
+ void configure(quint32 freq, int chan, Qmmp::AudioFormat format);
private:
void freeSRC();
diff --git a/src/plugins/Input/aac/decoder_aac.cpp b/src/plugins/Input/aac/decoder_aac.cpp
index fef00a206..6b65685f1 100644
--- a/src/plugins/Input/aac/decoder_aac.cpp
+++ b/src/plugins/Input/aac/decoder_aac.cpp
@@ -142,7 +142,7 @@ bool DecoderAAC::initialize()
memmove(m_input_buf, m_input_buf + res, m_input_at - res);
m_input_at -= res;
- configure(freq, chan, 16);
+ configure(freq, chan, Qmmp::PCM_S16LE);
qDebug("DecoderAAC: initialize succes");
return TRUE;
}
diff --git a/src/plugins/Input/cdaudio/decoder_cdaudio.cpp b/src/plugins/Input/cdaudio/decoder_cdaudio.cpp
index 6fa6e2e02..201d6ff63 100644
--- a/src/plugins/Input/cdaudio/decoder_cdaudio.cpp
+++ b/src/plugins/Input/cdaudio/decoder_cdaudio.cpp
@@ -251,7 +251,7 @@ bool DecoderCDAudio::initialize()
}
qDebug("DecoderCDAudio: using cd audio capable drive \"%s\"", QUrl(m_url).path().toAscii().constData());
}
- configure(44100, 2, 16);
+ configure(44100, 2, Qmmp::PCM_S16LE);
m_bitrate = 1411;
m_totalTime = tracks[track_at].info.length() * 1000;
m_first_sector = tracks[track_at].first_sector;
diff --git a/src/plugins/Input/cdaudio/decodercdaudiofactory.cpp b/src/plugins/Input/cdaudio/decodercdaudiofactory.cpp
index 2e1b3d00f..ae88ea6e6 100644
--- a/src/plugins/Input/cdaudio/decodercdaudiofactory.cpp
+++ b/src/plugins/Input/cdaudio/decodercdaudiofactory.cpp
@@ -58,11 +58,14 @@ Decoder *DecoderCDAudioFactory::create(const QString &url, QIODevice *input)
QList<FileInfo *> DecoderCDAudioFactory::createPlayList(const QString &fileName, bool useMetaData)
{
+ qDebug("create!!");
Q_UNUSED(useMetaData);
QList <FileInfo*> list;
QList <CDATrack> tracks = DecoderCDAudio::generateTrackList(QUrl(fileName).path());
foreach(CDATrack t, tracks)
- list << new FileInfo(t.info);
+ {
+ list << new FileInfo(t.info);
+ }
return list;
}
diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_cs.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_cs.ts
index 7c6ea1d30..26681d3a9 100644
--- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_cs.ts
+++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_cs.ts
@@ -9,27 +9,27 @@
<translation>Modul pro zvuková CD</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="84"/>
+ <location filename="../decodercdaudiofactory.cpp" line="87"/>
<source>About CD Audio Plugin</source>
<translation>O modulu pro zvuková CD</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="85"/>
+ <location filename="../decodercdaudiofactory.cpp" line="88"/>
<source>Qmmp CD Audio Plugin</source>
<translation>Modul Qmmp pro zvuková CD</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="87"/>
+ <location filename="../decodercdaudiofactory.cpp" line="90"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autor: Ilja Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="88"/>
+ <location filename="../decodercdaudiofactory.cpp" line="91"/>
<source>Usage: open cdda:/// using Add URL dialog or command line</source>
<translation>Použití: otevřete cdda:/// v dialogu Přidat URL nebo z příkazové řádky</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="86"/>
+ <location filename="../decodercdaudiofactory.cpp" line="89"/>
<source>Compiled against libcdio version:</source>
<translation>Přeloženo s libcdio verze:</translation>
</message>
diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_de.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_de.ts
index 3fed87e02..9ed0049af 100644
--- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_de.ts
+++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_de.ts
@@ -9,27 +9,27 @@
<translation>CD-Audio-Modul</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="84"/>
+ <location filename="../decodercdaudiofactory.cpp" line="87"/>
<source>About CD Audio Plugin</source>
<translation>Über CD-Audio-Modul</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="85"/>
+ <location filename="../decodercdaudiofactory.cpp" line="88"/>
<source>Qmmp CD Audio Plugin</source>
<translation>Qmmp CD-Audio-Modul</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="87"/>
+ <location filename="../decodercdaudiofactory.cpp" line="90"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autor: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="88"/>
+ <location filename="../decodercdaudiofactory.cpp" line="91"/>
<source>Usage: open cdda:/// using Add URL dialog or command line</source>
<translation>Verwendung: Geben Sie cdda:/// in den „URL hinzufügen“-Dialog oder in die Befehlszeile ein</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="86"/>
+ <location filename="../decodercdaudiofactory.cpp" line="89"/>
<source>Compiled against libcdio version:</source>
<translation>Kompiliert gegen libcdio-Version:</translation>
</message>
diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_it.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_it.ts
index dede31eb3..95e211c92 100644
--- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_it.ts
+++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_it.ts
@@ -9,27 +9,27 @@
<translation>Modulo CD-Audio</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="84"/>
+ <location filename="../decodercdaudiofactory.cpp" line="87"/>
<source>About CD Audio Plugin</source>
<translation>Informazioni sul modulo CD-Audio</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="85"/>
+ <location filename="../decodercdaudiofactory.cpp" line="88"/>
<source>Qmmp CD Audio Plugin</source>
<translation>Modulo CD-Audio per Qmmp</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="87"/>
+ <location filename="../decodercdaudiofactory.cpp" line="90"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autore: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="88"/>
+ <location filename="../decodercdaudiofactory.cpp" line="91"/>
<source>Usage: open cdda:/// using Add URL dialog or command line</source>
<translation>Uso: aprire cdda:// nella finestra di dialgo degli URL, o via linea di comando</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="86"/>
+ <location filename="../decodercdaudiofactory.cpp" line="89"/>
<source>Compiled against libcdio version:</source>
<translation>Compilato con libcdio, versione:</translation>
</message>
diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_lt.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_lt.ts
index 270d9d579..47655c182 100644
--- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_lt.ts
+++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_lt.ts
@@ -9,27 +9,27 @@
<translation>CD Audio Įskiepis</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="84"/>
+ <location filename="../decodercdaudiofactory.cpp" line="87"/>
<source>About CD Audio Plugin</source>
<translation>Apie CD Audio įskiepį</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="85"/>
+ <location filename="../decodercdaudiofactory.cpp" line="88"/>
<source>Qmmp CD Audio Plugin</source>
<translation>Apie CD Audio Qmmp įskiepį</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="87"/>
+ <location filename="../decodercdaudiofactory.cpp" line="90"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Sukūrė: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="88"/>
+ <location filename="../decodercdaudiofactory.cpp" line="91"/>
<source>Usage: open cdda:/// using Add URL dialog or command line</source>
<translation>Naudojimas: atverti cdda:/// naudojant Prideti interneto adresą arba komandinė eilutę</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="86"/>
+ <location filename="../decodercdaudiofactory.cpp" line="89"/>
<source>Compiled against libcdio version:</source>
<translation>Surinkta iš libcdio versijos :</translation>
</message>
diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_pl.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_pl.ts
index 61049c20b..7cd11622d 100644
--- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_pl.ts
+++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_pl.ts
@@ -9,27 +9,27 @@
<translation>Wtyczka CD Audio</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="84"/>
+ <location filename="../decodercdaudiofactory.cpp" line="87"/>
<source>About CD Audio Plugin</source>
<translation>O wtyczce CD Audio</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="85"/>
+ <location filename="../decodercdaudiofactory.cpp" line="88"/>
<source>Qmmp CD Audio Plugin</source>
<translation>Wtyczka CD Audio dla Qmmp</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="86"/>
+ <location filename="../decodercdaudiofactory.cpp" line="89"/>
<source>Compiled against libcdio version:</source>
<translation>Skompilowane przy użyciu biblioteki libcdio w wersji:</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="87"/>
+ <location filename="../decodercdaudiofactory.cpp" line="90"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autor: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="88"/>
+ <location filename="../decodercdaudiofactory.cpp" line="91"/>
<source>Usage: open cdda:/// using Add URL dialog or command line</source>
<translation>Instrukcja: otwórz cdda:/// używając Dodaj URL lib z linii poleceń</translation>
</message>
diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_ru.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_ru.ts
index 488bba2d1..d100fdb97 100644
--- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_ru.ts
+++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_ru.ts
@@ -9,27 +9,27 @@
<translation>Модуль CD Audio</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="84"/>
+ <location filename="../decodercdaudiofactory.cpp" line="87"/>
<source>About CD Audio Plugin</source>
<translation>О Модуле CD Audio</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="85"/>
+ <location filename="../decodercdaudiofactory.cpp" line="88"/>
<source>Qmmp CD Audio Plugin</source>
<translation>Модуль CD Audio для Qmmp</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="87"/>
+ <location filename="../decodercdaudiofactory.cpp" line="90"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Разработчик: Илья Котов &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="88"/>
+ <location filename="../decodercdaudiofactory.cpp" line="91"/>
<source>Usage: open cdda:/// using Add URL dialog or command line</source>
<translation>Использование: откройте cdda:/// с помощью диалога добавления URL или командной строки</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="86"/>
+ <location filename="../decodercdaudiofactory.cpp" line="89"/>
<source>Compiled against libcdio version:</source>
<translation>Собрано с libcdio версии:</translation>
</message>
diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_tr.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_tr.ts
index 7a04a718d..a9803ab79 100644
--- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_tr.ts
+++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_tr.ts
@@ -9,27 +9,27 @@
<translation>CD Ses Eklentisi</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="84"/>
+ <location filename="../decodercdaudiofactory.cpp" line="87"/>
<source>About CD Audio Plugin</source>
<translation>CD Ses Eklentisi Hakkında</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="85"/>
+ <location filename="../decodercdaudiofactory.cpp" line="88"/>
<source>Qmmp CD Audio Plugin</source>
<translation>Qmmp CD Ses Eklentisi</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="86"/>
+ <location filename="../decodercdaudiofactory.cpp" line="89"/>
<source>Compiled against libcdio version:</source>
<translation>Derlendiği libcdio sürümü:</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="87"/>
+ <location filename="../decodercdaudiofactory.cpp" line="90"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Yazan: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="88"/>
+ <location filename="../decodercdaudiofactory.cpp" line="91"/>
<source>Usage: open cdda:/// using Add URL dialog or command line</source>
<translation>Kullanımı: komut satırından veya URL Ekle diyaloğundan open cdda:/// şeklindedir</translation>
</message>
diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_uk_UA.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_uk_UA.ts
index b0506d4dc..847b09aca 100644
--- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_uk_UA.ts
+++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_uk_UA.ts
@@ -9,27 +9,27 @@
<translation>Модуль AudioCD</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="84"/>
+ <location filename="../decodercdaudiofactory.cpp" line="87"/>
<source>About CD Audio Plugin</source>
<translation>Про модуль AudioCD</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="85"/>
+ <location filename="../decodercdaudiofactory.cpp" line="88"/>
<source>Qmmp CD Audio Plugin</source>
<translation>Модуль AudioCD для Qmmp</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="87"/>
+ <location filename="../decodercdaudiofactory.cpp" line="90"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Розробник: Ілля Котов &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="88"/>
+ <location filename="../decodercdaudiofactory.cpp" line="91"/>
<source>Usage: open cdda:/// using Add URL dialog or command line</source>
<translation>Використання: відкрийте cdda:/// використовуючи діалог &quot;Додати адресу&quot; чи командний рядок</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="86"/>
+ <location filename="../decodercdaudiofactory.cpp" line="89"/>
<source>Compiled against libcdio version:</source>
<translation>Зібрано з libcdio версії:</translation>
</message>
diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_CN.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_CN.ts
index 806ecb21e..b4e9a5aad 100644
--- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_CN.ts
+++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_CN.ts
@@ -9,27 +9,27 @@
<translation>CD 音频插件</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="84"/>
+ <location filename="../decodercdaudiofactory.cpp" line="87"/>
<source>About CD Audio Plugin</source>
<translation>关于 CD 音频插件</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="85"/>
+ <location filename="../decodercdaudiofactory.cpp" line="88"/>
<source>Qmmp CD Audio Plugin</source>
<translation>Qmmp CD 音频插件</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="87"/>
+ <location filename="../decodercdaudiofactory.cpp" line="90"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>作者:Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="88"/>
+ <location filename="../decodercdaudiofactory.cpp" line="91"/>
<source>Usage: open cdda:/// using Add URL dialog or command line</source>
<translation>用法:open cdda:/// 使用添加 URL 对话或命令行</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="86"/>
+ <location filename="../decodercdaudiofactory.cpp" line="89"/>
<source>Compiled against libcdio version:</source>
<translation>编译依赖 libcdio 版本:</translation>
</message>
diff --git a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_TW.ts b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_TW.ts
index 0b4f60b65..c6e7c7af8 100644
--- a/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_TW.ts
+++ b/src/plugins/Input/cdaudio/translations/cdaudio_plugin_zh_TW.ts
@@ -9,27 +9,27 @@
<translation>CD 聲訊插件</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="84"/>
+ <location filename="../decodercdaudiofactory.cpp" line="87"/>
<source>About CD Audio Plugin</source>
<translation>關於 CD 聲訊插件</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="85"/>
+ <location filename="../decodercdaudiofactory.cpp" line="88"/>
<source>Qmmp CD Audio Plugin</source>
<translation>Qmmp CD 聲訊插件</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="87"/>
+ <location filename="../decodercdaudiofactory.cpp" line="90"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>作者:Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="88"/>
+ <location filename="../decodercdaudiofactory.cpp" line="91"/>
<source>Usage: open cdda:/// using Add URL dialog or command line</source>
<translation>用法:open cdda:/// 使用添加 URL會話或命令行</translation>
</message>
<message>
- <location filename="../decodercdaudiofactory.cpp" line="86"/>
+ <location filename="../decodercdaudiofactory.cpp" line="89"/>
<source>Compiled against libcdio version:</source>
<translation>編譯依賴 libcdio 版本:</translation>
</message>
diff --git a/src/plugins/Input/cue/decoder_cue.cpp b/src/plugins/Input/cue/decoder_cue.cpp
index f5cb53929..238134873 100644
--- a/src/plugins/Input/cue/decoder_cue.cpp
+++ b/src/plugins/Input/cue/decoder_cue.cpp
@@ -105,14 +105,14 @@ bool DecoderCUE::initialize()
configure(m_decoder->audioParameters().sampleRate(),
m_decoder->audioParameters().channels(),
- m_decoder->audioParameters().bits());
+ m_decoder->audioParameters().format());
setReplayGainInfo(m_decoder->replayGainInfo());
length_in_bytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * m_length/8000;
+ audioParameters().format() * m_length/8000;
m_totalBytes = 0;
- m_sz = audioParameters().bits() * audioParameters().channels()/8;
+ m_sz = audioParameters().sampleSize();
StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData());
return TRUE;
@@ -128,7 +128,7 @@ void DecoderCUE::seek(qint64 pos)
m_decoder->seek(m_offset + pos);
m_totalBytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * pos/8000;
+ audioParameters().sampleSize() * pos/1000;
}
qint64 DecoderCUE::read(char *data, qint64 size)
@@ -197,7 +197,7 @@ void DecoderCUE::next()
m_offset = m_parser->offset(m_track);
length_in_bytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * m_length/8000;
+ audioParameters().sampleSize() * m_length/1000;
StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData());
m_totalBytes = 0;
}
diff --git a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp
index 4ec673839..28b7134d9 100644
--- a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp
+++ b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp
@@ -169,8 +169,8 @@ bool DecoderFFmpeg::initialize()
return FALSE;
}
m_totalTime = input()->isSequential() ? 0 : ic->duration * 1000 / AV_TIME_BASE;
- m_output_buf = new uint8_t[AVCODEC_MAX_AUDIO_FRAME_SIZE*sizeof(int16_t) + Qmmp::globalBufferSize()];
- configure(c->sample_rate, c->channels, 16);
+ m_output_buf = new uint8_t[AVCODEC_MAX_AUDIO_FRAME_SIZE*sizeof(int16_t) + QMMP_BUFFER_SIZE];
+ configure(c->sample_rate, c->channels, Qmmp::PCM_S16LE);
m_bitrate = c->bit_rate;
qDebug("DecoderFFmpeg: initialize succes");
return TRUE;
diff --git a/src/plugins/Input/flac/decoder_flac.cpp b/src/plugins/Input/flac/decoder_flac.cpp
index 51ee170f7..50f679956 100644
--- a/src/plugins/Input/flac/decoder_flac.cpp
+++ b/src/plugins/Input/flac/decoder_flac.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2009 by Ilya Kotov *
+ * Copyright (C) 2006-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -28,17 +28,15 @@
#include <taglib/flacfile.h>
#include <taglib/xiphcomment.h>
#include <taglib/tmap.h>
-
#include <qmmp/buffer.h>
#include <qmmp/output.h>
#include <qmmp/recycler.h>
#include <qmmp/statehandler.h>
-
#include <QObject>
#include <QFile>
#include <QIODevice>
#include <FLAC/all.h>
-
+#include "replaygainreader.h"
#include "cueparser.h"
#include "decoder_flac.h"
@@ -56,11 +54,10 @@ static size_t pack_pcm_signed (FLAC__byte *data,
unsigned bytes_per_sample;
unsigned incr;
- if (bps == 24)
- bps = 32; /* we encode to 32-bit words */
+ if(bps == 24) // we encode to 32-bit words
+ bps = 32;
bytes_per_sample = bps / 8;
incr = bytes_per_sample * channels;
-
for (channel = 0; channel < channels; channel++)
{
samples = wide_samples;
@@ -77,21 +74,18 @@ static size_t pack_pcm_signed (FLAC__byte *data,
data[0] = sample;
break;
case 16:
- data[1] = (FLAC__byte)(sample >> 8);
- data[0] = (FLAC__byte)sample;
+ data[1] = (FLAC__byte)(sample >> 8) & 0xff;
+ data[0] = (FLAC__byte)sample & 0xff;
break;
case 32:
- data[3] = (FLAC__byte)(sample >> 16);
- data[2] = (FLAC__byte)(sample >> 8);
- data[1] = (FLAC__byte)sample;
+ data[3] = (FLAC__byte)(sample >> 16) & 0xff;
+ data[2] = (FLAC__byte)(sample >> 8) & 0xff;
+ data[1] = (FLAC__byte)sample & 0xff;
data[0] = 0;
- break;
}
-
data += incr;
}
}
-
return wide_samples * channels * bytes_per_sample;
}
@@ -324,6 +318,8 @@ bool DecoderFLAC::initialize()
data()->input->open(QIODevice::ReadOnly);
QMap<Qmmp::MetaData, QString> metaData = m_parser->info(m_track)->metaData();
StateHandler::instance()->dispatch(metaData); //send metadata
+ ReplayGainReader rg(p);
+ setReplayGainInfo(rg.replayGainInfo());
}
else
{
@@ -376,10 +372,26 @@ bool DecoderFLAC::initialize()
data()->ok = 0;
return FALSE;
}
- if (data()->bits_per_sample == 24)
- configure(data()->sample_rate, data()->channels, 32);
- else
- configure(data()->sample_rate, data()->channels, data()->bits_per_sample);
+ switch(data()->bits_per_sample)
+ {
+ case 8:
+ configure(data()->sample_rate, data()->channels, Qmmp::PCM_S8);
+ break;
+ case 16:
+ configure(data()->sample_rate, data()->channels, Qmmp::PCM_S16LE);
+ break;
+ case 24:
+ case 32:
+ configure(data()->sample_rate, data()->channels, Qmmp::PCM_S32LE);
+ break;
+ default:
+ return FALSE;
+ }
+ if(!m_path.contains("://"))
+ {
+ ReplayGainReader rg(m_path);
+ setReplayGainInfo(rg.replayGainInfo());
+ }
if(m_parser)
{
@@ -387,11 +399,11 @@ bool DecoderFLAC::initialize()
m_offset = m_parser->offset(m_track);
length_in_bytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * m_length/8000;
+ audioParameters().sampleSize() * m_length/1000;
seek(0);
}
m_totalBytes = 0;
- m_sz = audioParameters().bits() * audioParameters().channels()/8;
+ m_sz = audioParameters().sampleSize() * audioParameters().channels();
qDebug("DecoderFLAC: initialize succes");
return TRUE;
@@ -413,7 +425,7 @@ void DecoderFLAC::seek(qint64 time)
{
m_totalBytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * time/8000;
+ audioParameters().sampleSize() * time/1000;
if(m_parser)
time += m_offset;
FLAC__uint64 target_sample = FLAC__uint64(time * data()->total_samples /data()->length);
@@ -502,7 +514,7 @@ void DecoderFLAC::next()
m_length = m_parser->length(m_track);
length_in_bytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * m_length/8000;
+ audioParameters().sampleSize() * m_length/1000;
StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData());
m_totalBytes = 0;
}
diff --git a/src/plugins/Input/mad/decoder_mad.cpp b/src/plugins/Input/mad/decoder_mad.cpp
index 1e4fea68f..7ae79a580 100644
--- a/src/plugins/Input/mad/decoder_mad.cpp
+++ b/src/plugins/Input/mad/decoder_mad.cpp
@@ -96,7 +96,7 @@ bool DecoderMAD::initialize()
mad_frame_mute (&frame);
stream.next_frame = 0;
stream.sync = 0;
- configure(m_freq, m_channels, 16);
+ configure(m_freq, m_channels, Qmmp::PCM_S16LE);
m_inited = TRUE;
return TRUE;
}
diff --git a/src/plugins/Input/mad/settingsdialog.h b/src/plugins/Input/mad/settingsdialog.h
index 2ad1ed188..dd1279728 100644
--- a/src/plugins/Input/mad/settingsdialog.h
+++ b/src/plugins/Input/mad/settingsdialog.h
@@ -1,6 +1,6 @@
/***************************************************************************
- * Copyright (C) 2006 by Ilya Kotov *
- * forkotov02@hotmail.ru *
+ * Copyright (C) 2009 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
diff --git a/src/plugins/Input/modplug/decoder_modplug.cpp b/src/plugins/Input/modplug/decoder_modplug.cpp
index b2f6866e5..6a9acb581 100644
--- a/src/plugins/Input/modplug/decoder_modplug.cpp
+++ b/src/plugins/Input/modplug/decoder_modplug.cpp
@@ -95,7 +95,7 @@ bool DecoderModPlug::initialize()
m_soundFile->Create((uchar*) m_input_buf.data(), m_input_buf.size());
m_bitrate = m_soundFile->GetNumChannels();
m_totalTime = (qint64) m_soundFile->GetSongTime() * 1000;
- configure(m_freq, m_chan, m_bps);
+ configure(m_freq, m_chan, (m_bps == 8 ? Qmmp::PCM_S8 : Qmmp::PCM_S16LE));
return TRUE;
}
@@ -111,7 +111,7 @@ int DecoderModPlug::bitrate()
qint64 DecoderModPlug::read(char *audio, qint64 maxSize)
{
- long len = m_soundFile->Read (audio, qMin((qint64)Buffer::size(), maxSize)) * m_sampleSize;
+ long len = m_soundFile->Read (audio, qMin((qint64)QMMP_BLOCK_SIZE, maxSize)) * m_sampleSize;
if (m_usePreamp)
{
{
diff --git a/src/plugins/Input/mpc/decoder_mpc.cpp b/src/plugins/Input/mpc/decoder_mpc.cpp
index b093b6910..82ba36694 100644
--- a/src/plugins/Input/mpc/decoder_mpc.cpp
+++ b/src/plugins/Input/mpc/decoder_mpc.cpp
@@ -190,7 +190,7 @@ bool DecoderMPC::initialize()
#endif
int chan = data()->info.channels;
- configure(data()->info.sample_freq, chan, 16);
+ configure(data()->info.sample_freq, chan, Qmmp::PCM_S16LE);
QMap<Qmmp::ReplayGainKey, double> rg_info; //replay gain information
#ifdef MPC_OLD_API
mpc_decoder_setup (&data()->decoder, &data()->reader);
diff --git a/src/plugins/Input/sndfile/decoder_sndfile.cpp b/src/plugins/Input/sndfile/decoder_sndfile.cpp
index 45ea15cbe..73a54ef0b 100644
--- a/src/plugins/Input/sndfile/decoder_sndfile.cpp
+++ b/src/plugins/Input/sndfile/decoder_sndfile.cpp
@@ -65,7 +65,7 @@ bool DecoderSndFile::initialize()
m_totalTime = snd_info.frames * 1000 / m_freq;
m_bitrate = QFileInfo(m_path).size () * 8.0 / m_totalTime + 0.5;
- configure(m_freq, chan, 16);
+ configure(m_freq, chan, Qmmp::PCM_S16LE);
qDebug("DecoderSndFile: detected format: %08X", snd_info.format);
qDebug("DecoderSndFile: initialize succes");
return TRUE;
diff --git a/src/plugins/Input/vorbis/decoder_vorbis.cpp b/src/plugins/Input/vorbis/decoder_vorbis.cpp
index 7b8c1e480..c1d563963 100644
--- a/src/plugins/Input/vorbis/decoder_vorbis.cpp
+++ b/src/plugins/Input/vorbis/decoder_vorbis.cpp
@@ -134,7 +134,7 @@ bool DecoderVorbis::initialize()
freq = ogginfo->rate;
chan = ogginfo->channels;
}
- configure(freq, chan, 16);
+ configure(freq, chan, Qmmp::PCM_S16LE);
inited = TRUE;
return TRUE;
}
diff --git a/src/plugins/Input/wavpack/decoder_wavpack.cpp b/src/plugins/Input/wavpack/decoder_wavpack.cpp
index 9c99c7992..d9ea2b62d 100644
--- a/src/plugins/Input/wavpack/decoder_wavpack.cpp
+++ b/src/plugins/Input/wavpack/decoder_wavpack.cpp
@@ -106,8 +106,21 @@ bool DecoderWavPack::initialize()
m_freq = WavpackGetSampleRate (m_context);
int bps = WavpackGetBitsPerSample (m_context);
if (!m_output_buf)
- m_output_buf = new int32_t[Qmmp::globalBufferSize()/4];
- configure(m_freq, m_chan, bps);
+ m_output_buf = new int32_t[QMMP_BUFFER_SIZE/4];
+ switch(bps)
+ {
+ case 8:
+ configure(m_freq, m_chan, Qmmp::PCM_S8);
+ break;
+ case 16:
+ configure(m_freq, m_chan, Qmmp::PCM_S16LE);
+ break;
+ case 24:
+ configure(m_freq, m_chan, Qmmp::PCM_S24LE);
+ break;
+ case 32:
+ configure(m_freq, m_chan, Qmmp::PCM_S32LE);
+ }
if(!m_parser)
m_totalTime = (qint64) WavpackGetNumSamples(m_context) * 1000 / m_freq;
else
@@ -116,11 +129,11 @@ bool DecoderWavPack::initialize()
m_offset = m_parser->offset(m_track);
length_in_bytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * m_length/8000;
+ audioParameters().sampleSize() * m_length/1000;
seek(0);
}
m_totalBytes = 0;
- m_sz = audioParameters().bits() * audioParameters().channels()/8;
+ m_sz = audioParameters().sampleSize() * audioParameters().channels();
qDebug("DecoderWavPack: initialize succes");
return TRUE;
}
@@ -158,7 +171,7 @@ void DecoderWavPack::seek(qint64 time)
{
m_totalBytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * time/8000;
+ audioParameters().sampleSize() * time/1000;
if(m_parser)
time += m_offset;
WavpackSeekSample (m_context, time * m_freq / 1000);
@@ -229,7 +242,7 @@ void DecoderWavPack::next()
m_length = m_parser->length(m_track);
length_in_bytes = audioParameters().sampleRate() *
audioParameters().channels() *
- audioParameters().bits() * m_length/8000;
+ audioParameters().sampleSize() * m_length/1000;
StateHandler::instance()->dispatch(m_parser->info(m_track)->metaData());
m_totalBytes = 0;
}
diff --git a/src/plugins/Output/alsa/outputalsa.cpp b/src/plugins/Output/alsa/outputalsa.cpp
index 829641638..16cc7d0a8 100644
--- a/src/plugins/Output/alsa/outputalsa.cpp
+++ b/src/plugins/Output/alsa/outputalsa.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2008 by Ilya Kotov *
+ * Copyright (C) 2006-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -57,7 +57,7 @@ OutputALSA::~OutputALSA()
free (pcm_name);
}
-void OutputALSA::configure(quint32 freq, int chan, int prec)
+void OutputALSA::configure(quint32 freq, int chan, Qmmp::AudioFormat format)
{
// we need to configure
@@ -99,32 +99,32 @@ void OutputALSA::configure(quint32 freq, int chan, int prec)
return;
}
}
- snd_pcm_format_t format = SND_PCM_FORMAT_UNKNOWN;
- switch (prec)
+ snd_pcm_format_t alsa_format = SND_PCM_FORMAT_UNKNOWN;
+ switch (format)
{
- case 8:
- format = SND_PCM_FORMAT_S8;
+ case Qmmp::PCM_S8:
+ alsa_format = SND_PCM_FORMAT_S8;
break;
- case 16:
- format = SND_PCM_FORMAT_S16_LE;
+ case Qmmp::PCM_S16LE:
+ alsa_format = SND_PCM_FORMAT_S16_LE;
break;
- case 24:
- format = SND_PCM_FORMAT_S24_LE;
+ case Qmmp::PCM_S24LE:
+ alsa_format = SND_PCM_FORMAT_S24_LE;
break;
- case 32:
- format = SND_PCM_FORMAT_S32_LE;
+ case Qmmp::PCM_S32LE:
+ alsa_format = SND_PCM_FORMAT_S32_LE;
break;
default:
qWarning("OutputALSA: unsupported format detected");
return;
}
- if ((err = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format)) < 0)
+ if ((err = snd_pcm_hw_params_set_format(pcm_handle, hwparams, alsa_format)) < 0)
{
qDebug("OutputALSA: Error setting format: %s", snd_strerror(err));
return;
}
exact_rate = rate;// = 11000;
- qDebug("OutputALSA: frequency=%d, channels=%d, bits=%d", rate, chan,prec);
+ //qDebug("OutputALSA: frequency=%d, channels=%d, bits=%d", rate, chan,prec);
if ((err = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &exact_rate, 0)) < 0)
{
@@ -181,13 +181,13 @@ void OutputALSA::configure(quint32 freq, int chan, int prec)
return;
}
//setup needed values
- m_bits_per_frame = snd_pcm_format_physical_width(format) * chan;
+ m_bits_per_frame = snd_pcm_format_physical_width(alsa_format) * chan;
m_chunk_size = period_size;
m_can_pause = snd_pcm_hw_params_can_pause(hwparams) && use_pause;
qDebug("OutputALSA: can pause: %d", m_can_pause);
- Output::configure(freq, chan, prec); //apply configuration
+ Output::configure(freq, chan, format); //apply configuration
//create alsa prebuffer;
- m_prebuf_size = Buffer::size() + m_bits_per_frame * m_chunk_size / 8;
+ m_prebuf_size = QMMP_BLOCK_SIZE + m_bits_per_frame * m_chunk_size / 8;
m_prebuf = (uchar *)malloc(m_prebuf_size);
}
@@ -225,7 +225,7 @@ bool OutputALSA::initialize()
qint64 OutputALSA::latency()
{
- return m_prebuf_fill * 8000 / sampleRate() / numChannels() / sampleSize();
+ return m_prebuf_fill * 1000 / sampleRate() / numChannels() / sampleSize();
}
void OutputALSA::pause()
diff --git a/src/plugins/Output/alsa/outputalsa.h b/src/plugins/Output/alsa/outputalsa.h
index b3dc92a68..b0afcebce 100644
--- a/src/plugins/Output/alsa/outputalsa.h
+++ b/src/plugins/Output/alsa/outputalsa.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2008 by Ilya Kotov *
+ * Copyright (C) 2006-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -42,7 +42,7 @@ public:
~OutputALSA();
bool initialize();
- void configure(quint32, int, int);
+ void configure(quint32, int, Qmmp::AudioFormat format);
qint64 latency();
void pause();
@@ -94,5 +94,4 @@ private:
bool m_use_mmap;
};
-
#endif // OUTPUTALSA_H
diff --git a/src/plugins/Output/alsa/settingsdialog.ui b/src/plugins/Output/alsa/settingsdialog.ui
index c39d3937d..b578a1d52 100644
--- a/src/plugins/Output/alsa/settingsdialog.ui
+++ b/src/plugins/Output/alsa/settingsdialog.ui
@@ -14,6 +14,15 @@
<string>ALSA Plugin Settings</string>
</property>
<layout class="QGridLayout" name="gridLayout">
+ <property name="leftMargin">
+ <number>6</number>
+ </property>
+ <property name="rightMargin">
+ <number>6</number>
+ </property>
+ <property name="bottomMargin">
+ <number>6</number>
+ </property>
<item row="0" column="0" colspan="2">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
diff --git a/src/plugins/Output/alsa/translations/alsa_plugin_cs.ts b/src/plugins/Output/alsa/translations/alsa_plugin_cs.ts
index a00c1a805..5b9f18c0a 100644
--- a/src/plugins/Output/alsa/translations/alsa_plugin_cs.ts
+++ b/src/plugins/Output/alsa/translations/alsa_plugin_cs.ts
@@ -32,57 +32,57 @@
<translation>Nastavení pluginu ALSA</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="24"/>
+ <location filename="../settingsdialog.ui" line="33"/>
<source>Device Settings</source>
<translation>Nastavení zařízení</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="36"/>
+ <location filename="../settingsdialog.ui" line="45"/>
<source>Audio device</source>
<translation>Zvukové zařízení</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="48"/>
+ <location filename="../settingsdialog.ui" line="57"/>
<source>Mixer</source>
<translation>Mixér</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="63"/>
+ <location filename="../settingsdialog.ui" line="72"/>
<source>Mixer card:</source>
<translation>Zvuková karta:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="73"/>
+ <location filename="../settingsdialog.ui" line="82"/>
<source>Mixer device:</source>
<translation>Ovládání hlasitosti:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="90"/>
+ <location filename="../settingsdialog.ui" line="99"/>
<source>Advanced Settings</source>
<translation>Pokročilá nastavení</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="102"/>
+ <location filename="../settingsdialog.ui" line="111"/>
<source>Soundcard</source>
<translation>Zvuková karta</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="108"/>
+ <location filename="../settingsdialog.ui" line="117"/>
<source>Buffer time (ms):</source>
<translation>Velikost bufferu (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="144"/>
+ <location filename="../settingsdialog.ui" line="153"/>
<source>Period time (ms):</source>
<translation>Délka periody (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="180"/>
+ <location filename="../settingsdialog.ui" line="189"/>
<source>Use mmap access</source>
<translation>Použít mmap</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="200"/>
+ <location filename="../settingsdialog.ui" line="209"/>
<source>Use snd_pcm_pause function</source>
<translation type="unfinished"></translation>
</message>
diff --git a/src/plugins/Output/alsa/translations/alsa_plugin_de.ts b/src/plugins/Output/alsa/translations/alsa_plugin_de.ts
index 7890c64ca..5e1cbee8c 100644
--- a/src/plugins/Output/alsa/translations/alsa_plugin_de.ts
+++ b/src/plugins/Output/alsa/translations/alsa_plugin_de.ts
@@ -32,57 +32,57 @@
<translation>Einstellungen ALSA-Modul</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="24"/>
+ <location filename="../settingsdialog.ui" line="33"/>
<source>Device Settings</source>
<translation>Geräte-Einstellungen</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="36"/>
+ <location filename="../settingsdialog.ui" line="45"/>
<source>Audio device</source>
<translation>Audiogerät</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="48"/>
+ <location filename="../settingsdialog.ui" line="57"/>
<source>Mixer</source>
<translation>Mixer</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="63"/>
+ <location filename="../settingsdialog.ui" line="72"/>
<source>Mixer card:</source>
<translation>Mixerkarte:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="73"/>
+ <location filename="../settingsdialog.ui" line="82"/>
<source>Mixer device:</source>
<translation>Mixergerät:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="90"/>
+ <location filename="../settingsdialog.ui" line="99"/>
<source>Advanced Settings</source>
<translation>Erweiterte Einstellungen</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="102"/>
+ <location filename="../settingsdialog.ui" line="111"/>
<source>Soundcard</source>
<translation>Soundkarte</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="108"/>
+ <location filename="../settingsdialog.ui" line="117"/>
<source>Buffer time (ms):</source>
<translation>Pufferzeit (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="144"/>
+ <location filename="../settingsdialog.ui" line="153"/>
<source>Period time (ms):</source>
<translation>Zeitraster (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="180"/>
+ <location filename="../settingsdialog.ui" line="189"/>
<source>Use mmap access</source>
<translation>Mmap-Unterstützung aktivieren</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="200"/>
+ <location filename="../settingsdialog.ui" line="209"/>
<source>Use snd_pcm_pause function</source>
<translation>„snd_pcm_pause“-Funktion verwenden</translation>
</message>
diff --git a/src/plugins/Output/alsa/translations/alsa_plugin_it.ts b/src/plugins/Output/alsa/translations/alsa_plugin_it.ts
index af23e7a7c..80c581637 100644
--- a/src/plugins/Output/alsa/translations/alsa_plugin_it.ts
+++ b/src/plugins/Output/alsa/translations/alsa_plugin_it.ts
@@ -32,57 +32,57 @@
<translation>Impostazioni modulo ALSA</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="24"/>
+ <location filename="../settingsdialog.ui" line="33"/>
<source>Device Settings</source>
<translation>Impostazione del device</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="36"/>
+ <location filename="../settingsdialog.ui" line="45"/>
<source>Audio device</source>
<translation>Dispositivo audio</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="48"/>
+ <location filename="../settingsdialog.ui" line="57"/>
<source>Mixer</source>
<translation>Mixer</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="63"/>
+ <location filename="../settingsdialog.ui" line="72"/>
<source>Mixer card:</source>
<translation>Scheda Mixer:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="73"/>
+ <location filename="../settingsdialog.ui" line="82"/>
<source>Mixer device:</source>
<translation>Dispositivo Mixer:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="90"/>
+ <location filename="../settingsdialog.ui" line="99"/>
<source>Advanced Settings</source>
<translation>Impostazoni avanzate</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="102"/>
+ <location filename="../settingsdialog.ui" line="111"/>
<source>Soundcard</source>
<translation>Scheda audio</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="108"/>
+ <location filename="../settingsdialog.ui" line="117"/>
<source>Buffer time (ms):</source>
<translation>Tempo di buffering (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="144"/>
+ <location filename="../settingsdialog.ui" line="153"/>
<source>Period time (ms):</source>
<translation>Periodo (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="180"/>
+ <location filename="../settingsdialog.ui" line="189"/>
<source>Use mmap access</source>
<translation>Usa accesso Mmap</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="200"/>
+ <location filename="../settingsdialog.ui" line="209"/>
<source>Use snd_pcm_pause function</source>
<translation>Usa la funzione snd_pcm_pause</translation>
</message>
diff --git a/src/plugins/Output/alsa/translations/alsa_plugin_lt.ts b/src/plugins/Output/alsa/translations/alsa_plugin_lt.ts
index 7c97d1c14..7bc83016a 100644
--- a/src/plugins/Output/alsa/translations/alsa_plugin_lt.ts
+++ b/src/plugins/Output/alsa/translations/alsa_plugin_lt.ts
@@ -27,52 +27,52 @@
<context>
<name>SettingsDialog</name>
<message>
- <location filename="../settingsdialog.ui" line="24"/>
+ <location filename="../settingsdialog.ui" line="33"/>
<source>Device Settings</source>
<translation>Įrangos nustatymai</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="36"/>
+ <location filename="../settingsdialog.ui" line="45"/>
<source>Audio device</source>
<translation>Garso įranga</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="48"/>
+ <location filename="../settingsdialog.ui" line="57"/>
<source>Mixer</source>
<translation>Glotintuvas</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="63"/>
+ <location filename="../settingsdialog.ui" line="72"/>
<source>Mixer card:</source>
<translation>Glotintuvo plokštė :</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="73"/>
+ <location filename="../settingsdialog.ui" line="82"/>
<source>Mixer device:</source>
<translation>Glotintuvo įranga:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="90"/>
+ <location filename="../settingsdialog.ui" line="99"/>
<source>Advanced Settings</source>
<translation>Papildomi nustatymai</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="102"/>
+ <location filename="../settingsdialog.ui" line="111"/>
<source>Soundcard</source>
<translation>Garso plokštė</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="108"/>
+ <location filename="../settingsdialog.ui" line="117"/>
<source>Buffer time (ms):</source>
<translation>Buferio laikas (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="144"/>
+ <location filename="../settingsdialog.ui" line="153"/>
<source>Period time (ms):</source>
<translation>Periodo laikas (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="200"/>
+ <location filename="../settingsdialog.ui" line="209"/>
<source>Use snd_pcm_pause function</source>
<translation>Naudoti snd_pcm_pause funciją</translation>
</message>
@@ -82,7 +82,7 @@
<translation>ALSA įskiepio nustatymai</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="180"/>
+ <location filename="../settingsdialog.ui" line="189"/>
<source>Use mmap access</source>
<translation>Naudoti mmap prieigą</translation>
</message>
diff --git a/src/plugins/Output/alsa/translations/alsa_plugin_pl.ts b/src/plugins/Output/alsa/translations/alsa_plugin_pl.ts
index 1b9abdb69..cbf5e07b5 100644
--- a/src/plugins/Output/alsa/translations/alsa_plugin_pl.ts
+++ b/src/plugins/Output/alsa/translations/alsa_plugin_pl.ts
@@ -32,57 +32,57 @@
<translation>Ustawienia wtyczki ALSA</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="24"/>
+ <location filename="../settingsdialog.ui" line="33"/>
<source>Device Settings</source>
<translation>Ustawienia urządzenia</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="36"/>
+ <location filename="../settingsdialog.ui" line="45"/>
<source>Audio device</source>
<translation>Urządzenie dźwiękowe</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="48"/>
+ <location filename="../settingsdialog.ui" line="57"/>
<source>Mixer</source>
<translation>Mikser</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="63"/>
+ <location filename="../settingsdialog.ui" line="72"/>
<source>Mixer card:</source>
<translation>Karta miksująca:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="73"/>
+ <location filename="../settingsdialog.ui" line="82"/>
<source>Mixer device:</source>
<translation>Urządzenie miksujące:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="90"/>
+ <location filename="../settingsdialog.ui" line="99"/>
<source>Advanced Settings</source>
<translation>Zaawansowane ustawienia</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="102"/>
+ <location filename="../settingsdialog.ui" line="111"/>
<source>Soundcard</source>
<translation>Karta dźwiękowa</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="108"/>
+ <location filename="../settingsdialog.ui" line="117"/>
<source>Buffer time (ms):</source>
<translation>Wielkość buforu (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="144"/>
+ <location filename="../settingsdialog.ui" line="153"/>
<source>Period time (ms):</source>
<translation>Czas cyklu (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="180"/>
+ <location filename="../settingsdialog.ui" line="189"/>
<source>Use mmap access</source>
<translation>Użyj dostępu mmap</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="200"/>
+ <location filename="../settingsdialog.ui" line="209"/>
<source>Use snd_pcm_pause function</source>
<translation>Użyj funkcji snd_pcm_pause</translation>
</message>
diff --git a/src/plugins/Output/alsa/translations/alsa_plugin_ru.ts b/src/plugins/Output/alsa/translations/alsa_plugin_ru.ts
index 244715907..7b4557086 100644
--- a/src/plugins/Output/alsa/translations/alsa_plugin_ru.ts
+++ b/src/plugins/Output/alsa/translations/alsa_plugin_ru.ts
@@ -27,52 +27,52 @@
<context>
<name>SettingsDialog</name>
<message>
- <location filename="../settingsdialog.ui" line="24"/>
+ <location filename="../settingsdialog.ui" line="33"/>
<source>Device Settings</source>
<translation>Параметры устройства</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="36"/>
+ <location filename="../settingsdialog.ui" line="45"/>
<source>Audio device</source>
<translation>Аудио устройство</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="48"/>
+ <location filename="../settingsdialog.ui" line="57"/>
<source>Mixer</source>
<translation>Микшер</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="63"/>
+ <location filename="../settingsdialog.ui" line="72"/>
<source>Mixer card:</source>
<translation>Карта микшера:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="73"/>
+ <location filename="../settingsdialog.ui" line="82"/>
<source>Mixer device:</source>
<translation>Устройство микшера:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="90"/>
+ <location filename="../settingsdialog.ui" line="99"/>
<source>Advanced Settings</source>
<translation>Дополнительные настройки</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="102"/>
+ <location filename="../settingsdialog.ui" line="111"/>
<source>Soundcard</source>
<translation>Звуковая карта</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="108"/>
+ <location filename="../settingsdialog.ui" line="117"/>
<source>Buffer time (ms):</source>
<translation>Время буферизации (мс):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="144"/>
+ <location filename="../settingsdialog.ui" line="153"/>
<source>Period time (ms):</source>
<translation>Время периода (мс):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="200"/>
+ <location filename="../settingsdialog.ui" line="209"/>
<source>Use snd_pcm_pause function</source>
<translation>Использовать функцию snd_pcm_pause</translation>
</message>
@@ -82,7 +82,7 @@
<translation>Настройки модуля ALSA</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="180"/>
+ <location filename="../settingsdialog.ui" line="189"/>
<source>Use mmap access</source>
<translation>Использовать доступ mmap</translation>
</message>
diff --git a/src/plugins/Output/alsa/translations/alsa_plugin_tr.ts b/src/plugins/Output/alsa/translations/alsa_plugin_tr.ts
index 898446c40..7ee692993 100644
--- a/src/plugins/Output/alsa/translations/alsa_plugin_tr.ts
+++ b/src/plugins/Output/alsa/translations/alsa_plugin_tr.ts
@@ -32,57 +32,57 @@
<translation>ALSA Eklentisi Ayarları</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="24"/>
+ <location filename="../settingsdialog.ui" line="33"/>
<source>Device Settings</source>
<translation>Aygıt Ayarları</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="36"/>
+ <location filename="../settingsdialog.ui" line="45"/>
<source>Audio device</source>
<translation>Ses aygıtı</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="48"/>
+ <location filename="../settingsdialog.ui" line="57"/>
<source>Mixer</source>
<translation>Karıştırıcı</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="63"/>
+ <location filename="../settingsdialog.ui" line="72"/>
<source>Mixer card:</source>
<translation>Karıştırıcı kartı:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="73"/>
+ <location filename="../settingsdialog.ui" line="82"/>
<source>Mixer device:</source>
<translation>Karıştırıcı aygıtı:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="90"/>
+ <location filename="../settingsdialog.ui" line="99"/>
<source>Advanced Settings</source>
<translation>Gelişmiş Ayarlar</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="102"/>
+ <location filename="../settingsdialog.ui" line="111"/>
<source>Soundcard</source>
<translation>Ses kartı</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="108"/>
+ <location filename="../settingsdialog.ui" line="117"/>
<source>Buffer time (ms):</source>
<translation>Arabellek süresi (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="144"/>
+ <location filename="../settingsdialog.ui" line="153"/>
<source>Period time (ms):</source>
<translation>Periyot süresi (ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="180"/>
+ <location filename="../settingsdialog.ui" line="189"/>
<source>Use mmap access</source>
<translation>mmap erişimi kullan</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="200"/>
+ <location filename="../settingsdialog.ui" line="209"/>
<source>Use snd_pcm_pause function</source>
<translation type="unfinished"></translation>
</message>
diff --git a/src/plugins/Output/alsa/translations/alsa_plugin_uk_UA.ts b/src/plugins/Output/alsa/translations/alsa_plugin_uk_UA.ts
index 9b415534e..716f7fa4d 100644
--- a/src/plugins/Output/alsa/translations/alsa_plugin_uk_UA.ts
+++ b/src/plugins/Output/alsa/translations/alsa_plugin_uk_UA.ts
@@ -27,52 +27,52 @@
<context>
<name>SettingsDialog</name>
<message>
- <location filename="../settingsdialog.ui" line="24"/>
+ <location filename="../settingsdialog.ui" line="33"/>
<source>Device Settings</source>
<translation>Параметри пристроїв</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="36"/>
+ <location filename="../settingsdialog.ui" line="45"/>
<source>Audio device</source>
<translation>Аудіо пристрій</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="48"/>
+ <location filename="../settingsdialog.ui" line="57"/>
<source>Mixer</source>
<translation>Мікшер</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="63"/>
+ <location filename="../settingsdialog.ui" line="72"/>
<source>Mixer card:</source>
<translation>Карта мікшера:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="73"/>
+ <location filename="../settingsdialog.ui" line="82"/>
<source>Mixer device:</source>
<translation>Пристрій мікшера:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="90"/>
+ <location filename="../settingsdialog.ui" line="99"/>
<source>Advanced Settings</source>
<translation>Додаткові налаштування</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="102"/>
+ <location filename="../settingsdialog.ui" line="111"/>
<source>Soundcard</source>
<translation>Звукова карта</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="108"/>
+ <location filename="../settingsdialog.ui" line="117"/>
<source>Buffer time (ms):</source>
<translation>Час буферизації (мс):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="144"/>
+ <location filename="../settingsdialog.ui" line="153"/>
<source>Period time (ms):</source>
<translation>Час періоду (мс):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="200"/>
+ <location filename="../settingsdialog.ui" line="209"/>
<source>Use snd_pcm_pause function</source>
<translation>Використовувати функцію snd_pcm_pause</translation>
</message>
@@ -82,7 +82,7 @@
<translation>Налаштування модуля ALSA</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="180"/>
+ <location filename="../settingsdialog.ui" line="189"/>
<source>Use mmap access</source>
<translation>Використовувати доступ mmap</translation>
</message>
diff --git a/src/plugins/Output/alsa/translations/alsa_plugin_zh_CN.ts b/src/plugins/Output/alsa/translations/alsa_plugin_zh_CN.ts
index 196cb3e87..c5368dbfa 100644
--- a/src/plugins/Output/alsa/translations/alsa_plugin_zh_CN.ts
+++ b/src/plugins/Output/alsa/translations/alsa_plugin_zh_CN.ts
@@ -27,52 +27,52 @@
<context>
<name>SettingsDialog</name>
<message>
- <location filename="../settingsdialog.ui" line="24"/>
+ <location filename="../settingsdialog.ui" line="33"/>
<source>Device Settings</source>
<translation>设备设置</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="36"/>
+ <location filename="../settingsdialog.ui" line="45"/>
<source>Audio device</source>
<translation>音频设备</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="48"/>
+ <location filename="../settingsdialog.ui" line="57"/>
<source>Mixer</source>
<translation>混频</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="63"/>
+ <location filename="../settingsdialog.ui" line="72"/>
<source>Mixer card:</source>
<translation>混频卡:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="73"/>
+ <location filename="../settingsdialog.ui" line="82"/>
<source>Mixer device:</source>
<translation>混频设备:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="90"/>
+ <location filename="../settingsdialog.ui" line="99"/>
<source>Advanced Settings</source>
<translation>高级设置</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="102"/>
+ <location filename="../settingsdialog.ui" line="111"/>
<source>Soundcard</source>
<translation>声卡</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="108"/>
+ <location filename="../settingsdialog.ui" line="117"/>
<source>Buffer time (ms):</source>
<translation>缓冲时间(ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="144"/>
+ <location filename="../settingsdialog.ui" line="153"/>
<source>Period time (ms):</source>
<translation>周期时间(ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="200"/>
+ <location filename="../settingsdialog.ui" line="209"/>
<source>Use snd_pcm_pause function</source>
<translation type="unfinished"></translation>
</message>
@@ -82,7 +82,7 @@
<translation>ALSA 插件设置</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="180"/>
+ <location filename="../settingsdialog.ui" line="189"/>
<source>Use mmap access</source>
<translation>使用内存映射</translation>
</message>
diff --git a/src/plugins/Output/alsa/translations/alsa_plugin_zh_TW.ts b/src/plugins/Output/alsa/translations/alsa_plugin_zh_TW.ts
index 409330b4a..b509bcc07 100644
--- a/src/plugins/Output/alsa/translations/alsa_plugin_zh_TW.ts
+++ b/src/plugins/Output/alsa/translations/alsa_plugin_zh_TW.ts
@@ -27,52 +27,52 @@
<context>
<name>SettingsDialog</name>
<message>
- <location filename="../settingsdialog.ui" line="24"/>
+ <location filename="../settingsdialog.ui" line="33"/>
<source>Device Settings</source>
<translation>裝置設定</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="36"/>
+ <location filename="../settingsdialog.ui" line="45"/>
<source>Audio device</source>
<translation>聲訊裝置</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="48"/>
+ <location filename="../settingsdialog.ui" line="57"/>
<source>Mixer</source>
<translation>混頻</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="63"/>
+ <location filename="../settingsdialog.ui" line="72"/>
<source>Mixer card:</source>
<translation>混頻卡:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="73"/>
+ <location filename="../settingsdialog.ui" line="82"/>
<source>Mixer device:</source>
<translation>混頻裝置:</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="90"/>
+ <location filename="../settingsdialog.ui" line="99"/>
<source>Advanced Settings</source>
<translation>進階設定</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="102"/>
+ <location filename="../settingsdialog.ui" line="111"/>
<source>Soundcard</source>
<translation>音效卡</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="108"/>
+ <location filename="../settingsdialog.ui" line="117"/>
<source>Buffer time (ms):</source>
<translation>緩衝時間(ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="144"/>
+ <location filename="../settingsdialog.ui" line="153"/>
<source>Period time (ms):</source>
<translation>周期時間(ms):</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="200"/>
+ <location filename="../settingsdialog.ui" line="209"/>
<source>Use snd_pcm_pause function</source>
<translation type="unfinished"></translation>
</message>
@@ -82,7 +82,7 @@
<translation>ALSA 插件設定</translation>
</message>
<message>
- <location filename="../settingsdialog.ui" line="180"/>
+ <location filename="../settingsdialog.ui" line="189"/>
<source>Use mmap access</source>
<translation>使用內存對映</translation>
</message>
diff --git a/src/plugins/Output/jack/outputjack.cpp b/src/plugins/Output/jack/outputjack.cpp
index b064590f4..c60087711 100644
--- a/src/plugins/Output/jack/outputjack.cpp
+++ b/src/plugins/Output/jack/outputjack.cpp
@@ -23,8 +23,8 @@
#include <QtGlobal>
#include <QDir>
#include <QSettings>
-
#include "outputjack.h"
+#include <qmmp/audioparameters.h>
#include <qmmp/buffer.h>
#include <qmmp/visual.h>
@@ -42,10 +42,10 @@ OutputJACK::~OutputJACK()
uninitialize();
}
-void OutputJACK::configure(quint32 freq, int chan, int prec)
+void OutputJACK::configure(quint32 freq, int chan, Qmmp::AudioFormat format)
{
qDebug("OutputJACK: configure");
- if(JACK_Open(&jack_device, prec, (unsigned long *)&freq, chan))
+ if(JACK_Open(&jack_device, AudioParameters::sampleSize(format)*8, (unsigned long *)&freq, chan))
{
m_configure = FALSE;
m_inited = FALSE;
@@ -54,7 +54,7 @@ void OutputJACK::configure(quint32 freq, int chan, int prec)
else
m_configure = TRUE;
m_inited = TRUE;
- Output::configure(freq, chan, prec);
+ Output::configure(freq, chan, format);
qDebug("OutputJACK: configure end");
}
@@ -72,7 +72,7 @@ bool OutputJACK::initialize()
{
qDebug("Unable to connect to JACK server.");
}
- return FALSE;
+ return FALSE;
}
jack_client_close (client);
m_inited = TRUE;
diff --git a/src/plugins/Output/jack/outputjack.h b/src/plugins/Output/jack/outputjack.h
index 8a340002d..f2d6357b6 100644
--- a/src/plugins/Output/jack/outputjack.h
+++ b/src/plugins/Output/jack/outputjack.h
@@ -40,7 +40,7 @@ public:
~OutputJACK();
bool initialize();
- void configure(quint32, int, int);
+ void configure(quint32, int, Qmmp::AudioFormat format);
qint64 latency();
private:
diff --git a/src/plugins/Output/oss/outputoss.cpp b/src/plugins/Output/oss/outputoss.cpp
index 9402d99bd..84d3d652e 100644
--- a/src/plugins/Output/oss/outputoss.cpp
+++ b/src/plugins/Output/oss/outputoss.cpp
@@ -65,7 +65,7 @@ OutputOSS* OutputOSS::instance()
OutputOSS::OutputOSS(QObject * parent)
: Output(parent), m_inited(FALSE),
- m_frequency(-1), m_channels(-1), m_precision(-1),
+ m_frequency(-1), m_channels(-1),
do_select(TRUE),
m_audio_fd(-1)
{
@@ -89,12 +89,11 @@ OutputOSS::~OutputOSS()
}
}
-void OutputOSS::configure(quint32 freq, int chan, int prec)
+void OutputOSS::configure(quint32 freq, int chan, Qmmp::AudioFormat format)
{
// we need to configure
- if (freq != m_frequency || chan != m_channels || prec != m_precision)
+ if (freq != m_frequency || chan != m_channels)
{
- qDebug("OutputOSS: frequency=%d, channels=%d, bits=%d", freq, chan, prec);
// we have already configured, but are changing settings...
// reset the device
resetDSP();
@@ -111,15 +110,14 @@ void OutputOSS::configure(quint32 freq, int chan, int prec)
#endif
m_frequency = freq;
m_channels = chan;
- m_precision = prec;
//m_bps = freq * chan * (prec / 8);
int p;
- switch (prec)
+ switch (format)
{
default:
- case 16:
+ case Qmmp::PCM_S16LE:
#if defined(AFMT_S16_NE)
p = AFMT_S16_NE;
#else
@@ -127,7 +125,7 @@ void OutputOSS::configure(quint32 freq, int chan, int prec)
#endif
break;
- case 8:
+ case Qmmp::PCM_S8:
p = AFMT_S8;
break;
@@ -135,8 +133,8 @@ void OutputOSS::configure(quint32 freq, int chan, int prec)
if (ioctl(m_audio_fd, SNDCTL_DSP_SETFMT, &p) == -1)
qWarning("OutputOSS: can't set audio format");
- if(ioctl(m_audio_fd, SNDCTL_DSP_SAMPLESIZE, &prec) == -1)
- qDebug("OutputOSS: can't set audio format");
+ /*if(ioctl(m_audio_fd, SNDCTL_DSP_SAMPLESIZE, &prec) == -1)
+ qDebug("OutputOSS: can't set audio format");*/
int stereo = (chan > 1) ? 1 : 0;
ioctl(m_audio_fd, SNDCTL_DSP_STEREO, &stereo);
/*if (ioctl(m_audio_fd, SNDCTL_DSP_SPEED, &m_channels) == -1)
@@ -146,7 +144,7 @@ void OutputOSS::configure(quint32 freq, int chan, int prec)
if (ioctl(m_audio_fd, SNDCTL_DSP_SPEED, &freq) == -1)
qWarning("OutputOSS: can't set audio format");
}
- Output::configure(freq, chan, prec);
+ Output::configure(freq, chan, format);
}
void OutputOSS::reset()
@@ -226,7 +224,6 @@ void OutputOSS::uninitialize()
m_inited = FALSE;
m_frequency = -1;
m_channels = -1;
- m_precision = -1;
resetDSP();
if (m_audio_fd > 0)
{
diff --git a/src/plugins/Output/oss/outputoss.h b/src/plugins/Output/oss/outputoss.h
index cd9d919aa..7fb0e4c94 100644
--- a/src/plugins/Output/oss/outputoss.h
+++ b/src/plugins/Output/oss/outputoss.h
@@ -36,7 +36,7 @@ public:
virtual ~OutputOSS();
bool initialize();
- void configure(quint32, int, int);
+ void configure(quint32, int, Qmmp::AudioFormat format);
qint64 latency();
int audio_fd();
static OutputOSS* instance();
@@ -62,7 +62,7 @@ private:
bool m_inited;
quint32 m_frequency;
- int m_channels, m_precision;
+ int m_channels;
bool do_select;
int m_audio_fd;
diff --git a/src/plugins/Output/pulseaudio/CMakeLists.txt b/src/plugins/Output/pulseaudio/CMakeLists.txt
index c3072e4d5..c1501e08d 100644
--- a/src/plugins/Output/pulseaudio/CMakeLists.txt
+++ b/src/plugins/Output/pulseaudio/CMakeLists.txt
@@ -26,7 +26,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../)
link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmp)
# pulseaudio
-pkg_check_modules(PULSE libpulse-simple)
+pkg_check_modules(PULSE libpulse-simple>=0.9.15)
include_directories(${PULSE_INCLUDE_DIRS})
link_directories(${PULSE_LIBRARY_DIRS})
diff --git a/src/plugins/Output/pulseaudio/outputpulseaudio.cpp b/src/plugins/Output/pulseaudio/outputpulseaudio.cpp
index e122e0c64..1765444fd 100644
--- a/src/plugins/Output/pulseaudio/outputpulseaudio.cpp
+++ b/src/plugins/Output/pulseaudio/outputpulseaudio.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2008 by Ilya Kotov *
+ * Copyright (C) 2006-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -46,19 +46,24 @@ OutputPulseAudio::~OutputPulseAudio()
uninitialize();
}
-void OutputPulseAudio::configure(quint32 freq, int chan, int prec)
+void OutputPulseAudio::configure(quint32 freq, int chan, Qmmp::AudioFormat format)
{
pa_sample_spec ss;
- switch (prec)
+ switch (format)
{
- case 8:
+ case Qmmp::PCM_S8:
ss.format = PA_SAMPLE_U8;
break;
- case 32:
+ case Qmmp::PCM_S16LE:
+ ss.format = PA_SAMPLE_S16LE;
+ break;
+ case Qmmp::PCM_S24LE:
+ ss.format = PA_SAMPLE_S24_32LE;
+ break;
+ case Qmmp::PCM_S32LE:
ss.format = PA_SAMPLE_S32LE;
break;
- case 16:
default:
ss.format = PA_SAMPLE_S16LE;
}
@@ -81,8 +86,7 @@ void OutputPulseAudio::configure(quint32 freq, int chan, int prec)
qWarning("OutputPulseAudio: pa_simple_new() failed: %s", pa_strerror(error));
return;
}
- qDebug("OutputPulseAudio: frequency=%d, channels=%d, bits=%d", uint(freq), chan, prec);
- Output::configure(freq, chan, prec);
+ Output::configure(freq, chan, format);
}
bool OutputPulseAudio::initialize()
diff --git a/src/plugins/Output/pulseaudio/outputpulseaudio.h b/src/plugins/Output/pulseaudio/outputpulseaudio.h
index 5cc0bd93f..1a85e557a 100644
--- a/src/plugins/Output/pulseaudio/outputpulseaudio.h
+++ b/src/plugins/Output/pulseaudio/outputpulseaudio.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2008 by Ilya Kotov *
+ * Copyright (C) 2006-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -40,7 +40,7 @@ public:
~OutputPulseAudio();
bool initialize();
- void configure(quint32, int, int);
+ void configure(quint32, int, Qmmp::AudioFormat format);
qint64 latency();
private:
diff --git a/src/plugins/Visual/analyzer/analyzer.cpp b/src/plugins/Visual/analyzer/analyzer.cpp
index 215c70a8a..de17d214d 100644
--- a/src/plugins/Visual/analyzer/analyzer.cpp
+++ b/src/plugins/Visual/analyzer/analyzer.cpp
@@ -82,43 +82,35 @@ void Analyzer::clear()
update();
}
-void Analyzer::add (Buffer *b, unsigned long w, int c, int p)
+void Analyzer::add (unsigned char *data, qint64 size, int chan)
{
if (!m_timer->isActive ())
return;
- long len = b->nbytes, cnt;
+ long len = size, cnt;
short *l = 0, *r = 0;
- len /= c;
- len /= (p / 8);
+ len /= chan;
+ len /= 2;
if (len > 512)
len = 512;
cnt = len;
- if (c == 2)
+ if (chan == 2)
{
l = new short[len];
r = new short[len];
-
- if (p == 8)
- stereo16_from_stereopcm8 (l, r, b->data, cnt);
- else if (p == 16)
- stereo16_from_stereopcm16 (l, r, (short *) b->data, cnt);
+ stereo16_from_stereopcm16 (l, r, (short *) data, cnt);
}
- else if (c == 1)
+ else if (chan == 1)
{
l = new short[len];
-
- if (p == 8)
- mono16_from_monopcm8 (l, b->data, cnt);
- else if (p == 16)
- mono16_from_monopcm16 (l, (short *) b->data, cnt);
+ mono16_from_monopcm16 (l, (short *) data, cnt);
}
else
len = 0;
if (len)
- m_nodes.append (new VisualNode (l, r, len, w));
+ m_nodes.append (new VisualNode (l, r, len));
}
void Analyzer::timeout()
diff --git a/src/plugins/Visual/analyzer/analyzer.h b/src/plugins/Visual/analyzer/analyzer.h
index 9b0352dae..1c0e8974e 100644
--- a/src/plugins/Visual/analyzer/analyzer.h
+++ b/src/plugins/Visual/analyzer/analyzer.h
@@ -36,8 +36,8 @@ class Buffer;
class VisualNode
{
public:
- VisualNode(short *l, short *r, unsigned long n, unsigned long o)
- : left(l), right(r), length(n), offset(o)
+ VisualNode(short *l, short *r, unsigned long n)
+ : left(l), right(r), length(n)
{
// left and right are allocated and then passed to this class
// the code that allocated left and right should give up all ownership
@@ -50,7 +50,7 @@ public:
}
short *left, *right;
- long length, offset;
+ long length;
};
class Analyzer : public Visual
@@ -61,7 +61,7 @@ public:
Analyzer( QWidget *parent = 0);
virtual ~Analyzer();
- void add(Buffer *, unsigned long, int, int);
+ void add(unsigned char *data, qint64 size, int chan);
void clear();
void paintEvent( QPaintEvent * );
diff --git a/src/plugins/Visual/projectm/projectmplugin.cpp b/src/plugins/Visual/projectm/projectmplugin.cpp
index b29dfab1e..b7e1483a4 100644
--- a/src/plugins/Visual/projectm/projectmplugin.cpp
+++ b/src/plugins/Visual/projectm/projectmplugin.cpp
@@ -54,8 +54,10 @@ void ProjectMPlugin::clear()
update();
}
-void ProjectMPlugin::add ( Buffer *b, unsigned long, int, int)
-{ //TODO 8 bit support
+void ProjectMPlugin::add (unsigned char *data, qint64 size, int chan)
+{
+ Q_UNUSED(chan);
+ //TODO multichannel support
if (m_projectMWidget->projectMInstance())
- m_projectMWidget->projectMInstance()->pcm()->addPCM16Data((short *)b->data, b->nbytes/4);
+ m_projectMWidget->projectMInstance()->pcm()->addPCM16Data((short *)data, size/4);
}
diff --git a/src/plugins/Visual/projectm/projectmplugin.h b/src/plugins/Visual/projectm/projectmplugin.h
index db16ab110..5f201ef39 100644
--- a/src/plugins/Visual/projectm/projectmplugin.h
+++ b/src/plugins/Visual/projectm/projectmplugin.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2009-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -35,7 +35,7 @@ public:
ProjectMPlugin(QWidget *parent = 0);
virtual ~ProjectMPlugin();
- void add(Buffer *, unsigned long, int, int);
+ void add(unsigned char *data, qint64 size, int chan);
void clear();
private: