Jerky playback on v18 with change of scaling algorithm

On v18, I’m playing a 720x480/23.98Hz h.264 mkv, decoding in software, with output resolution set to 1080p/23.98Hz.

If the upscaling algorithm is set to either nearest neighbour or bilinear, everything is okay; but if I select any other upscaling algorithm, playback becomes horribly jerky. CPU utilisation is quite low, so it doesn’t seem to be running out of CPU capacity (unless it’s mis-reporting that).

Logs: https://paste.osmc.tv/epanolecej

I suspect this would’ve been the same with v17.6.
Can you confirm?

Not talking about suspend – but rather playback.

Yes, sorry, got my threads confused. :man_facepalming:

It’s been a while since I tried using software decoding in v17, but I’m fairly sure I didn’t get jerky playback using other upscaling algorithms. I think I remember that lanczos3 went a bit wonky if you tried to upscale to 4K (possibly because the CPU maxed out) but it worked okay scaling to 1080p.

Having said that, I do also have a hazy memory of the image quality using lanczos3 (on 17.6) not being as good as I would have expected (to the extent that using hardware decoding actually looked better).

Lanczos3 won’t be possible at a reasonable resolution.

What about Bicubic? That’s exhibiting exactly the same problem as lanczos3 at the moment (and, again, neither behaved like that in v17.6). Anything other than Nearest Neighbour or Bilinear is broken in the same way.

Did they work on v17.6?

Lanczos3 was definitely not as badly broken as it is now. I’m fairly sure at least some of the others worked okay, but I wouldn’t like to say for sure that they all did - I likely wouldn’t have tried all of them for long enough to notice.

v17 did not use most of the “high quality” scaling methods for video output. It was a long-standing bug. v17 also didn’t use high-quality scaling methods to upscale the GUI…they were only used for down-scaling to store in the cache.

All the settings for scaling (including choice of scaler) is new to v18.

I have a possibly silly question here. Where are the scaler settings in OSMC running on a Vero 4K+ ? Typically on my Intel NUC running LibreElec I go to the video options while video is playing and I can select the scaler and the deinterlace method. I don’t see either of these options in OSMC on my Vero 4K+ units.

They’re only available if you disable hardware acceleration.

Ahh got it. So if I disable HW acceleration, change the scaler setting and then re=enable the HW acceleration, will it use the changed scaler setting ?

No.

Bilinear and nearest-neighbour are the only scaling algorithms available when hardware-acceleration is in use.

And even in software mode, I think everything except nearest-neighbour and bilinear is actually broken - you can select the option, but they don’t work correctly and adversely affect image quality. Fixing them would mean the device running out of CPU power, because the other algorithms are quite computationally intensive.

Upscaling is not one of the Vero 4K’s strong points. You’re almost certainly better off outputting everything at native resolution and having the TV do the upscaling - it’ll look better that way.

Thanks for the update. I found the settings. I actually have an 8th generation i7 Intel NUC that I use for 4K upscaling but wanted to play with it on my Vero 4K+ just to do some comparisons. The NUC does support all of the scaling methods with HW support but as you indicate the mileage may vary depending upon the scaler. I have found the Vero 4K+ does a better job than the NUC with deinterlacing, since the Vero 4K+ can do it in HW.

Pretty much everything I said in my last post applied specifically to the Vero 4K and 4K+, in case that wasn’t clear.

The Vero’s CPU has only a tiny fraction of the general computing power that an Intel CPU has, so (for practical purposes) it can’t decode video at above SD resolution without using dedicated hardware to do it; and the dedicated hardware doesn’t support any upscaling algorithms fancier than bilinear.

And even when decoding SD video in software, fancier upscaling algorithms require more CPU power than is available, hence they don’t work correctly even in software mode. Bilinear is as good as it gets. (So, if possible, upscale externally).

I’ve actually not been especially impressed by the hardware deinterlacing on the Vero 4K+. In particular, it doesn’t correctly deinterlace 1080i film material - it deinterlaces it as if it were video, which causes resolution loss, especially when the camera is moving. Frustratingly, it deinterlaces 1080i test patterns correctly in software mode - but of course it lacks the power to decode real (i.e. non-test-pattern) 1080i video in software mode. 1080i video-mode material is handled well in hardware, though. (See Issues with deinterlacing 1080i/50 ).

Also, according to this thread, hardware deinterlacing of SD MPEG2 has issues as well: Why is hardware de-interlacing for SD MPEG2 so bad? - #7 by Paul_Solecki So you might be better off decoding interlaced SD material in software. (Remember to select the best deinterlacing algorithm, as it may not be the default).

Wasn’t the problem with your deinterlacing issues caused by the fact that they are marked as progressive in their container?

They’re marked as progressive because they are progressive. The problem was (and, as far as I know, still is) that the Vero was ignoring that fact.

It is still on the list.

My focus is now to draw a line in the sand regarding 3.14 and move over to a 4.9 kernel.

Sam

1 Like

Could the Vero 4K be setup so it outputs SD content at 480p, then just let your TV handle the scaling?

When I play my old TV DVD rips (Seinfeld, etc.) my TV reports that it’s getting it at 1080p.
The GUI is set to 1080p and all content 480p, 720p, and obviously 1080p are sent out to the TV as 1080p but 4K content is sent out as 4K.
Would be better if the Vero just output the video at it’s native resolution I’d imagine.

EDIT
I tried changing the Vero to 480p to see what happens… well… the GUI looks ugly as hell, but it now outputs all files in there native resolutions.
But for some reason it stretched my Seinfeld from 4:3 to 16:9.
So it appears that it only changes the resoltion output if it is higher than the GUI, but not lower.