Commit 37028227 authored by Stefan Westerfeld's avatar Stefan Westerfeld

Integrate Limiter into main watermarking loop.

Signed-off-by: Stefan Westerfeld's avatarStefan Westerfeld <stefan@space.twc.de>
parent 334fae50
......@@ -6,6 +6,7 @@
#include "wmcommon.hh"
#include "fft.hh"
#include "convcode.hh"
#include "limiter.hh"
#include "sfinputstream.hh"
#include "sfoutputstream.hh"
#include "mp3inputstream.hh"
......@@ -643,6 +644,11 @@ add_watermark (const string& infile, const string& outfile, const string& bits)
if (!wm_resampler.init_ok())
return 1;
Limiter limiter (in_stream->sample_rate());
limiter.set_attack (Params::limiter_attack_ms);
limiter.set_release (Params::limiter_release_ms);
limiter.set_ceiling (Params::limiter_ceiling);
/* for signal to noise ratio */
double snr_delta_power = 0;
double snr_signal_power = 0;
......@@ -687,6 +693,8 @@ add_watermark (const string& infile, const string& outfile, const string& bits)
for (size_t i = 0; i < samples.size(); i++)
samples[i] += orig_samples[i];
samples = limiter.process (samples);
size_t max_write_frames = total_input_frames - total_output_frames;
if (samples.size() > max_write_frames * n_channels)
samples.resize (max_write_frames * n_channels);
......
......@@ -37,6 +37,10 @@ public:
static constexpr size_t frames_pad_start = 250; // padding at start, in case track starts with silence
static constexpr int mark_sample_rate = 44100; // watermark generation and detection sample rate
static constexpr double limiter_attack_ms = 5;
static constexpr double limiter_release_ms = 500;
static constexpr double limiter_ceiling = 1.0;
static int test_cut; // for sync test
static bool test_no_sync;
static int test_truncate;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment