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

Make wfb-ng mavlink injected system_id and component_id configurable #21

Closed
seriyps opened this issue Oct 12, 2024 · 6 comments
Closed

Comments

@seriyps
Copy link
Collaborator

seriyps commented Oct 12, 2024

It seems that wfb-ng injects artificial Mavlink packets to report the values of video RSSI and FEC etc and pixelpilot uses those values in OSD.

The way pixelpilot distinguishes wfb-ng mavlink message from other mavlink radio status packets is by hardcoded system_id and component_id parameters of the packet:

PixelPilot_rk/src/mavlink.c

Lines 276 to 277 in e070b64

if ((message.sysid != 3) || (message.compid != 68)) {
break;

However those values can be tweaked in wfb-ng config file: https://github.com/svpcom/wfb-ng/blob/f08a07304903cb0b57c7ae25c7e71cc7aeab2811/wfb_ng/conf/master.cfg#L226-L228

So I think we should provide some knobs to select different values of those parameters.

However it might be not needed if we implement #18 and get the same (or even more detailed) information from wfb binary log

@luastoned
Copy link
Collaborator

Like I posted in the other issue, I think OSD elements should be more decoupled from PP itself, maybe we can have a chat in the group?

@zhouruixi
Copy link

I don't know if there is a concept of layers in drm. Can we separate the OSD display program and display OSD on the upper layer of the video, and finally merge the image and display it on the monitor? If plan to make a control menu similar to rubyfpv later, we can put control menu into the OSD display program.

@seriyps
Copy link
Collaborator Author

seriyps commented Oct 20, 2024

There are layers (called "planes") in DRM and pixelpilot indeed draws the video and OSD on separate planes. However I doubt OSD can be easily rendered to pixelpilot's plane by separate program... but I'm not an expert.

@seriyps
Copy link
Collaborator Author

seriyps commented Oct 21, 2024

@zhouruixi @luastoned I created a separate ticket #27 to discuss how can we improve OSD

@seriyps
Copy link
Collaborator Author

seriyps commented Oct 21, 2024

@zhouruixi this is the man page that describes the Linux subsystem that is used by Pixelpilot for displaying the video: https://manpages.org/drm-kms/7

It is very low-level which I believe allows it to have the lowest possible latency, but at the same time it can not share the monitor with other window - pixelpilot works on the same level where it is usually X server or Wayland

@seriyps
Copy link
Collaborator Author

seriyps commented Nov 6, 2024

Fixed by #36

@seriyps seriyps closed this as completed Nov 6, 2024
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

No branches or pull requests

3 participants