]> git.sesse.net Git - kdenlive/blobdiff - src/renderer.cpp
Frequency spectrum ...
[kdenlive] / src / renderer.cpp
index 8df9905624aa896ff67aba3fc0298aa7bec454ad..14730eda81d67eed6ec45e9c0801b7c3546d1904 100644 (file)
@@ -47,6 +47,7 @@
 #include <cstdlib>
 #include <cstdarg>
 
+#include <QDebug>
 
 static void kdenlive_callback(void* /*ptr*/, int level, const char* fmt, va_list vl)
 {
@@ -1471,23 +1472,19 @@ void Render::showAudio(Mlt::Frame& frame)
     int num_channels = 0;
     int samples = 0;
     int16_t* data = (int16_t*)frame.get_audio(audio_format, freq, num_channels, samples);
-    if (!data)
+
+    if (!data) {
         return;
-    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);
     }
 
+    // Data format: [ c00 c10 c01 c11 c02 c12 c03 c13 ... c0{samples-1} c1{samples-1} for 2 channels.
+    // So the vector is of size samples*channels.
+    QVector<int16_t> sampleVector(samples*num_channels);
+    memcpy(sampleVector.data(), data, samples*num_channels*sizeof(int16_t));
 
-    if (samples > 0)
-        emit showAudioSignal(channels);
-    else
-        emit showAudioSignal(QByteArray());
+    if (samples > 0) {
+        emit audioSamplesSignal(sampleVector, freq, num_channels, samples);
+    }
 }
 
 /*