]> git.sesse.net Git - kdenlive/commitdiff
Allow to enable / disable audio levels display
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 14 Nov 2010 17:14:34 +0000 (17:14 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 14 Nov 2010 17:14:34 +0000 (17:14 +0000)
svn path=/trunk/kdenlive/; revision=5095

src/audiosignal.cpp
src/audiosignal.h
src/kdenlivesettings.kcfg
src/mainwindow.cpp
src/monitormanager.cpp
src/monitormanager.h
src/renderer.cpp
src/renderer.h

index 0b0b92cea8dffff40e23e5b7791f6704fb404b44..e277a9a36aa23aa810fcf074f228057ceb87b3f5 100644 (file)
  ***************************************************************************/
 
 #include "audiosignal.h"
+#include "kdenlivesettings.h"
+
+#include <KLocale>
 
 #include <QVBoxLayout>
 #include <QLabel>
+#include <QAction>
 #include <QPainter>
 #include <QDebug>
 #include <QList>
@@ -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"
index 5677153bdbc32d51b9c8e2bb6ada5529962f6847..f216bdf1da05de5216f38f8c59c60f929dacc22b 100644 (file)
@@ -39,7 +39,10 @@ protected:
     void paintEvent(QPaintEvent*);
 public slots:
     void showAudio(const QByteArray);
-
+private slots:
+  void slotSwitchAudioMonitoring(bool isOn);
+signals:
+  void updateAudioMonitoring();
 
 };
 
index 39923e76ba63c3891a12fa37faee2d1e0f0087b0..f3bedc013a352271d21c5e4eb68a57c38f83c4ab 100644 (file)
       <default>false</default>
     </entry>
 
+    <entry name="monitor_audio" type="Bool">
+      <label>Display audio levels.</label>
+      <default>true</default>
+    </entry>
+
   </group>
 
 </kcfg>
index 55431d6f6ddd2d7d2fa79495bf6cb9454a0204f7..ff4b5255aae3b335920db309529cb8cf3d01efd3 100644 (file)
@@ -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&)));
     }
index 6da71c26a0e20eab430326ebb4478cb21a1b68d3..97c813f78c7ca87b6ea03bb6e3a15196a381f19d 100644 (file)
@@ -19,6 +19,7 @@
 
 
 #include "monitormanager.h"
+#include "renderer.h"
 #include "kdenlivesettings.h"
 
 #include <mlt++/Mlt.h>
@@ -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"
index ae2bd95fb8dcae74f7bd4b10e23e9487253efceb..5f3050d4c77e8d5169146f4f9dc61cb6d8cde386 100644 (file)
@@ -62,6 +62,7 @@ public slots:
 
 private slots:
     void slotRefreshCurrentMonitor();
+    void slotUpdateAudioMonitoring();
 
 private:
     Monitor *m_clipMonitor;
index 62626128766907a52070ee26fb12e62e97709ba3..7c63b47912048781748ec7235ad3112d75c42264 100644 (file)
@@ -48,7 +48,6 @@
 #include <cstdarg>
 
 
-
 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());
     }
index 0749ad13ddae6522478a22d0d6d7d972c57d66f4..3fca05c8946d0c8f7662a35c3b7a3660c5de2c16 100644 (file)
@@ -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 <int> checkTrackSequence(int);