diff options
Diffstat (limited to 'src/plugins/General/rgscan')
| -rw-r--r-- | src/plugins/General/rgscan/rgscandialog.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/General/rgscan/rgscaner.cpp | 13 | ||||
| -rw-r--r-- | src/plugins/General/rgscan/rgscaner.h | 4 |
3 files changed, 19 insertions, 2 deletions
diff --git a/src/plugins/General/rgscan/rgscandialog.cpp b/src/plugins/General/rgscan/rgscandialog.cpp index a55d4882b..46f36a39a 100644 --- a/src/plugins/General/rgscan/rgscandialog.cpp +++ b/src/plugins/General/rgscan/rgscandialog.cpp @@ -83,6 +83,7 @@ void RGScanDialog::onScanFinished(QString url) if(url != m_ui.tableWidget->item(i, 0)->data(Qt::UserRole).toString()) continue; m_ui.tableWidget->setItem(i, 2, new QTableWidgetItem(QString::number(m_scaners.at(i)->gain()))); + m_ui.tableWidget->setItem(i, 4, new QTableWidgetItem(QString::number(m_scaners.at(i)->peak()))); } bool stopped = true; @@ -98,12 +99,14 @@ void RGScanDialog::onScanFinished(QString url) qDebug("RGScanDialog: all threads finished"); QThreadPool::globalInstance()->waitForDone(); + double album_peak = 0.; GainHandle_t **a = (GainHandle_t **) malloc(m_scaners.count()*sizeof(GainHandle_t *)); for(int i = 0; i < m_scaners.count(); ++i) { a[i] = m_scaners.at(i)->handle(); + album_peak = qMax(m_scaners.at(i)->peak(), album_peak); } double album_gain = GetAlbumGain(a, m_scaners.count()); @@ -112,6 +115,7 @@ void RGScanDialog::onScanFinished(QString url) for(int i = 0; i < m_ui.tableWidget->rowCount(); ++i) { m_ui.tableWidget->setItem(i, 3, new QTableWidgetItem(QString::number(album_gain))); + m_ui.tableWidget->setItem(i, 5, new QTableWidgetItem(QString::number(album_peak))); } qDeleteAll(m_scaners); diff --git a/src/plugins/General/rgscan/rgscaner.cpp b/src/plugins/General/rgscan/rgscaner.cpp index fc46142e9..069a4e0da 100644 --- a/src/plugins/General/rgscan/rgscaner.cpp +++ b/src/plugins/General/rgscan/rgscaner.cpp @@ -29,6 +29,7 @@ RGScaner::RGScaner() { m_gain = 0.; + m_peak = 0.; m_user_stop = false; m_is_running = false; m_handle = 0; @@ -118,11 +119,16 @@ bool RGScaner::isRunning() return m_is_running; } -double RGScaner::gain() +double RGScaner::gain() const { return m_gain; } +double RGScaner::peak() const +{ + return m_peak; +} + GainHandle_t *RGScaner::handle() { return m_handle; @@ -142,6 +148,7 @@ void RGScaner::run() qint64 total = 0; qint64 len = 0; qint64 totalSize = m_decoder->totalTime() * ap.sampleRate() * ap.channels() * ap.sampleSize() / 1000; + qint32 max = 0; double out_left[buf_size/4]; double out_right[buf_size/4]; @@ -169,6 +176,8 @@ void RGScaner::run() { out_left[i] = ((short *) output_buf)[i*2]; out_right[i] = ((short *) output_buf)[i*2+1]; + max = qMax(abs(out_left[i]), max); + max = qMax(abs(out_right[i]), max); } AnalyzeSamples(m_handle, out_left, out_right, len/4, 2); @@ -187,6 +196,8 @@ void RGScaner::run() } m_gain = GetTitleGain(m_handle); + m_peak = max / 32768.0; + qDebug("peak = %f", m_peak); qDebug("RGScaner: thread %ld finished", QThread::currentThreadId()); m_is_running = false; emit progress(100); diff --git a/src/plugins/General/rgscan/rgscaner.h b/src/plugins/General/rgscan/rgscaner.h index b08794097..79c2b058e 100644 --- a/src/plugins/General/rgscan/rgscaner.h +++ b/src/plugins/General/rgscan/rgscaner.h @@ -44,7 +44,8 @@ public: bool prepare(const QString &url); void stop(); bool isRunning(); - double gain(); + double gain() const; + double peak() const; GainHandle_t *handle(); signals: @@ -60,6 +61,7 @@ private: bool m_is_running; QString m_url; double m_gain; + double m_peak; GainHandle_t *m_handle; }; |
