From: Jean-Baptiste Mardelle Date: Sun, 14 Nov 2010 17:14:34 +0000 (+0000) Subject: Allow to enable / disable audio levels display X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=75881aec269354112a10b2aff6dc912b68fe0f3b;p=kdenlive Allow to enable / disable audio levels display svn path=/trunk/kdenlive/; revision=5095 --- diff --git a/src/audiosignal.cpp b/src/audiosignal.cpp index 0b0b92ce..e277a9a3 100644 --- a/src/audiosignal.cpp +++ b/src/audiosignal.cpp @@ -18,9 +18,13 @@ ***************************************************************************/ #include "audiosignal.h" +#include "kdenlivesettings.h" + +#include #include #include +#include #include #include #include @@ -37,6 +41,12 @@ AudioSignal::AudioSignal(QWidget *parent): QWidget(parent) col << Qt::yellow << Qt::yellow << Qt::yellow << Qt::yellow << Qt::yellow ; col << Qt::darkYellow << Qt::darkYellow << Qt::darkYellow; col << Qt::red << Qt::red; + setContextMenuPolicy(Qt::ActionsContextMenu); + QAction *showSignal = new QAction(i18n("Monitor audio signal"), this); + showSignal->setCheckable(true); + showSignal->setChecked(KdenliveSettings::monitor_audio()); + connect(showSignal, SIGNAL(toggled(bool)), this, SLOT(slotSwitchAudioMonitoring(bool))); + addAction(showSignal); } @@ -86,4 +96,11 @@ void AudioSignal::paintEvent(QPaintEvent* /*e*/) } p.end(); } + +void AudioSignal::slotSwitchAudioMonitoring(bool isOn) +{ + KdenliveSettings::setMonitor_audio(isOn); + emit updateAudioMonitoring(); +} + #include "audiosignal.moc" diff --git a/src/audiosignal.h b/src/audiosignal.h index 5677153b..f216bdf1 100644 --- a/src/audiosignal.h +++ b/src/audiosignal.h @@ -39,7 +39,10 @@ protected: void paintEvent(QPaintEvent*); public slots: void showAudio(const QByteArray); - +private slots: + void slotSwitchAudioMonitoring(bool isOn); +signals: + void updateAudioMonitoring(); }; diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg index 39923e76..f3bedc01 100644 --- a/src/kdenlivesettings.kcfg +++ b/src/kdenlivesettings.kcfg @@ -668,6 +668,11 @@ false + + + true + + diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 55431d6f..ff4b5255 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -276,6 +276,7 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, const QString & m_audiosignalDock->setObjectName("audiosignal"); m_audiosignalDock->setWidget(m_audiosignal); addDockWidget(Qt::TopDockWidgetArea, m_audiosignalDock); + connect(m_audiosignal, SIGNAL(updateAudioMonitoring()), m_monitorManager, SLOT(slotUpdateAudioMonitoring())); if (m_projectMonitor) { connect(m_projectMonitor->render, SIGNAL(showAudioSignal(const QByteArray&)), m_audiosignal, SLOT(showAudio(const QByteArray&))); } diff --git a/src/monitormanager.cpp b/src/monitormanager.cpp index 6da71c26..97c813f7 100644 --- a/src/monitormanager.cpp +++ b/src/monitormanager.cpp @@ -19,6 +19,7 @@ #include "monitormanager.h" +#include "renderer.h" #include "kdenlivesettings.h" #include @@ -175,4 +176,10 @@ void MonitorManager::slotRefreshCurrentMonitor() else m_projectMonitor->refreshMonitor(); } +void MonitorManager::slotUpdateAudioMonitoring() +{ + m_clipMonitor->render->analyseAudio = KdenliveSettings::monitor_audio(); + m_projectMonitor->render->analyseAudio = KdenliveSettings::monitor_audio(); +} + #include "monitormanager.moc" diff --git a/src/monitormanager.h b/src/monitormanager.h index ae2bd95f..5f3050d4 100644 --- a/src/monitormanager.h +++ b/src/monitormanager.h @@ -62,6 +62,7 @@ public slots: private slots: void slotRefreshCurrentMonitor(); + void slotUpdateAudioMonitoring(); private: Monitor *m_clipMonitor; diff --git a/src/renderer.cpp b/src/renderer.cpp index 62626128..7c63b479 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -48,7 +48,6 @@ #include - static void kdenlive_callback(void* /*ptr*/, int level, const char* fmt, va_list vl) { if (level > MLT_LOG_ERROR) return; @@ -68,7 +67,7 @@ static void consumer_frame_show(mlt_consumer, Render * self, mlt_frame frame_ptr if (self->sendFrameForAnalysis && frame_ptr->convert_image) { self->emitFrameUpdated(frame); } - self->showAudio(frame); + if (self->analyseAudio) self->showAudio(frame); if (frame.get_double("_speed") == 0.0) { self->emitConsumerStopped(); } else if (frame.get_double("_speed") < 0.0 && mlt_frame_get_position(frame_ptr) <= 0) { @@ -95,6 +94,7 @@ Render::Render(const QString & rendererName, int winid, QString profile, QWidget QObject(parent), m_isBlocked(0), sendFrameForAnalysis(false), + analyseAudio(KdenliveSettings::monitor_audio()), m_name(rendererName), m_mltConsumer(NULL), m_mltProducer(NULL), @@ -788,7 +788,6 @@ void Render::getFileProperties(const QDomElement xml, const QString &clipId, int metadataPropertyMap[ name.section('.', 0, -2)] = value; } producer->seek(0); - kDebug() << "REquested fuile info for: " << url.path(); emit replyGetFileProperties(clipId, producer, filePropertyMap, metadataPropertyMap, replaceProducer); // FIXME: should delete this to avoid a leak... //delete producer; @@ -1219,20 +1218,17 @@ void Render::pause() void Render::switchPlay() { - kDebug() << "// SWITCH PLAY"; if (!m_mltProducer || !m_mltConsumer) return; if (m_isZoneMode) resetZoneMode(); if (m_mltProducer->get_speed() == 0.0) { m_isBlocked = false; - kDebug() << "// SWITCH PLAY, set spped to 1"; if (m_name == "clip" && m_framePosition == (int) m_mltProducer->get_out()) m_mltProducer->seek(0); m_mltProducer->set_speed(1.0); m_mltConsumer->set("refresh", 1); } else { m_isBlocked = true; m_mltConsumer->set("refresh", 0); - kDebug() << "// SWITCH PLAY, set spped to 0"; m_mltProducer->set_speed(0.0); //emit rendererPosition(m_framePosition); m_mltProducer->seek(m_framePosition); @@ -1457,7 +1453,7 @@ void Render::showFrame(Mlt::Frame& frame) QImage qimage(width, height, QImage::Format_ARGB32_Premultiplied); memcpy(qimage.scanLine(0), image, width * height * 4); emit showImageSignal(qimage); - showAudio(frame); + if (analyseAudio) showAudio(frame); if (sendFrameForAnalysis && frame.get_frame()->convert_image) { emit frameUpdated(qimage.rgbSwapped()); } diff --git a/src/renderer.h b/src/renderer.h index 0749ad13..3fca05c8 100644 --- a/src/renderer.h +++ b/src/renderer.h @@ -252,6 +252,8 @@ Q_OBJECT public: void showFrame(Mlt::Frame&); void showAudio(Mlt::Frame&); + /** @brief This property is used to decide if the renderer should send audio data for monitoring. */ + bool analyseAudio; /** @brief This property is used to decide if the renderer should convert it's frames to QImage for use in other Kdenlive widgets. */ bool sendFrameForAnalysis; QList checkTrackSequence(int);