Skip to content
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

Decoders not running continously #728

Open
c0d3z3r0 opened this issue Jan 21, 2024 · 11 comments · May be fixed by #731
Open

Decoders not running continously #728

c0d3z3r0 opened this issue Jan 21, 2024 · 11 comments · May be fixed by #731

Comments

@c0d3z3r0
Copy link

I would expect a decoder (e.g. I2C) to run continuosly during capturing. However, decoding only takes place when either a) stopping the capture or b) hit the decoder settings button (not changing anything!).

image

@dreamsource-tai
Copy link
Collaborator

@c0d3z3r0
What is your DSView version?
The v1.3.1 version, on stream mode, the decoder works during capturing.

@c0d3z3r0
Copy link
Author

Oh sorry, I forgot to mention the version. I tried v1.3.1 on both Windows and Linux and see the same problem

@c0d3z3r0
Copy link
Author

Here is a demonstration of the problem

simplescreenrecorder-2024-01-22_09.07.17.mp4

@dreamsource-tai
Copy link
Collaborator

@c0d3z3r0
From the video you provided, it can be seen that your acquisition time is 57 minutes, so the decoding progress will be slower throughout the entire acquisition process. You can set the time lower to verify that the decoder has been working continuously during the acquisition process.

@c0d3z3r0
Copy link
Author

c0d3z3r0 commented Jan 23, 2024

Why does the maximum acquisition time slow down the decoding process? In my video you see that decoding happens instantly when clicking the settings button. Shouldn't the decoder be triggered each time any of the signals change?

Update: You were right about the decoder itself. I have added some debug print statements and the decoder continuously is being fed with new data and sends it to DSView through putx. That means, there is a problem in the GUI not updating the decoded data table continuously.

@c0d3z3r0
Copy link
Author

c0d3z3r0 commented Jan 23, 2024

Another update: I found the source of the problem. The table (protocol dock) only gets updated in 10% steps:

https://github.com/DreamSourceLab/DSView/blob/master/DSView/pv/dock/protocoldock.cpp#L480

Probably it would be better to bind update_model() to the signal decode_done. I tried to do it, but I'm not familiar with Qt signals...

@dreamsource-tai
Copy link
Collaborator

@c0d3z3r0
During the collection process, if the collection is stopped midway, the decoding task can immediately end because the data volume has been determined. However, during the one hour collection process, the data volume continues to approach the total data volume, which takes an hour to complete, so the decoding progress will be slower.

@c0d3z3r0
Copy link
Author

You can clearly see in the video that it's just a view update issue. Did you even read my previous comment?

The problem is that binding decoding to the percentage update signal (each 10%) does not make any sense. That is the reason why it's "slower". However, not decoding is slower but only updating the view.

To fix this, update_model() should be bound to decode_done() instead. I just don't know how to do it bc I'm not an Qt expert.

c0d3z3r0 added a commit to c0d3z3r0/DSView that referenced this issue Jan 24, 2024
Currently, the decoded data table only gets updated on 10% steps of the
overall capture time. This slows down updating of the table on long
running sessions, making realtime inspection of e.g. I2C communication
impossible.

Instead of relying on the capture progress, bind the table update to the
annotation generation.

Fixes: DreamSourceLab#728
Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
@c0d3z3r0 c0d3z3r0 linked a pull request Jan 24, 2024 that will close this issue
@c0d3z3r0
Copy link
Author

I managed to fix this...

Previous behaviour:

298507295-37801f22-8a5e-419c-848e-dec77adf72ed.mp4

New behaviour:

simplescreenrecorder-2024-01-24_14.46.57.mp4

@dreamsource-tai
Copy link
Collaborator

@c0d3z3r0
Sometimes, decoding generates a large amount of model data, so it is necessary to control the refresh rate.

@c0d3z3r0
Copy link
Author

c0d3z3r0 commented Apr 8, 2024

Maybe it would be possible to check the amount of data and limit refresh rate based on that. This way, slow communication via e.g. I2C can still be seen in more-or-less real-time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants