fixed audio effects sometimes being applied more than once
This commit is contained in:
+18
-16
@@ -47,22 +47,24 @@ void PanEffect::save(QXmlStreamWriter *stream) {
|
||||
}
|
||||
|
||||
void PanEffect::process_audio(quint8 *samples, int nb_bytes) {
|
||||
for (int i=0;i<nb_bytes;i+=4) {
|
||||
qint16 left_sample = (qint16) ((samples[i+1] << 8) | samples[i]);
|
||||
qint16 right_sample = (qint16) ((samples[i+3] << 8) | samples[i+2]);
|
||||
if (pan_val->value() != 0) {
|
||||
for (int i=0;i<nb_bytes;i+=4) {
|
||||
qint16 left_sample = (qint16) ((samples[i+1] << 8) | samples[i]);
|
||||
qint16 right_sample = (qint16) ((samples[i+3] << 8) | samples[i+2]);
|
||||
|
||||
float val = pan_val->value()*0.01;
|
||||
if (val < 0) {
|
||||
// affect right channel
|
||||
right_sample *= (1-std::abs(val));
|
||||
} else {
|
||||
// affect left channel
|
||||
left_sample *= (1-val);
|
||||
}
|
||||
float val = pan_val->value()*0.01f;
|
||||
if (val < 0) {
|
||||
// affect right channel
|
||||
right_sample *= (1-std::abs(val));
|
||||
} else {
|
||||
// affect left channel
|
||||
left_sample *= (1-val);
|
||||
}
|
||||
|
||||
samples[i+3] = (quint8) (right_sample >> 8);
|
||||
samples[i+2] = (quint8) right_sample;
|
||||
samples[i+1] = (quint8) (left_sample >> 8);
|
||||
samples[i] = (quint8) left_sample;
|
||||
}
|
||||
samples[i+3] = (quint8) (right_sample >> 8);
|
||||
samples[i+2] = (quint8) right_sample;
|
||||
samples[i+1] = (quint8) (left_sample >> 8);
|
||||
samples[i] = (quint8) left_sample;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+12
-11
@@ -3,6 +3,7 @@
|
||||
#include <QGridLayout>
|
||||
#include <QSpinBox>
|
||||
#include <QLabel>
|
||||
#include <QDebug>
|
||||
|
||||
#include "ui/collapsiblewidget.h"
|
||||
|
||||
@@ -31,7 +32,7 @@ Effect* VolumeEffect::copy(Clip* c) {
|
||||
return v;
|
||||
}
|
||||
|
||||
void VolumeEffect::load(QXmlStreamReader *stream) {
|
||||
void VolumeEffect::load(QXmlStreamReader* stream) {
|
||||
while (!(stream->isEndElement() && stream->name() == "effect") && !stream->atEnd()) {
|
||||
stream->readNext();
|
||||
if (stream->isStartElement() && stream->name() == "volume") {
|
||||
@@ -41,17 +42,17 @@ void VolumeEffect::load(QXmlStreamReader *stream) {
|
||||
}
|
||||
}
|
||||
|
||||
void VolumeEffect::save(QXmlStreamWriter *stream) {
|
||||
void VolumeEffect::save(QXmlStreamWriter* stream) {
|
||||
stream->writeTextElement("volume", QString::number(volume_val->value()));
|
||||
}
|
||||
|
||||
void VolumeEffect::process_audio(quint8 *samples, int nb_bytes) {
|
||||
for (int i=0;i<nb_bytes;i+=2) {
|
||||
qint16 full_sample = (qint16) ((samples[i+1] << 8) | samples[i]);
|
||||
|
||||
full_sample *= volume_val->value()*0.01;
|
||||
|
||||
samples[i+1] = (quint8) (full_sample >> 8);
|
||||
samples[i] = (quint8) full_sample;
|
||||
}
|
||||
void VolumeEffect::process_audio(quint8* samples, int nb_bytes) {
|
||||
if (volume_val->value() != 0) {
|
||||
for (int i=0;i<nb_bytes;i+=2) {
|
||||
qint16 samp = (qint16) ((samples[i+1] << 8) | samples[i]);
|
||||
samp *= (volume_val->value()*0.01f);
|
||||
samples[i+1] = (quint8) (samp >> 8);
|
||||
samples[i] = (quint8) samp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user