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,19 +419,39 @@ test_snr (const string& orig_file, const string& wm_file) ...@@ -419,19 +419,39 @@ test_snr (const string& orig_file, const string& wm_file)
assert (orig_data.n_values() == wm_data.n_values()); assert (orig_data.n_values() == wm_data.n_values());
assert (orig_data.n_channels() == orig_data.n_channels()); 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(); 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_delta_power = 0;
double snr_signal_power = 0; double snr_signal_power = 0;
for (size_t i = 0; i < orig_signal.size(); i++) for (size_t i = 0; i < orig_signal.size(); i++)
{ {
const double orig = orig_signal[i]; // original sample if (orig_signal[i] != 0)
const double delta = orig_signal[i] - wm_signal[i]; // watermark {
const double orig = orig_signal[i]; // original sample
const double delta = orig_signal[i] - wm_signal[i]; // watermark
snr_delta_power += delta * delta; snr_delta_power += delta * delta;
snr_signal_power += orig * orig; snr_signal_power += orig * orig;
}
} }
printf ("%f\n", 10 * log10 (snr_signal_power / snr_delta_power)); printf ("%f\n", 10 * log10 (snr_signal_power / snr_delta_power));
return 0; 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