shellixyz / hd_fpv_video_tool

A software tool to manipulate video files and OSD files recoded with the DJI and Walksnail Avatar FPV systems
GNU General Public License v2.0
16 stars 4 forks source link

Walksnail OSD scaling incorrect #7

Open awilliamson opened 1 year ago

awilliamson commented 1 year ago

When using default scaling, walksnail OSD from Betaflight 4.4 doesn't get scaled appropriately. It seems that the height is correct, but the width seems to stop 1/2 of the way through the actual frame width.

2023-05-07-150529_2545x1233_scrot AvatarG0018_osd.webm

"AIR" should be bottom centre. The LQ should be top right.

I've tried using -r but it wants 5 values but 2 provided. From the --help it should just be -r 720p or -r 1280x720 but this doesn't seem to work as intended.

OSD file attached. AvatarG0018.osd.zip

Video stream info: Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, smpte170m, progressive), 1280x720, 38327 kb/s, 60.13 fps, 60 tbr, 90k tbn (default)

awilliamson commented 1 year ago

Additional info on the 5 values, 2 provided:

./hd_fpv_video_tool_x86_64_v2.0.0.AppImage generate-overlay-video -r 1280x720 ./AvatarG0018.osd
error: The argument '--target-resolution <720p> <720p4:3> <1080p> <1080p4:3> <<width>x<height>>' requires 5 values, but 2 were provided

Usage: hd_fpv_video_tool_x86_64_v2.0.0.AppImage generate-overlay-video [OPTIONS] <OSD_FILE> [VIDEO_FILE]

For more information try '--help'
shellixyz commented 1 year ago

I have never tested BF with Avatar. The reported OSD size in your OSD file is 53x20 which is matching what the program rendered. It selected the SD size tiles (36x54) and the rendered OSD video is 1908x1080 which is exactly (53x36)x(20x54). To me this looks like a bug in the Avatar firmware as it is apparently not reporting the correct size of the OSD. Is there a setting in Betaflight to change the OSD canvas size ?

From your rendered OSD video if LQ should be at the right edge then it means the actual OSD width should be 28 tiles, not 53.

image

-r only informs the program about the resolution of the video you are rendering the OSD overlay video for, it will not have the kind of effect you were expecting. It would only change which tile size is selected for the best possible rendering quality and what scaling to apply to them if any.

avsaase commented 1 year ago

Betaflight 4.4 added improved support of HD FPV systems by adding a couple of new MSP commands. One of them allows the flight controller to request the canvas size from the video transmitter, and another for the configurator to get this info from the flight controller. Obviously the VTX needs to be powered for this to work. I couldn't get this to work so I set the canvas size manually in the CLI.

shellixyz commented 1 year ago

I guess I could just add a command line parameter to force the canvas size

avsaase commented 1 year ago

I think the WS system always assumes a 53x20 grid.