diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-09-24 11:54:42 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-09-24 11:54:42 +0000 |
| commit | 9705552640a9c340df9c8a8b3c3ce07ede56c278 (patch) | |
| tree | 33582ea7f8cd495c406e0c1365a619fdaf833d82 /src/plugins/General/rgscan/rgscaner.cpp | |
| parent | 2a4e61ddc4cd272a487a2665b907071ada7ce31a (diff) | |
| download | qmmp-9705552640a9c340df9c8a8b3c3ce07ede56c278.tar.gz qmmp-9705552640a9c340df9c8a8b3c3ce07ede56c278.tar.bz2 qmmp-9705552640a9c340df9c8a8b3c3ce07ede56c278.zip | |
rgscan: added slots
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3722 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/General/rgscan/rgscaner.cpp')
| -rw-r--r-- | src/plugins/General/rgscan/rgscaner.cpp | 74 |
1 files changed, 36 insertions, 38 deletions
diff --git a/src/plugins/General/rgscan/rgscaner.cpp b/src/plugins/General/rgscan/rgscaner.cpp index f2e5ba8b1..1fda543e0 100644 --- a/src/plugins/General/rgscan/rgscaner.cpp +++ b/src/plugins/General/rgscan/rgscaner.cpp @@ -30,36 +30,20 @@ #include <taglib/fileref.h> #include <taglib/tag.h> #include <taglib/mpegfile.h> +#include <stdio.h> +#include <stdint.h> #include "gain_analysis.h" #include "rgscaner.h" #define QStringToTString_qt4(s) TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8) -//static functions -/*static inline void s8_to_s16_2(qint8 *in, qint16 *out, qint64 samples) -{ - for(qint64 i = 0; i < samples; ++i) - out[i] = in[i] << 8; - return; -} - -static inline void s24_to_s16_2(qint32 *in, qint16 *out, qint64 samples) +RGScaner::RGScaner() { - for(qint64 i = 0; i < samples; ++i) - out[i] = in[i] >> 8; - return; + m_gain = 0.; + m_user_stop = false; + m_is_running = false; } -static inline void s32_to_s16_2(qint32 *in, qint16 *out, qint64 samples) -{ - for(qint64 i = 0; i < samples; ++i) - out[i] = in[i] >> 16; - return; -}*/ - -RGScaner::RGScaner() -{} - RGScaner::~RGScaner() { stop(); @@ -67,6 +51,7 @@ RGScaner::~RGScaner() bool RGScaner::prepare(const QString &url) { + m_url = url; InputSource *source = InputSource::create(url, 0); if(!source->initialize()) { @@ -115,32 +100,38 @@ bool RGScaner::prepare(const QString &url) void RGScaner::stop() { - /*m_mutex.lock(); + m_mutex.lock(); m_user_stop = true; m_mutex.unlock(); wait(); - m_presets.clear(); - qDeleteAll(m_inputs.values()); - m_inputs.clear(); - qDeleteAll(m_decoders); - m_decoders.clear();*/ +} + +bool RGScaner::isRunning() +{ + return m_is_running; +} + +double RGScaner::gain() +{ + return m_gain; } void RGScaner::run() { + m_is_running = true; qDebug("RGScaner: staring thread %lu", QThread::currentThreadId()); m_user_stop = false; - const int buf_size = 8192; + const int buf_size = 8192; //samples AudioParameters ap = m_decoder->audioParameters(); - Qmmp::AudioFormat format = ap.format(); - unsigned char output_buf[(format == Qmmp::PCM_S8) ? buf_size : buf_size * 2]; + //Qmmp::AudioFormat format = ap.format(); + unsigned char output_buf[buf_size]; qint64 output_at = 0; qint64 total = 0; - quint64 len = 0; + qint64 len = 0; qint64 totalSize = m_decoder->totalTime() * ap.sampleRate() * ap.channels() * ap.sampleSize() / 1000; - double out_left[8192/4]; - double out_right[8192/4]; + double out_left[buf_size/4]; + double out_right[buf_size/4]; GainHandle_t *handle = 0; @@ -170,12 +161,19 @@ void RGScaner::run() } else if (len <= 0) break; - } - qDebug("gain=%f",GetTitleGain(handle)); + m_mutex.lock(); + if(m_user_stop) + { + m_mutex.unlock(); + break; + } + m_mutex.unlock(); + } + m_gain = GetTitleGain(handle); qDebug("RGScaner: thread %ld finished", QThread::currentThreadId()); + m_is_running = false; emit progress(100); - emit finished(); + emit finished(m_url); } - |
