diff --git a/effects/paneffect.cpp b/effects/paneffect.cpp index a7f932da5..3a779939e 100644 --- a/effects/paneffect.cpp +++ b/effects/paneffect.cpp @@ -47,22 +47,24 @@ void PanEffect::save(QXmlStreamWriter *stream) { } void PanEffect::process_audio(quint8 *samples, int nb_bytes) { - for (int i=0;ivalue() != 0) { + for (int i=0;ivalue()*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; + } + } } diff --git a/effects/volumeeffect.cpp b/effects/volumeeffect.cpp index 5c64ebd8b..a3c59fb56 100644 --- a/effects/volumeeffect.cpp +++ b/effects/volumeeffect.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #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;ivalue()*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;ivalue()*0.01f); + samples[i+1] = (quint8) (samp >> 8); + samples[i] = (quint8) samp; + } + } } diff --git a/playback/cacher.cpp b/playback/cacher.cpp index fe8d4d91a..312dff63f 100644 --- a/playback/cacher.cpp +++ b/playback/cacher.cpp @@ -32,6 +32,13 @@ void cache_audio_worker(Clip* c) { // but there still may be samples in swresample swr_convert_frame(c->swr_ctx, frame, NULL); } + + // perform all audio effects + int nb_bytes = av_samples_get_buffer_size(NULL, frame->channels, frame->nb_samples, static_cast(frame->format), 1); + for (int j=0;jeffects.size();j++) { + Effect* e = c->effects.at(j); + if (e->is_enabled()) e->process_audio(frame->data[0], nb_bytes); + } } if (frame->nb_samples == 0) { @@ -39,11 +46,6 @@ void cache_audio_worker(Clip* c) { } else { int nb_bytes = av_samples_get_buffer_size(NULL, frame->channels, frame->nb_samples, static_cast(frame->format), 1); - // perform all audio effects - for (int j=0;jeffects.size();j++) { - c->effects.at(j)->process_audio(frame->data[0], nb_bytes); - } - if (c->audio_buffer_write == 0) c->audio_buffer_write = (((int)(audio_ibuffer_read/2))*2) + 1024; int half_buffer = (audio_ibuffer_size/2); while (c->frame_sample_index < nb_bytes) { diff --git a/project/effect.cpp b/project/effect.cpp index 8c6caa2f5..13b07b191 100644 --- a/project/effect.cpp +++ b/project/effect.cpp @@ -6,6 +6,8 @@ #include "ui/collapsiblewidget.h" #include "effects/effects.h" +#include + Effect::Effect(Clip* c) : parent_clip(c) { name = ""; @@ -28,6 +30,10 @@ void Effect::field_changed() { panel_viewer->viewer_widget->update(); } +bool Effect::is_enabled() { + return container->enabled_check->isChecked(); +} + Effect* Effect::copy(Clip*) {return NULL;} void Effect::load(QXmlStreamReader*) {} void Effect::save(QXmlStreamWriter*) {} diff --git a/project/effect.h b/project/effect.h index 2e731bdb1..f47495383 100644 --- a/project/effect.h +++ b/project/effect.h @@ -24,6 +24,8 @@ public: QWidget* ui; Clip* parent_clip; + bool is_enabled(); + virtual Effect* copy(Clip* c); virtual void load(QXmlStreamReader* stream); virtual void save(QXmlStreamWriter* stream); diff --git a/ui/collapsiblewidget.h b/ui/collapsiblewidget.h index b771c8387..58aa4a02d 100644 --- a/ui/collapsiblewidget.h +++ b/ui/collapsiblewidget.h @@ -16,9 +16,10 @@ public: CollapsibleWidget(QWidget* parent = 0); void setContents(QWidget* c); void setText(const QString &); + + QCheckBox* enabled_check; private: QLabel* header; - QCheckBox* enabled_check; QHBoxLayout* title_bar; QVBoxLayout* layout; QPushButton* collapse_button;