X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fdelay_analyzer.cpp;fp=nageru%2Fdelay_analyzer.cpp;h=e720c30a1472b4544c7f4a49a754d819129f25cb;hb=02f95f60afd99a0ae3b1cc67ea34a647dc09d357;hp=7e25738667e7330e0c29affb06337e2f51595858;hpb=bd01e11a41a19fef2315319909d8655cac359f0f;p=nageru diff --git a/nageru/delay_analyzer.cpp b/nageru/delay_analyzer.cpp index 7e25738..e720c30 100644 --- a/nageru/delay_analyzer.cpp +++ b/nageru/delay_analyzer.cpp @@ -47,6 +47,8 @@ void DelayAnalyzer::grab_clicked() grabbing = true; clip1.clear(); clip2.clear(); + ui->peak_display_1->reset_base(); + ui->peak_display_2->reset_base(); ui->peak_display_1->audio_clip_updated(); ui->peak_display_2->audio_clip_updated(); } @@ -121,7 +123,25 @@ void DelayAnalyzer::add_audio(DeviceSpec device_spec, const uint8_t *data, unsig ui->peak_display_2->audio_clip_updated(); } - if (clip1.get_length_seconds() >= 1.0 && clip2.get_length_seconds() >= 1.0) { + if (clip1.empty() && clip2.empty()) { + // No interesting data yet. + return; + } + + steady_clock::time_point base; + if (!clip1.empty() && !clip2.empty()) { + base = max(clip1.get_first_sample(), clip2.get_first_sample()); + } else if (!clip1.empty()) { + base = clip1.get_first_sample(); + } else { + assert(!clip2.empty()); + base = clip2.get_first_sample(); + } + ui->peak_display_1->set_base(base); + ui->peak_display_2->set_base(base); + + if (clip1.get_length_seconds_after_base(base) >= 1.0 && + clip2.get_length_seconds_after_base(base) >= 1.0) { grabbing = false; } }