Software decoding vs hardware decoding?
#1
TLBig GrinR - Wondering if it's better sometime to use software decoders for 'quality' reasons.


Need some help: so I have the Intel NUC N3050 and have been happy with it. I have Libreelec with Kodi 16 and I'm just curious about software video decoding. Would there be any situation whereby you could get better 'quality' video from software decoding as opposed to hardware decoding?

I have hardware decoding switched on and have been led to believe that you should keep it on. But with a powerful enough machine you could run in software mode. Software can be updated so I was wondering if the software decoders on Libreelec/Kodi would be superior (picture quality wise) to the hardware decoders in my Intel Braswell NUC.
Reply
#2
For quality purposes, assuming we are not factoring in any kind of 'post processing' effects, no, there will be no difference. Video compression codecs are designed to all decode the same result. If one decoder gave a different output than another, that would mean something was implemented incorrectly.

If hardware decoding is possible, use hardware decoding and leave software decoding for anything that the hardware decoder doesn't support. This is the most efficient way to go in terms of processor resources and electrical consumption.
Reply
#3
(2016-12-18, 20:15)DJ_Izumi Wrote: For quality purposes, assuming we are not factoring in any kind of 'post processing' effects, no, there will be no difference. Video compression codecs are designed to all decode the same result. If one decoder gave a different output than another, that would mean something was implemented incorrectly.

If hardware decoding is possible, use hardware decoding and leave software decoding for anything that the hardware decoder doesn't support. This is the most efficient way to go in terms of processor resources and electrical consumption.
Thanks for response... What you said makes sense... I have seen people in forums sometimes mentioning about switching off harware decoding as it has not decoded as expected...but as you said those are for specific situations.

However... I did notice this from life hacker which mentioned switching off harware decoding to get better picture quality with regard to upscaling...

I copied the relevant but but the entire link is here

https://www.google.ca/amp/lifehacker.com...412363/amp

"Tweak Your Playback Settings for Better Upscaling


When you watch 1080p videos, they should look pretty good as long as they come from a good source. But when you watch 720p or standard definition videos on a 1080p TV, your player has to “upscale” the image to fill in the necessary pixels. If it doesn’t use a very good upscaling method, this can make the picture look blurry or pixelated. The effect is worse the lower resolution your video is (so DVDs will be affected more than 720p video), but depending on the size of your TV and how far away you sit, it may be quite noticeable.


Thankfully, both Kodi and Plex have options to enable higher quality upscaling methods, so you can make your videos look as clean as possible (provided your processor can handle the necessary calculations). Here’s how to do it:

In Kodi, make sure your Settings are set to Expert and head to System > Video > Acceleration and uncheck “Allow Hardware Acceleration” (usually DXVA2 or VAAPI). In Plex, you’ll find this setting under Preferences > Playback > Advanced Video. Hardware acceleration usually uses lower quality upscaling, so you’ll have to disable it if you want access to the good stuff. (More on this in a bit.)Next, play a video from your library. Press M on your keyboard to access the menu, scroll over to the Video Settings menu, and open it. (If you don’t see a video settings button, you may have to switch back to the default skin.)Under “Video Scaling Method”, choose something like “Lanczos3 Optimized” or “Spline36 Optimized”—these are the highest quality options. Pick the one that looks best to you. If your video doesn’t play smoothly with these on, try something like Bicubic—it’s not quite as good, but takes up fewer resources.Scroll down and choose “Set default for all videos” to apply this scaling method to all your videos.

Again, this will produce a stronger effect on lower resolution videos. So, you’ll likely notice that SD videos look significantly better while 720p videos only look only slightly better (or no different at all). It depends on your TV and your vision.

There’s one catch: Disabling hardware acceleration (DXVA2 or VAAPI) might cause high quality 1080p videos to stutter on lower-powered machines. Hardware acceleration is a handy feature that allows your graphics card to pick up some of the decoding slack, making it easier for your PC to play HD videos. But if you turn it off, your processor has to do all the work, and many low-powered home theater PCs can’t quite handle it. This puts you in a pickle where you’re stuck with poor upscaling with hardware acceleration on, or stuttering HD videos with hardware acceleration off."
Reply
#4
That lifehacker section is more about "upscaling" than about "decoding". Depending on the operating system and the graphics hardware manufacturer, software upscaling *might* have more variables/options than hardware-driven upscaling, and it's *possible* some of those options might deliver a better picture. That's so very situation-dependent that I don't believe one could say that one method is better than the other in all situations.
Matrix 19.x (LE), Aeon Nox SiLVO, NUC8i5BEK (i5-8259U, Intel Iris Plus Graphics 655, 16 GB ram, 128 GB M.2 SSD)
Samsung F6300 46" LED LCD TV, SMSL Q5 Pro amplifier, Pioneer HPM-100 speakers
Synology DS215j NAS fileserver (WD Gold 10TB x 2)
Reply
#5
And the scaling method would go under 'Post Processing'. Smile
Reply
#6
(2016-12-21, 03:34)DJ_Izumi Wrote: And the scaling method would go under 'Post Processing'. Smile

Good point!
Matrix 19.x (LE), Aeon Nox SiLVO, NUC8i5BEK (i5-8259U, Intel Iris Plus Graphics 655, 16 GB ram, 128 GB M.2 SSD)
Samsung F6300 46" LED LCD TV, SMSL Q5 Pro amplifier, Pioneer HPM-100 speakers
Synology DS215j NAS fileserver (WD Gold 10TB x 2)
Reply
#7
(2016-12-21, 03:13)whysoserious Wrote: That lifehacker section is more about "upscaling" than about "decoding". Depending on the operating system and the graphics hardware manufacturer, software upscaling *might* have more variables/options than hardware-driven upscaling, and it's *possible* some of those options might deliver a better picture. That's so very situation-dependent that I don't believe one could say that one method is better than the other in all situations.

we don't do any software upscaling for video.
Reply
#8
(2016-12-21, 08:50)FernetMenta Wrote:
(2016-12-21, 03:13)whysoserious Wrote: That lifehacker section is more about "upscaling" than about "decoding". Depending on the operating system and the graphics hardware manufacturer, software upscaling *might* have more variables/options than hardware-driven upscaling, and it's *possible* some of those options might deliver a better picture. That's so very situation-dependent that I don't believe one could say that one method is better than the other in all situations.

we don't do any software upscaling for video.

So if I turn off "hardware acceleration" how is a 720p vid upscaled to 1080p? Is it done using the HTPC graphics chip anyway, or does the TV do it? Or, more likely, am I misunderstanding the whole process?
Matrix 19.x (LE), Aeon Nox SiLVO, NUC8i5BEK (i5-8259U, Intel Iris Plus Graphics 655, 16 GB ram, 128 GB M.2 SSD)
Samsung F6300 46" LED LCD TV, SMSL Q5 Pro amplifier, Pioneer HPM-100 speakers
Synology DS215j NAS fileserver (WD Gold 10TB x 2)
Reply
#9
OpenGL, either directly (bilinear / nearest neighbour) or via Shader (Lanczos3, etc.)
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#10
yes, "hardware acceleration" refers to decoding.
Reply
#11
In my experience, the Lifehacker article is not correct. I did not need to disable DXVA rendering or DXVA2 acceleration to get high quality scalers.

I added the following to my advancedsettings.xml file:

<video>
<dxvaallowhqscaling>true</dxvaallowhqscaling>
</video>

That lets me select lanczos3 or spline36 (optimized) scalers within a video, and save that as the default for all videos, with DXVA rendering and decoding enabled. Has a very minimal/negligible impact on processor utilization.

Cheers
TRJB
Reply

Logout Mark Read Team Forum Stats Members Help
Software decoding vs hardware decoding?0