From: <g-...@us...> - 2010-11-24 09:46:53
|
Revision: 5117 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5117&view=rev Author: g-marco Date: 2010-11-24 09:46:47 +0000 (Wed, 24 Nov 2010) Log Message: ----------- fix signal/slots for QVector<int16_t> used now for audiosignal.cpp but looks a bit slower (so only commented out first) Modified Paths: -------------- trunk/kdenlive/src/audiosignal.cpp trunk/kdenlive/src/audiosignal.h trunk/kdenlive/src/mainwindow.cpp trunk/kdenlive/src/renderer.cpp Modified: trunk/kdenlive/src/audiosignal.cpp =================================================================== --- trunk/kdenlive/src/audiosignal.cpp 2010-11-24 08:26:33 UTC (rev 5116) +++ trunk/kdenlive/src/audiosignal.cpp 2010-11-24 09:46:47 UTC (rev 5117) @@ -50,6 +50,21 @@ } +void AudioSignal::slotReceiveAudio(const QVector<int16_t>& data, int freq ,int num_channels ,int samples){ + + int num_samples = samples > 200 ? 200 : samples; + + + QByteArray channels; + for (int i = 0; i < num_channels; i++) { + long val = 0; + for (int s = 0; s < num_samples; s ++) { + val += abs(data[i+s*num_channels] / 128); + } + channels.append(val / num_samples); + } + showAudio(channels); +} void AudioSignal::showAudio(const QByteArray arr) { channels = arr; Modified: trunk/kdenlive/src/audiosignal.h =================================================================== --- trunk/kdenlive/src/audiosignal.h 2010-11-24 08:26:33 UTC (rev 5116) +++ trunk/kdenlive/src/audiosignal.h 2010-11-24 09:46:47 UTC (rev 5117) @@ -39,6 +39,7 @@ void paintEvent(QPaintEvent*); public slots: void showAudio(const QByteArray); + void slotReceiveAudio(const QVector<int16_t>&,int,int,int); private slots: void slotSwitchAudioMonitoring(bool isOn); signals: Modified: trunk/kdenlive/src/mainwindow.cpp =================================================================== --- trunk/kdenlive/src/mainwindow.cpp 2010-11-24 08:26:33 UTC (rev 5116) +++ trunk/kdenlive/src/mainwindow.cpp 2010-11-24 09:46:47 UTC (rev 5117) @@ -112,12 +112,13 @@ static const char version[] = VERSION; static const int ID_TIMELINE_POS = 0; - namespace Mlt { class Producer; }; +Q_DECLARE_METATYPE(QVector<int16_t>) + EffectsList MainWindow::videoEffects; EffectsList MainWindow::audioEffects; EffectsList MainWindow::customEffects; @@ -134,7 +135,7 @@ m_findActivated(false), m_stopmotion(NULL) { - + qRegisterMetaType<QVector<int16_t> > (); // Create DBus interface new MainWindowAdaptor(this); QDBusConnection dbus = QDBusConnection::sessionBus(); @@ -278,12 +279,12 @@ m_audiosignalDock->setWidget(m_audiosignal); addDockWidget(Qt::TopDockWidgetArea, m_audiosignalDock); connect(m_audiosignal, SIGNAL(updateAudioMonitoring()), m_monitorManager, SLOT(slotUpdateAudioMonitoring())); - if (m_projectMonitor) { + /*if (m_projectMonitor) { connect(m_projectMonitor->render, SIGNAL(showAudioSignal(const QByteArray&)), m_audiosignal, SLOT(showAudio(const QByteArray&))); } if (m_clipMonitor) { connect(m_clipMonitor->render, SIGNAL(showAudioSignal(const QByteArray&)), m_audiosignal, SLOT(showAudio(const QByteArray&))); - } + }*/ m_audioSpectrum = new AudioSpectrum(m_projectMonitor, m_clipMonitor); m_audioSpectrumDock = new QDockWidget(i18n("AudioSpectrum"), this); @@ -297,11 +298,15 @@ m_audioSpectrum, SLOT(slotReceiveAudio(const QVector<int16_t>&,const int&,const int&,const int&))); b &= connect(m_projectMonitor->render, SIGNAL(showAudioSignal(const QByteArray&)), m_audioSpectrum, SLOT(slotReceiveAudioTemp(const QByteArray&))); + connect(m_projectMonitor->render, SIGNAL(audioSamplesSignal(const QVector<int16_t>&,const int&,const int&, const int&)), + m_audiosignal, SLOT(slotReceiveAudio(const QVector<int16_t>&,const int&,const int&,const int&))); } if (m_clipMonitor) { qDebug() << "clip monitor connected"; b &= connect(m_clipMonitor->render, SIGNAL(audioSamplesSignal(const QVector<int16_t>&,int,int,int)), m_audioSpectrum, SLOT(slotReceiveAudio(const QVector<int16_t>&,int,int,int))); + b &= connect(m_clipMonitor->render, SIGNAL(audioSamplesSignal(const QVector<int16_t>&,int,int,int)), + m_audiosignal, SLOT(slotReceiveAudio(const QVector<int16_t>&,int,int,int))); } Q_ASSERT(b); Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2010-11-24 08:26:33 UTC (rev 5116) +++ trunk/kdenlive/src/renderer.cpp 2010-11-24 09:46:47 UTC (rev 5117) @@ -49,7 +49,6 @@ #include <QDebug> - static void kdenlive_callback(void* /*ptr*/, int level, const char* fmt, va_list vl) { if (level > MLT_LOG_ERROR) return; @@ -1476,11 +1475,11 @@ QVector<int16_t> sampleVector(samples); memcpy(sampleVector.data(), data, samples*sizeof(int16_t)); - qDebug() << samples << " samples. Freq=" << freq << ", channels=" << num_channels; + //qDebug() << samples << " samples. Freq=" << freq << ", channels=" << num_channels; if (!data) return; - int num_samples = samples > 200 ? 200 : samples; + /*int num_samples = samples > 200 ? 200 : samples; QByteArray channels; @@ -1490,16 +1489,15 @@ val += abs(data[i+s*num_channels] / 128); } channels.append(val / num_samples); - } + }*/ - qDebug() << channels.size() << ": size."; if (samples > 0) { - emit showAudioSignal(channels); - qDebug() << "Emitting audioSamplesSignal with " << samples << " samples."; + //emit showAudioSignal(channels); + //qDebug() << "Emitting audioSamplesSignal with " << samples << " samples."; emit audioSamplesSignal(sampleVector, freq, num_channels, samples); } else { - emit showAudioSignal(QByteArray()); - qDebug() << "Not emitting audioSamplesSignal."; + //emit showAudioSignal(QByteArray()); + //qDebug() << "Not emitting audioSamplesSignal."; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |