VC-1 decoding errors

I’ve raised this before, but that was in the Kodi v19 testing thread, which has now been locked. I think this deserves to be in a still-open, bumpable thread…

First, a link to some of my test clips: Dropbox - Deinterlacing test patterns - Simplify your life

Here’s an approximate copy of what I said in the other thread, edited for clarity:


Star by turning off hardware decoding, then play the 1080i60 wedge pattern clip. Decoded in software, it plays perfectly - that gives you a reference. Now try playing it with hardware decoding, and with deinterlacing set to Auto-Select. If you look carefully, you can see two different sets of artefacts: at the left edge of the horizontal wedge, centred on the 540 mark, there’s some very obvious moiré (this is the result of a deinterlacing error -not what’s interesting here); further to the right within that wedge, you should see also a couple of diagonal bars which sweep left to right, turn till they’re vertical, keep turning till they’re diagonal again, sweep right to left, disappear, and then repeat the cycle - that’s what we’re interested in.

If you now switch deinterlacing to Off, it fixes the deinterlacing, and the main moiré at the 540 mark vanishes; but the sweeping diagonal bars are still there (but fainter). This (I’m fairly sure) is the result of a decoding error.

My “Little Dorrit” clip also shows what look like decoding errors, although they’re more subtle here. To play it as well as possible you’ll need to whitelist 1080p/25, start playing the clip, set deinterlacing to Off, stop, then play it again. This gives correct deinterlacing, but there’s still some definite loss of detail - you notice it in the fine texture of the men’s faces. (For comparison, try playing it on a Pi 2 or 3, running Kodi v18, using MMAL, with VC-1 acceleration enabled, and with deinterlacing set to Off. Much more skin detail is visible.)

1 Like

Just to add that I have also noticed the very poor VC-1 image quality recently with the Vero 4K (excluding the broken deinterlacing) running 19.1.

There is definitely some form of DNR being applied when using hardware decoding, it shows up instantly on any high quality sources. As far as I can tell it only affects VC-1 decoding, so would not appear to be something applied globally “downstream” of the decoder.

That would certainly be consistent with what I’m seeing.

Can you post a photo or screenshot?

I have no way to do a direct HDMI capture, so the best I can do is a photo of the screen. Even with those limitations it shows the issue well enough.

It actually appears to be worse than I initially thought and not just DNR, there is a significant amount of macro blocking and and posterization in the Vero 4K decoded version that is not in the source file.

OPPO 203

Vero 4K

Note the heavy macoblocking in the flames and general “mushy” look of the Vero compared to the OPPO. Same source file, exactly the same TV input settings etc…

The source file for this is the 23.976 VC-1 test sample on the Kodi media sample page Samples - Official Kodi Wiki, but it appears to be consistent with all VC-1 files I have tried.

Vero 4K+ (Matrix):

Raspberry Pi (Leia):

I’m not sure if these are the exact same frame, but they give a good idea of what to look for. Look at the guy in the background, and at the difference in brightness between the bridge of his nose and the side of his nose, or between forehead and temple.

EDIT: Another pair, from the same clip. Note the detail under the girl’s left eye (her left, our right!) and on her cheekbone.

Vero 4K+ (Matrix):

Pi 3 (Leia):

I tried reinstalling the November 2020 release for a while today. It has been a long time since I’ve been running the 3.14 kernel, as I’ve been on the 4.9 kernel test version, and then the Matrix test version, so I didn’t really remember what my Vero 4K+ was formerly capable of.

One of the more noticeable regressions is VC-1 decoding quality. I’m not sure if it was perfect in the November release, but it was certainly a lot better than it is now. I hope you guys can find a way to get back to that.