4:3 SD resolutions and "Sync Playback to Display" not working

I have a Vero 4K+ running the latest OSMC (2023.01-1) I have it connected to a CRT TV (via HDMI-VGA adapter and a scan converter)

  1. I have edited disp_cap to add “576p50hz” and “480p60hz” so the resolutions are working but OSMC thinks they are 16:9 I think. Is there a way to specify that these should be the 4:3 versions of these resolutions?

  2. “Sync playback to display” does not appear to be working at all. There is no change in playback and I get stutters once every second. Since I don't have access to a 24 hz resolution I want to playback 24 fps content at 25 fps which matches perfectly with 576p50hz. Also I have no need for passthrough audio in this setup as it’s a 70s analog stereo receiver and I have verified that the passthrough is disabled (including turning it on/off)

Both of these options work as intended with the exact same adapter/scaler when running from a Raspberry Pi 4 running LibreELEC (but that has other issues which is why I got the Vero 4K+) so I know the issue is with the OSMC/Vero4K and not with the adapter/scaler.

Are you sure you aren’t confusing Sync playback with Adjust Refresh Rate?

Sync Playback to Display isn’t used on Vero. You should use Adjust Refresh Rate instead.

Thanks for the reply.
When you say “isn’t used on Vero” do you mean that it isn’t recommended or that it isn’t working? Because those are two very different things.

I understand that in most use cases it is much better to change the refresh rate of the display to match the media but as I explained I have it connected to an old CRT TV and therefore I only have access to NTSC (60 Hz) and PAL (50 Hz) refresh rates. And since most TV and movie content is 24 fps neither of those are optimal.
The options are either 2:3 pulldown to 60Hz (like American TV) which I don’t like because it’s a lower resolution and stuttery playback (especially since NTSC is actually 59.97 Hz so still needs a slight speed adjustment to match perfectly), or the preferred option like European TV and do a slightly sped up 2:2 pulldown to 50Hz which also has the upshot of being at a higher resolution.

Both. It was never recommended so it was disabled.

1 Like

That’s a real shame. Also “never” just isn’t really correct as demonstrated by my use case. But not just for edge cases like mine. There’s also the issue of 23.97 fps vs 24 fps content where not all TVs have both a “23” and a 24 fps mode. And many earlier HDTVs don’t have either so would be just as useful to be able to playback at 25 fps on 1080p50Hz (it’s way smoother than 2:3 pulldown at 60 hz)

Was there a technical problem with it? Otherwise I don’t see a reason to fully disable it. Especially while still having the setting show up in the options but not do anything.

Would the resolutions whitelist be of any use here?

I don’t think so but 99.99% of users aren’t watching videos on CRT screens that don’t support multiple refreshrates. There were problems with users having that option on and wanting audio passthrough.

I’m intrigued by the scan converter. Why is that necessary? What resolutions/modes does your TV actually support?

Have you tried the options in Settings->Player->Videos->Display 4:3 videos?

I get that you’d want to put some roadblocks to keep people from turning it on when they are better served by having passthrough audio working. It should definitely be off by default and a warning/disclaimer attached to it.

It’s an old tube TV (Sony “The Cube” PVM-2730QM) and it supports both 15 kHz standards. 480i 60 Hz (American broadcast standard) and 576i 50 Hz (Europe broadcast standard). It’s a European model so it has a SCART connector and accepts RGB, Composite, and S-Video signals.
The video scan converter is there to take the progressive 480p or 576p VGA 31 kHz RGB signals down to a 480i or 576i 15 kHz interlaced RGB signal.
Technically I can feed it pretty much any VGA signal up to 1600*1200 and with higher refresh rates but the output to the TV will always be 480i60 or 576i50 so I want to avoid scaling and framerate conversions.

If I could get the Vero 4K to output a 480i or 576i signal that would be ideal and I could skip the scan converter altogether but haven’t been able to do that. I have tried with both “576i50” and “576cvbs” in the disp_cap file but neither gives me a picture. I have tried hooking the VGA adapter and scan converter to a VHS/DVD-combo unit that outputs 576i over HDMI and verified that it works. The converter detects a 15 kHz signal… and yeah there actually are a few VCRs with HDMI outputs!

“Display 4:3 videos” only determines what zoom mode to use for 4:3 videos. It doesn’t tell Kodi the shape of the pixels of the display. I was able to adjust it manually. It’s a bit of a hassle tho and when the square in the calibration screen is square the video aspect is still off so kind of have to do it from the player with a video playing in the background. Basically playing a 4:3 video and changing the pixel shape until the picture stops growing and starts shrinking and you know it’s filling both width and height.
So there seems to be some mismatch in the logic behind that calibration screen as well. Again this works great on the Raspberry Pi with LibreELEC.
I haven’t been able to add the resolutions to OSMC on the Raspberry Pi however so haven’t been able to test there.

The resolutions you get when you add 576p50 and 480p60 into disp_cap are actually 720576 and 720480 I suspect. Which do not have square pixels. This is some terrible leftover from the DVD specs I think. 720*576 for instance has a ratio of 5:4 but aspect of 4:3 or 16:9. And as I said in the beginning OSMC appears to treat them both as 16:9 aspect as without adjusting pixel shape 16:9 content seems to fill the screen.

In the HDMI standards I believe that there might be separate resolutions for 4:3 and 16:9 SD resolutions?
When configuring a Raspberry Pi for instance you have hdmi_group=1 (CEA) for TV resolutions and hdmi_mode=17 is 576p 50Hz 4:3 and hdmi_mode=18 is 576p 50 Hz 16:9. Both of these are still 720*576 pixels. That distinction could just be something in the graphics stack of the Raspberry Pi tho. Not sure.

I’ve disabled it so it does nothing

Was there a technical issue with the feature or was it just to keep people from accidentally disabling audio passthrough?
Any chance it can be reenabled? Perhaps with a hotfix or something?

It doesn’t work on the AMLogic platform and didn’t seem to be missed. I don’t think it will come back.

OK, I can almost understand why you wouldn’t want to throw that away. Normally, I enjoy the challenge of getting older equipment working with OSMC, but my last 4:3 PAL-only display was dumped 20 years ago so I’ve nothing to test. I’m assuming the display is too old to have any concept of 16:9 aspect ratio or the various ways that have been devised to signal that. So can you confirm what you are seeing on the screen? You can expect the GUI interface to be squashed horizontally. OSMC only supports 16:9 and 21:9 aspect ratios. Then I would expect 4:3 videos to be displayed correctly and 16:9 videos to be squashed. Is that what you get? What do you get with Pi4 and LE? Some photos might help.

Well, you are surely stuck with that if you want to play, say, 1080p24Hz video on a PAL-only screen. The only question is which device is better at doing the conversion - Vero or the scan converter?

Regrettably we had to give up on that. AMlogic just don’t seem interested in supporting interlaced output properly with their 4.x kernels.

I think this is inevitable. We can’t overlay a GUI with one pixel aspect ratio on a video with a different pixel aspect ratio and expect evrything to line up. You would be better using a standard test card with a circle in it, such as the Philips one.

Correct. That’s the standard.

OSMC doesn’t ‘treat’ them at all. It just passes the signal to the display and leaves it to the display to sort out the aspect ratio. So you should see all the pixels in the image but only 4:3 video will be the correct a/r.

To do anything else, Vero would need to know what the aspect ratio of the screen is so it can scale 16:9 images vertically and add letterbox mattes. It could be that Pi is guessing that when the output is 576p the a/r is 4:3 but Vero is not.

I don’t think it will be easy to get automatic aspect ratio switching working for your setup but if you could provide more information and debug logs there is a chance.

That’s exactly why I wanted the “Sync Playback to Display” function because that’s the only solution that would avoid stutter frames but since that isn’t working with the hardware I’m outta luck there.

Yeah I figured that was a pipe dream

That’s the thing. If it assumed square pixels it should think the aspect of the display is 5:4 and give me slight black bars at the top and bottom of a 4:3 image. But instead I get big black bars on the sides like it’s trying to display on a 16:9. I think perhaps the player assumes 16:9 but the calibration screen assumes square pixels? Anyway this is a minor issue since I can fairly easily calibrate it manually for both resolutions I need. After calibrating everything looks fine. 4:3 fills the screen and 16:9 gets letterboxed.

Another thing I noticed however is that the zoom has some issues. First of all on certain zoom levels the picture gets all messed up. This is true for Zoom, Zoom 120% and Custom. Only certain values work well and it differs between video files.
And also the “Zoom” which I believe should “touch from outside” appears to zoom in too far. When I have a video that is full screen and setting is “Normal” it is already touching all sides so there should be no difference between touching from inside and touching from outside but when I switch the setting to “Zoom” it zooms in quite a bit extra. This means I have to manually zoom to crop 16:9 content to fill the 4:3

As for testing I think most new TVs still report 576p and 480p in their EDID. At least my LG OLED TVs do. If you then set aspect manually to 4:3 you should get the exact same experience.

Tho honestly I’m probably going to go back to using the RPi4 for this project instead if turning off “Sync to Display” solves the issue of playback where it starts skipping after 45-60 minutes. Everything else works fine on that one. The skipping may be hardware related as I got the same issue with both LibreELEC and OSMC on the Pi. I’d have to transcode HDR content instead of tonemapping it locally but that’s no problem since I usually run stuff from Plex anyway. Or maybe hook a PC up to the thing and run Kodi on that. Being able to adjust the max display brightness of the tonemapping is a neat feature tho since CRTs can get fairly bright.

Then I’ll perhaps use the Vero for playing MVC 3D movies via Plex on the LG E7 OLED instead and replace the Zidoo Z9X there.

I just set up a 4:3 PC monitor (VGA input @ 1024x768) and it works exactly as expected for both 4:3 and 16:9 video (live 576-line TV in which the programme is 4:3 and the adverts 16:9 - switches between them no problem). I have ‘Adjust display refresh rate - Off’ for this test because my HDMI-VGA converter adds 1280x720 and 1920x1080 to the modes supported by the monitor.

So I don’t know why it wouldn’t do the same when outputting 576p. Unless you post logs I can’t help you any more.

1 Like

If you make an advancedsettings.xml file with the refresh rate overrides you want and enable refresh rate switching you can force Kodi to output differently than default…

https://kodi.wiki/view/Advancedsettings.xml#:~:text=<adjustrefreshrate>

But will that play 24Hz video at 25Hz or attempt some bastard resampling?

My understanding is that it is just an override of the whitelist so it would be the same as if you added a whitelist and then manually changed to a different refresh rate.

Yeah the problem isn’t that I can’t select an output that is a multiple of 24 on the Vero. It’s that the TV will absolutely only accept 50 or 60 Hz input. So either I have the Vero output 50 or 60 and the Vero will repeat some frames to make it line up and creating stuttering playback. Or if I output at like 72 hz and the Vero outputs each frame exactly 3 times each the video scaler will skip some of those frames to get back down to the 60 or 50 hz the TV can handle, again creating the same stuttering playback. Without speeding up the playback from 24fps to 25fps there is absolutely no way to avoid uneven frame pacing.