diff options
Diffstat (limited to 'src/plugins')
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 <forkotov02@hotmail.ru></source> <translation>Autor: Ilja Kotov <forkotov02@hotmail.ru></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 <forkotov02@hotmail.ru></source> <translation>Autor: Ilya Kotov <forkotov02@hotmail.ru></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 <forkotov02@hotmail.ru></source> <translation>Autore: Ilya Kotov <forkotov02@hotmail.ru></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 <forkotov02@hotmail.ru></source> <translation>Sukūrė: Ilya Kotov <forkotov02@hotmail.ru></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 <forkotov02@hotmail.ru></source> <translation>Autor: Ilya Kotov <forkotov02@hotmail.ru></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 <forkotov02@hotmail.ru></source> <translation>Разработчик: Илья Котов <forkotov02@hotmail.ru></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 <forkotov02@hotmail.ru></source> <translation>Yazan: Ilya Kotov <forkotov02@hotmail.ru></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 <forkotov02@hotmail.ru></source> <translation>Розробник: Ілля Котов <forkotov02@hotmail.ru></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:/// використовуючи діалог "Додати адресу" чи командний рядок</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 <forkotov02@hotmail.ru></source> <translation>作者:Ilya Kotov <forkotov02@hotmail.ru></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 <forkotov02@hotmail.ru></source> <translation>作者:Ilya Kotov <forkotov02@hotmail.ru></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: |
