-
Notifications
You must be signed in to change notification settings - Fork 533
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
Setting the filter width too narrow causes DSP to hang #1233
Comments
I can confirm this issue.
DSP freezes and GNU Radio complains about insufficient data in a buffer:
|
I think I've seen this before. One contributing factor is that the filter transition width is calculated from the filter bandwidth, so the filter becomes sharper (and therefore requires more taps) as the filter becomes narrower: gqrx/src/applications/gqrx/receiver.cpp Lines 687 to 714 in aa151a2
It might make sense to make the transition width constant. Otherwise, we'd need to set a lower limit on the transition width, or make sure the buffer size is large enough to accommodate long filters. |
It looks like another GNU Radio bug. |
Possible fix: 6387148 |
I was curious whether this bug is old, and it's been around since at least version 2.6. In this PR I tried to improve the situation: #825 But that didn't solve the problem for the "sharp" filter mode, and I also now see that it didn't limit the filter width when Ctrl+mouse wheel is used. (The bandwidth can even go negative when the mouse wheel is used!)
I'd like to avoid duplicating GNU Radio functionality in Gqrx if we can. I'll have a look around to see if there are other options. I did a quick test lowering the transition width here: Line 46 in aa151a2
But unfortunately that only forces the buffer size to be larger until the next time the flow graph is reconfigured. |
It's probably worth opening an issue to see whether something can be done upstream. |
Since buffers live on the output side of each block in GR, and FIRs need history on the input, there isn't a whole lot that can be done about this in GR 3.X, unless new functionality is added to reallocate buffers on the fly. The workaround is simple enough, even though it seems like the user program shouldn't have to have this kind of understanding of GR. To make things a little more logical, we could add a |
There is already |
Ha, good point. That should work too. |
It works only when narrow filter with sharp rolloff is selected at the time of nbrx creation. If the filter is changed to Normal/Wide /Soft/Normal and the DSP is restarted ( |
|
Hmm.... What version of GNU Radio are you using? |
Don't know what I was looking at - so this
|
No. I've tried everything... |
The |
There are 2 different problems:
|
If anyone gets a chance to retest this with the fix in GNU Radio |
That fix is now in GR v3.10.7.0. |
Fedora 38 with gqrx-2.15.9-7.fc38.x86_64. (However, I was able to reproduce the same issue with latest Gqrx master.)
DSP hangs after setting the filter width too narrow using Ctrl + mouse wheel. See the following screencast:
filter_width_hang.webm
This gets printed on stdout:
The text was updated successfully, but these errors were encountered: