Commit acaeb485 authored by Stefan Westerfeld's avatar Stefan Westerfeld

add hacky snr peak masking

Signed-off-by: Stefan Westerfeld's avatarStefan Westerfeld <stefan@space.twc.de>
parent 4a2f0b2d
......@@ -419,13 +419,32 @@ test_snr (const string& orig_file, const string& wm_file)
assert (orig_data.n_values() == wm_data.n_values());
assert (orig_data.n_channels() == orig_data.n_channels());
const auto& orig_signal = orig_data.samples();
auto orig_signal = orig_data.samples();
const auto& wm_signal = wm_data.samples();
for (int m = 0; m < orig_signal.size(); m++)
{
if (fabs (orig_signal[m]) > 0.9)
{
for (int k = -1000; k < 1000; k++)
{
if (m + k >= 0 && m + k < int (orig_signal.size()))
orig_signal[m + k] = 0;
}
}
}
#if 0
WavData out_wav_data (orig_signal, orig_data.n_channels(), orig_data.sample_rate(), orig_data.bit_depth());
out_wav_data.save ("/tmp/foo.wav");
#endif
double snr_delta_power = 0;
double snr_signal_power = 0;
for (size_t i = 0; i < orig_signal.size(); i++)
{
if (orig_signal[i] != 0)
{
const double orig = orig_signal[i]; // original sample
const double delta = orig_signal[i] - wm_signal[i]; // watermark
......@@ -433,6 +452,7 @@ test_snr (const string& orig_file, const string& wm_file)
snr_delta_power += delta * delta;
snr_signal_power += orig * orig;
}
}
printf ("%f\n", 10 * log10 (snr_signal_power / snr_delta_power));
return 0;
}
......
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