From: <gr...@us...> - 2010-11-24 08:26:39
|
Revision: 5116 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5116&view=rev Author: granjow Date: 2010-11-24 08:26:33 +0000 (Wed, 24 Nov 2010) Log Message: ----------- Audio scope: Signals and slots not working Modified Paths: -------------- trunk/kdenlive/src/audioscopes/abstractaudioscopewidget.cpp trunk/kdenlive/src/audioscopes/abstractaudioscopewidget.h trunk/kdenlive/src/audioscopes/audiospectrum.cpp trunk/kdenlive/src/audioscopes/audiospectrum.h trunk/kdenlive/src/mainwindow.cpp trunk/kdenlive/src/renderer.cpp trunk/kdenlive/src/renderer.h Modified: trunk/kdenlive/src/audioscopes/abstractaudioscopewidget.cpp =================================================================== --- trunk/kdenlive/src/audioscopes/abstractaudioscopewidget.cpp 2010-11-24 03:56:51 UTC (rev 5115) +++ trunk/kdenlive/src/audioscopes/abstractaudioscopewidget.cpp 2010-11-24 08:26:33 UTC (rev 5116) @@ -433,7 +433,7 @@ slotRenderZoneUpdated(); } -void AbstractAudioScopeWidget::slotReceiveAudio(const QVector<int16_t> sampleData, const int freq, const int num_channels, const int num_samples) +void AbstractAudioScopeWidget::slotReceiveAudio(const QVector<int16_t>& sampleData, int freq, int num_channels, int num_samples) { qDebug() << "Received audio. Size is " << (int) sampleData.size() << "."; if (sampleData.size() > 0) { @@ -442,6 +442,11 @@ //TODO } +void AbstractAudioScopeWidget::slotReceiveAudioTemp(const QByteArray arr) +{ + qDebug() << "Audio signal received"; +} + void AbstractAudioScopeWidget::slotResetRealtimeFactor(bool realtimeChecked) { if (!realtimeChecked) { Modified: trunk/kdenlive/src/audioscopes/abstractaudioscopewidget.h =================================================================== --- trunk/kdenlive/src/audioscopes/abstractaudioscopewidget.h 2010-11-24 03:56:51 UTC (rev 5115) +++ trunk/kdenlive/src/audioscopes/abstractaudioscopewidget.h 2010-11-24 08:26:33 UTC (rev 5116) @@ -220,7 +220,8 @@ on whether it is currently visible and whether a calculation thread is already running. */ void slotRenderZoneUpdated(); void slotRenderZoneUpdated(QImage);//OLD - void slotReceiveAudio(const QVector<int16_t> sampleData, const int freq, const int num_channels, const int num_samples); // NEW, TODO comment + void slotReceiveAudio(const QVector<int16_t>& sampleData, int freq, int num_channels, int num_samples); // NEW, TODO comment + void slotReceiveAudioTemp(const QByteArray arr); /** The following slots are called when rendering of a component has finished. They e.g. update the widget and decide whether to immediately restart the calculation thread. */ void slotHUDRenderingFinished(uint mseconds, uint accelerationFactor); Modified: trunk/kdenlive/src/audioscopes/audiospectrum.cpp =================================================================== --- trunk/kdenlive/src/audioscopes/audiospectrum.cpp 2010-11-24 03:56:51 UTC (rev 5115) +++ trunk/kdenlive/src/audioscopes/audiospectrum.cpp 2010-11-24 08:26:33 UTC (rev 5116) @@ -5,17 +5,29 @@ AbstractAudioScopeWidget(projMonitor, clipMonitor, true, parent) { init(); + m_cfg = kiss_fftr_alloc(512, 0,0,0); } +AudioSpectrum::~AudioSpectrum() +{ + free(m_cfg); +} QString AudioSpectrum::widgetName() const { return QString("audiospectrum"); } bool AudioSpectrum::isBackgroundDependingOnInput() const { return false; } -bool AudioSpectrum::isScopeDependingOnInput() const { return false; } +bool AudioSpectrum::isScopeDependingOnInput() const { return true; } bool AudioSpectrum::isHUDDependingOnInput() const { return false; } QImage AudioSpectrum::renderBackground(uint) { return QImage(); } QImage AudioSpectrum::renderScope(uint accelerationFactor, const QVector<int16_t> audioFrame, const int freq, const int num_channels, const int num_samples) { + float data[512]; + kiss_fft_cpx freqData[512]; + for (int i = 0; i < 512; i++) { + data[i] = (float) audioFrame.data()[i]; + } + kiss_fftr(m_cfg, data, freqData); + qDebug() << freqData[0].r << " " << freqData[1].r << " " << freqData[2].r; return QImage(); } QImage AudioSpectrum::renderHUD(uint) { return QImage(); } Modified: trunk/kdenlive/src/audioscopes/audiospectrum.h =================================================================== --- trunk/kdenlive/src/audioscopes/audiospectrum.h 2010-11-24 03:56:51 UTC (rev 5115) +++ trunk/kdenlive/src/audioscopes/audiospectrum.h 2010-11-24 08:26:33 UTC (rev 5116) @@ -5,6 +5,7 @@ #include "abstractaudioscopewidget.h" #include "ui_audiospectrum_ui.h" +#include "tools/kiss_fftr.h" class AudioSpectrum_UI; @@ -13,6 +14,7 @@ public: AudioSpectrum(Monitor *projMonitor, Monitor *clipMonitor, QWidget *parent = 0); + ~AudioSpectrum(); // Implemented virtual methods QString widgetName() const; @@ -30,6 +32,7 @@ private: Ui::AudioSpectrum_UI *ui; + kiss_fftr_cfg m_cfg; }; #endif // AUDIOSPECTRUM_H Modified: trunk/kdenlive/src/mainwindow.cpp =================================================================== --- trunk/kdenlive/src/mainwindow.cpp 2010-11-24 03:56:51 UTC (rev 5115) +++ trunk/kdenlive/src/mainwindow.cpp 2010-11-24 08:26:33 UTC (rev 5116) @@ -284,22 +284,26 @@ if (m_clipMonitor) { connect(m_clipMonitor->render, SIGNAL(showAudioSignal(const QByteArray&)), m_audiosignal, SLOT(showAudio(const QByteArray&))); } - //connect(m_histogramDock, SIGNAL(visibilityChanged(bool)), this, SLOT(slotUpdateScopeFrameRequest())); - //connect(m_histogram, SIGNAL(requestAutoRefresh(bool)), this, SLOT(slotUpdateScopeFrameRequest())); m_audioSpectrum = new AudioSpectrum(m_projectMonitor, m_clipMonitor); m_audioSpectrumDock = new QDockWidget(i18n("AudioSpectrum"), this); m_audioSpectrumDock->setObjectName(m_audioSpectrum->widgetName()); m_audioSpectrumDock->setWidget(m_audioSpectrum); addDockWidget(Qt::TopDockWidgetArea, m_audioSpectrumDock); + bool b = true; if (m_projectMonitor) { - connect(m_projectMonitor->render, SIGNAL(audioSamplesSignal(QVector<int16_t>,int,int,int)), - m_audioSpectrum, SLOT(slotReceiveAudio(QVector<int16_t>,int,int,int))); + qDebug() << "project monitor connected"; + b &= connect(m_projectMonitor->render, SIGNAL(audioSamplesSignal(const QVector<int16_t>&,const int&,const int&, const int&)), + 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&))); } if (m_clipMonitor) { - connect(m_clipMonitor->render, SIGNAL(audioSamplesSignal(QVector<int16_t>,int,int,int)), - m_audioSpectrum, SLOT(slotReceiveAudio(QVector<int16_t>,int,int,int))); + 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))); } + Q_ASSERT(b); m_undoViewDock = new QDockWidget(i18n("Undo History"), this); m_undoViewDock->setObjectName("undo_history"); Modified: trunk/kdenlive/src/renderer.cpp =================================================================== --- trunk/kdenlive/src/renderer.cpp 2010-11-24 03:56:51 UTC (rev 5115) +++ trunk/kdenlive/src/renderer.cpp 2010-11-24 08:26:33 UTC (rev 5116) @@ -1477,8 +1477,6 @@ QVector<int16_t> sampleVector(samples); memcpy(sampleVector.data(), data, samples*sizeof(int16_t)); qDebug() << samples << " samples. Freq=" << freq << ", channels=" << num_channels; - qDebug() << sizeof(char) << " (c) " << sizeof(int16_t) << " (int16_t)"; - qDebug() << sampleVector.at(0); if (!data) return; @@ -1497,9 +1495,11 @@ qDebug() << channels.size() << ": size."; if (samples > 0) { emit showAudioSignal(channels); + qDebug() << "Emitting audioSamplesSignal with " << samples << " samples."; emit audioSamplesSignal(sampleVector, freq, num_channels, samples); } else { emit showAudioSignal(QByteArray()); + qDebug() << "Not emitting audioSamplesSignal."; } } Modified: trunk/kdenlive/src/renderer.h =================================================================== --- trunk/kdenlive/src/renderer.h 2010-11-24 03:56:51 UTC (rev 5115) +++ trunk/kdenlive/src/renderer.h 2010-11-24 08:26:33 UTC (rev 5116) @@ -354,7 +354,7 @@ void showAudioSignal(const QByteArray); /** @brief The renderer refreshed the current frame, but no seeking was done. */ void frameUpdated(QImage); - void audioSamplesSignal(const QVector<int16_t> data, const int freq, const int num_channels, const int num_samples); + void audioSamplesSignal(const QVector<int16_t>&, int freq, int num_channels, int num_samples); public slots: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |