-
-
Notifications
You must be signed in to change notification settings - Fork 30
Description
When running msposd on SSC338Q with video resolution higher than 1920x1080 (e.g. 3840x2160), the hardware overlay region is always capped at 1920x1080. The OSD does not scale to fill the full video frame and appears offset rather than centered.
Hardware / Software
- SoC: SSC338Q
- msposd version: 63499fe8-dirty, compiled 20260213_112114
- Video config: size: 3840x2160 in /etc/majestic.yaml or even 1920x1080
- Flight controller: ArduPilot (ArduCopter), MSP DisplayPort
- Ground station: QGroundControl (no built-in OSD position editor like Mission Planner, so OSD element positioning is done via OSD1_* parameters manually)
Steps to reproduce
msposd --master /dev/ttyS2 --baudrate 115200 --osd -r 20 --ahi 1 -v -x 0 -z 3840x2160
Log output
Loading /usr/share/fonts/font.png for 3840x2160
Glyph size: 36:54 on a 53:20 matrix. Overlay: 1800x1000
Glyph size: 36:54 on a 53:20 matrix. Overlay: 1920x1080
Create_region PixelFormat:3 Size: 1920:1080 X_Offset:960 Y_Offset:0 results: 0
Despite requesting -z 3840x2160, the actual overlay is created as 1920x1080. X_Offset is calculated as (3840-1920)/2 = 960, but the OSD still does not appear centered on screen. Y_Offset remains 0 instead of expected (2160-1080)/2 = 540.
Current workaround
Using an artificially inflated -z value to shift the overlay position:
msposd --master /dev/ttyS2 --baudrate 115200 --osd -r 20 --ahi 1 -v -x 1 -z 2760x1980
This roughly centers the OSD but does not properly scale it — elements remain rendered within 1920x1080 bounds. Since QGroundControl lacks a visual OSD grid editor (unlike Mission Planner), adjusting individual element positions to compensate is cumbersome and does not fix the AHI (Artificial Horizon) placement, which is rendered by msposd directly.
Expected behavior
Either:
- Support overlay regions larger than 1920x1080 on SSC338Q (if RGN hardware supports it), or
- Properly center the 1920x1080 overlay both horizontally and vertically when video resolution exceeds overlay size (correct Y_Offset calculation).