-
Notifications
You must be signed in to change notification settings - Fork 548
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Preserve waterfall during zooms and pans #1379
Conversation
f9ae307
to
efc0e42
Compare
Thanks! This looks like a useful change. I did some initial testing and it appears to work well. I'll let you know once I've had a chance to do a bit more testing and code review. |
efc0e42
to
b9efbe2
Compare
An observation: Because the RTL-SDR driver has a very large default buffer size, it can take some time for things to get back to the correct place after retuning: Changing the device string to something like I'm not suggesting that anything needs to be changed in this PR; gr-osmosdr should probably use a smaller default buffer size. (SoapyRTLSDR has the same issue, although its default buffer size is smaller.) |
Another observation: Tuning by a large step clears the whole waterfall. This may be a reasonable thing to do, but could also make it harder to scan for signals. I'll have to play with it some more to see how it feels. |
Pros: I've experimented with the plotter in the past, trying to preserve the waterfall history while panning/zooming, but decided to implement only "persistent waterfall during IQ playback" feature and gave up implementing full redraws when the DSP is running. Implementing the "persistent waterfall" during real-time operation requires us either to keep all FFT bins, that correspond to each waterfall row - it needs too much RAM in case of 4k display and 1M+ FFT size or to keep all samples, needed to re-render all waterfall lines in iq_fft block history - it needs even more RAM in case of high sample rate and long waterfall time span. This is not the case when playing an IQ file as any block of samples can be easily fetched from the HDD/SSD, so no extra RAM is wasted, but the rendering speed is limited by the storage media random read rate... It may be better to implement slightly different feature: store frequency/zoom information with each waterfall line. Pointing a mouse to a waterfall pixel would result in correct frequency displayed in the tooltip and clicking a waterfall pixel would result in tuning to that frequency independent of current plotter center frequency/zoom level. It would not require too much RAM, but may be less intuitive to a user... |
yes i did note that there was that slight lag in certain circumstances which cannot be helped for the reasons you mentioned. i also agree with the pros/cons. may i propose a hybrid solution:
what do you think? |
please consider this #1392 which is less invasive than this PR. i may resurrect this PR in the future but as a conditional feature. |
new_span_int
was calculated but never used. I use it now to ensure getMinFrequency and getMaxFrequency do arithmetic correctly.See it in action:
Screen.Recording.2024-09-29.at.22.52.10.mov