51

(11 replies, posted in Using SVP)

Moondust76 wrote:

If you had a 32 core/64 thread AMD threadripper cpu, what settings would you try? What would make SVP's result better than what you have now?

TBH I would just enable "global refinement", use "half pixel" even on 4k video, and pretty much call it a day.  Note that I use Uniform + Complicated for my day-to-day SVP settings.

Maybe I'd set 16px for 4k video, but certainly nothing less than 24px.

The main thing is that I'd not settle for anything less than a 90Hz display as the next step would be increasing refresh rate.

52

(11 replies, posted in Using SVP)

Unless it's in 10bit or you're using mpv, the bitrate doesn't matter for H264 video as that can be hardware decoded on any GPU made in the last 10 years without issue.

And with that hardware decoding I wouldn't be suprised if you could even disable your i7's overclock and you'd still be fine - heck my own Xeon locked at its turbo clock of 3.2GHz combined with H264 hardware decoding almost gets me there when using your exact settings - around 80% of the time it's running at 1.0x SVP index while it's only at 0.9x or so for the other 20% in certain scenes that are apparently more demanding (it's not clear why however as the entire test video is full of motion).

53

(3 replies, posted in Using SVP)

bradwiggo wrote:

Is the hardware encoding better than software encoding?

Kind of late on this, but when it comes to any sort of video encoding, software encoding almost always (if not always always) results in higher fidelity than hardware encoding.

Keep in mind that this is with regards to video encoding quality and has nothing to do with interpolation quality or smoothness or the like.  Using GPU acceleration for the actual interpolation engine should result in a smoother end-result but, at the same time, it can sometimes also result in more artifacting.

And an A10-7300 has GPU-accelerated (though not full hardware decoding) of HEVC, so even that should be playable at 1080p in SVP as long as you're using settings that aren't particularly high.

54

(11 replies, posted in Using SVP)

Moondust76 wrote:

What do you think of these settings for 1080p @ 60fps?

"by two with global refinement" can be a killer of CPU.

With that set to disabled, even my Xeon 3470 @ 2.93GHz can run those exact settings but with "frames interpolation mode" set to 'Uniform' with even software-decoded 1080p 5mbps HEVC @ 25fps --to-> 62.5fps (2.5x) as long as I'm using a 64bit media player (because 32bit HEVC software decoders are quite unoptimized).

For reference, the that 1080p 5mbps HEVC 25fps video interpolated to 62.5fps was my go-to stress test when I was setting up this Xeon system with the logic that, if my hardware could do that just fine, then darned near any 24fps 1080p video should be able to work without issue (unless it was HEVC with a pretty crazy bitrate).  For actual real-world use I'd use 2x interpolation for 25fps videos as my display can run 50Hz without issue (but it can't handle anything above 60Hz without skipping frames).

That didn't help; I also tried the "AviSynthPlus-MT-r2728-with-vc_redist.exe" install package but that too made no difference.


I've attached the two errors I normally get.  Taking the api-ms-win-crt-runtime-l1-1-0.dll from the SVP program folder and adding it to the MPC-HC program folder (which is where I have avisynth.dll located) then results in the second error.  And to clarify, interpolation doesn't occur in both instances of when the error is present.

Interestingly, if I use a newer version of api-ms-win-crt-runtime-l1-1-0.dll from a recent (though not the newest) version of streamlink, the second error message does not come up at all...but interpolation still does not occur (SVP just says "No active playback" no matter what).


Also it seems like mpv actually can run and play fine with SVP closed, but with SVP it gives the same aforementioned error messages and also automatically closes a second or so after starting playback.  Similarly, using that newer version of api-ms-win-crt-runtime-l1-1-0.dll from streamlink will also result in no error messages appearing when SVP is open, but it'll still close after a second of playback as long as SVP is open.

56

(11 replies, posted in Using SVP)

Jarvmeister wrote:

I actually use SVP only at 48fps, and at either 2m or 1.5m interpolation mode.

Uhhh, when using 2m to interpolate at 2x from 24fps to 48fps, there's literally no interpolation occurring - you have to use something greater than 2x for 2m to actually do anything.

But 1.5m does in fact actually result in some interpolation when using 2x.



Jarvmeister wrote:

My current setup (3rd gen i7 and GTX1050Ti) doesn't allow me to use SVP with videos of higher resolution than 1080p.

Wait, really?  That's at least an i7-3770 with a base clock of 3.4GHz, right?


I have a Xeon x3470 @ 2.93GHz (I've disabled turbo for easier undervolting) which is essentially a first gen i7 (performance-per-clock is something like 30% slower than third gen); from my testing and calculations I would think that your third gen i7 should be able to interpolate 4k video with your reduced settings without issue as long as you're using GPU decoding of the video stream (which a 1050Ti should be able to do unless it's something new & fancy like AV1).

When I play back a 1080p video that's hardware decoded by my GPU but I have SVP cranked up to absolutely unreasonable settings so that I'm left with a CPU bottleneck, it shows my CPU utilization at around 65%, so that's essentually my upper limit.

When I played back a 24fps 3840x2160 video that's hardware decoded by my GPU and have SVP set to 2x interpolation with 1.5m, standard shader, two pixels, and 16 px. (see attached screenshot), I have an SVP index of 0.7x but a CPU utilization of only ~40% because my GPU is maxed out and bottlenecking me.  We know my CPU when running SVP can have utilization all the way up to 65% assuming no GPU bottleneck, and 65 is 1.625x that of 40; my SVP index of 0.7 multiplied by 1.625 would be 1.1375 which would mean that I theoretically should have no issue hitting an SVP index of 1.0x if I just wasn't GPU bottlenecked.


Therefore are you absolutely sure that your current i7 can't handle 4k video with reduced interpolation settings (again, see attached screenshot) when combined with GPU decoding of the video?

Also keep in mind that you may experience a weird bug in SVP where setting the "Motion vectors grid" to anything less than 16 px.results in considerably higher CPU utilization than one would expect (24 px. uses more CPU than 28 px. which itself uses more CPU than 32 px; meanwhile 32 px's CPU utilization is actually similar to 16 px.).

For the 64bit avisynth that comes bundled with SVP, it would seem that the C++ version it wants (I think it's either 2013 or 2015?) is completely borked up on my HTPC and no amount of uninstalling & re-installing seems to make it work.

I've been making due with an old version of 64bit avisynth that works fine (it presumably uses an older version of C++), but it has an annoying bug that results in it leaking memory every single time I seek a video which can eventually make the video player crash.

I seem to have no issues using 32bit avisynth, but unfortunately HEVC playback performance is much less optimized even with the newest v0.72 LAVfilters - it's a big enough difference that 1920x1080 30fps HEVC @ 6Mbps requires me to drop all the way to 16px in SVP even though I can use 12px with 64bit (all other SVP settings being equal; also my HTPC's GPU is not current gen and therefore lacks any sort of GPU-accelerated HEVC decoding).


Therefore, I was wondering if there was some other version of 64bit avisynth that uses an older C++ version that also doesn't leak memory whenever you seek around in a video?


Yes if I re-installed my OS that could alleviate my issues altogether, but I really don't want to reinstall the entire OS...and for reference, my C++ woes prevents me from using mpv as well since it gives a similar error to what I get when trying to use SVP's bundled 64bit avisynth.

58

(449 replies, posted in Using SVP)

efeu wrote:

but performance is at 95% @ everywhere else

Does that apply to GPU performance though?

It was my impression that proper GPU virtualization is only something that's really become a thing in the last year or so (and even then I don't believe it's fully baked yet), and your use of a GT 430 would make all the more likely that you're not using a modern platform that supports such proper GPU virtualization.


One way around this is to use "GPU passthrough" instead, where your host OS uses one GPU by itself and your virtualized OS uses the other GPU by itself (integrated graphics can work as one of these GPUs).  I've never done this myself however and it's my impression that it too doesn't work on all configurations (though I believe it can work on many more configurations than the likes of proper GPU virtualization, especially if integrated graphics is present).

59

(449 replies, posted in Using SVP)

DangerThunder wrote:

Similar problems here on Ubuntu 18.04 with proprietary NV driver. Can't get GPU acceleration working

You probably should also mention what model of Nvidia GPU you are actually using.

While I've known for a while that MPC-HC's overlay renderer does not work with DXVA2 (native) as is noted by the MPC-HC GUI itself, I only just discovered by pure accident today that its overlay renderer does work with DXVA2 (copy-back)!

This can be extremely useful on very low-end CPUs (like my laptop's AMD E-350) where every ounce of CPU performance counts since, not only does overlay itself have less CPU utilization compared to EVR-CP, but overlay's scaling algorithm looks better than bilinear as well while still having similar performance to it (it isn't quite to the level of bicubic, but that has greater CPU utilization anyway); overlay also looks a bit better than my display's/GPU's built in scaling algorithm (like if I set my desktop resolution to 1280x720 for a 720p video and my display/GPU scales that up to my screen's native resolution).

Just keep in mind that the scaling algorithm for the overlay renderer only seems to work properly (otherwise you get nearest neighbor scaling) when Aero and/or desktop composition is disabled - this seems to occur automatically on at least older Intel GPUs (like the 965GMA), but I had to manually disable Aero for my E-350's integrated Radeon graphics.

61

(449 replies, posted in Using SVP)

Chainik wrote:

if doesn't - RTFM. "Linux way" (c)

I just want to know before I take the time to "RTFM" on trying to make an HD5850 work if it even can work on SVP 4 Linux (perhaps you yourself do not know if an HD5850 is supported by SVP 4 Linux?).

And I can't RTFM with regards to whether its supported because there's isn't really a manual for that - the only manuals that exists (the SVP wiki page on Linux) just says to use proprietary drivers, but no amount of drivers* will make it work if I'm using GPU hardware that isn't supported by SVP 4 Linux in the first place (and the GPU compatibility SVP wiki page is about Windows drivers and such).  For example, we know that the hardware of an old Radeon 9600 would never work with SVP 4 Linux, yet even a modern Vega GPU that was merely lacking the correct drivers would give you the exact same result in SVP 4 Linux as that completely unsupported Radeon 9600.



*technically this isn't true as you can always implement missing hardware features in software, but the performance penalty can be enormous to the point of being completely impractical for even offline rendering let alone real-time rendering

62

(449 replies, posted in Using SVP)

So the wiki says that the HD5000 series is the minimum Radeon GPU that supports full GPU acceleration in Windows (and I can confirm this is the case between my HD4670 and HD5850), but what about Linux?

Also the wiki says to use proprietary drivers, but the mesa open source drivers are the go-to solution for Radeon drivers as the closed-source Radeon drivers for anything other than Nvidia on Linux are a bit of a trainwreck (heck there aren't even separate proprietary drivers available for Intel GPUs as well as really new Radeon GPUs like the iGPU on the Ryzen 2200G and 2400G).  I'm only a Linux newbie so there's not much problem-solving I can do myself, but it seems that my HD5850 didn't have out-of-the-box support for SVP's GPU acceleration even though it did have fully-supported hardware accelerated polygonal 3D rendering in the likes of the Dolphin emulator...but maybe I have to actually do something in order to enable SVP GPU acceleration on Linux.

63

(449 replies, posted in Using SVP)

On the wiki, it says the following under prerequisites:

(recommended) Proprietary video drivers including OpenCL ICD

Isn't that only for Nvidia GPUs?  I mean, the mesa drivers for Intel and AMD are widely regarded as being better than their according proprietary drivers.

James D wrote:

To me results look very similar performance-wise.

The Phenom II being faster is most apparent with the CPU utilization for the combination of "half pixel + 14 px."

Nevertheless, the thing is that 45nm Core2-based CPUs pretty much always have faster IPC.  So the fact that the performance was actually a bit in favor of the Phenom II was not at all what I was expecting.


One thing however is that the Phenom II overclocks to 3.6GHz at 1.3v quite easily when combined with the beefy 140w AM3 stock cooler.  However, overclocking the Xeon is limited by the motherboard (which can't handle an FSB past 430), my RAM (I don't have any DDR2-1066) and the CPU cooler (stock Intel heatsink with copper plug).


James D wrote:

Curious how much power was drawn with these configurations?

I can measure that, though no idea how soon I'll get the results.  Nevertheless, they're totally not an apples-to-apples comparison as the Xeons tend to be higher-binned for lower voltages than consumer Core2 CPUs, and the Xeon I'm using is even a low-voltage model but is then overclocked from 2.5GHz to 3GHz.

The Phenom II however is a black edition dual core model that's been unlocked to 4 cores which then requires an extra 0.025v to 0.0375v to run stable but then is underclocked from 3.4GHz to 3GHz.

While I do know what the lowest rock-solid stable voltage is for the Phenom II @ 3GHz (1.125v), I don't know what it is for the Xeon @ 3GHz as I haven't really done any real stability testing outside of making sure it doesn't insta-crash after running a CPU stress test for about a minute or so - I just know that it doesn't BSOD at 1.1v.

I had come into possession of an LGA775 motherboard and had purchased a cheap 45nm LGA771 quad Xeon in hopes of using it as a dirt-cheap HTPC build for 1080p SVP, but from some quick testing it turns out that SVP is one of those rare programs that actually perform better per-GHz and per-core on a Phenom II.


This isn't a super-scientific test or anything, but I did use the same video clip with identical settings on the same OS configuration and the same HD5870 GPU (heck the Xeon system actually had more RAM thanks to 2GB DIMMs; the Phenom II used 1GB DIMMs). but it certainly was a result that I did not expect and therefore I figured I would share my results.  Note that the charts were largely made for my own comparison use as I couldn't run both PCs at the same time so I needed a way to refer to my own results (I only have one HD5870, so I had to swap it between both PCs).

Now admittedly the Phenom II had faster RAM since it was using DDR3-1333 vs the Xeon's DDR2-800, but hey if that's enough to make the Phenom II faster then so be it - having support for both DDR2 and DDR3 was a key differentiate for the Phenom II series after all.


I do also know that the Phenom II has an integrated memory controller as well as a true native quad-core design when compared to the Core2 Quad's / Xeon's dual-die + fsb configuration, so it wouldn't surprise me at all that any memory-sensitive heavily-multithreaded applications would be faster on the Phenom II, and even more-so when the Phenom II can use DDR3 memory.  While I knew SVP loves "moar cores!", I didn't realize that SVP cared that much about the memory sub-system as well.

James D wrote:

Google '1080p/Full HD'movies'. Most will have ~800 height which is... less than 1080 vertical lines.

Much in the same way that "4k movies" don't have 4000 pixel widths even though 4k technically means it should, and much in the same way that 720p TVs will almost always be 768p, and much in the same way that 23.976fps and 29.97fps are commonly called "24fps" and "30fps" even though they're actually different from 24.00fps and 30.00fps.

Just because a term is used in a specific way does not mean it's actually accurate.  Most of these come down to human nature of feeling its "close enough", but this causes issues when one is trying to deal with specifics.


James D wrote:

The HD/UHD/SD movie standards were exactly created for avoiding this absurd.

HD/UHD/SD is a television standard where the common display is 16:9; movie standards follow different resolutions such as 2k (2048x1080) and 4k (4096x2160) which use the slightly-wider 1.85 aspect ratio.


James D wrote:

1488x620 is still above 1366 wide screen. What's your point of pointing it out then?

My point was that the specific "decrease to HD" function is therefore not particularly beneficial to those 768p users and they'd be better served by "decrease to screen" (which is SVP's default setting anyway).


James D wrote:

I pointed that SVP follows standards as everybody else to avoid all sorts of problems and backed it up.

There's nothing wrong with SVP's current resizing behavior, but its exposed functionality is a bit limited when compared to SVP 3.1 nevertheless.


James D wrote:

2. SVP handles standards, not specific situations which are numerous while standards were meant to deal with those efficiently. Period.

SVP's "resize to screen" handles any resolution including non-standard ones, so the ability for SVP to downsize to such non-standard resolutions.


James D wrote:

1. resize to whatever size you want for your specific needs in Pro version. Done.
To evaluate my previous answer:  frc/frame/resize. XXXXXXXX form (ex. 13660768 for 768p).

My apologies but I was completely unaware of the existence of this setting under "all settings".

Nevertheless, I'm at a loss on how to actually use such a setting on a per-profile basis as my understanding is that such settings are applied globally.

Could we please not drift too far off topic with regards to the original point of this thread?



James D wrote:

Then why do you consider 1920x800 videos as "FHD?

Uhh, because I don't?  FHD is defined as 1920x1080.


James D wrote:

Tell me this: is 1108x831 a HD video for you?

High definition yes, but not "full HD" as that's defined as 1920x1080.


James D wrote:

its heigh is even bigger than 1080p movies

1080p by definition means 1080 vertical pixels in progressive scan, and 831 is less than 1080.

Contrary to what marketing may claim, a 1920x800 movie is not actually 1080p but rather is more akin to 2k (which is defined by horizontal pixel amount, not vertical; though even that technically refers to the cinema resolution of 2048px wide rather than 1920).  However, the likes of a 2.39 aspect blu-ray movies will in fact technically be 1080p as the letterboxing is "burned" into the video stream itself, meaning the actual video stream of the movie on the disc is actually 1920x1080 even if a good chunk of that is just encoded as black bars.

James D wrote:

Decrease to HD is decreasing to a standard, not to some kind of performance constanta like "1 svpatra".

The issue here is total pixel count and resolution, performance is merely a side-effect as it happens to partially result from those values.  1280x720 is around 0.92 megapixels while 1280x534 is around 0.68 megapixels making the latter considerably below what is considered "HD".


James D wrote:

The way I see it, 720p has direct 1.5x ratio upscaling to FHD.

Ideally downscaling based on total pixels vs horizontal/vertical pixels would be two separate options (similar to the way SVP 3.1 had both "1280px width"/"720p height" as well as "75% of original size").


James D wrote:

HD laptops are still on the market right now

As already mentioned, unless it's a non-x86 tablet or smartphone, 99.99% of all displays marketed as "HD" are actually 1366x768 rather than 1280x720.  Remember that 1024x768 is the minimal resolution for Windows 8 and newer, and you obviously can't fit that on a 1280x720 display without downscaling (which would be sub-optimal for text clarity).


James D wrote:

people can set whatever resolution they want in Pro version.

I'm using the pro version and have been since SVP 4 was in beta as I backed the original SVP4 Indiegogo fundraiser (you'll notice my username is present on the "Version and credits").

Nevertheless, unless I'm missing something, you actually can't resize the video resolution to whatever - that only applies to cropping; the only resizing options are "decrease to screen", "decrease to HD", and "resize to screen" and are applied globally.  This is one area what SVP 3.1 was actually more flexible in that it allowed you to resize to a variety of different sizes on a per-profile basis.

Taudris wrote:

You can create different profiles for handling these scenarios, and use filters to switch between them automatically.

The profiles only change the interpolation settings, not the downscale or crop settings which are only applied globally and must be changed manually.

Thing is though, CPU performance isn't the issue in that I can run SVP at such high settings at 1280x720 to the point of the interpolation artifacts becoming problematic, but rather it's my GPU than can't handle interpolating anything greater than maybe 1440x800 or so.

You're lucky I randomly revisited this forum to post a question after pretty much a year or so of not being on here. tongue

Nevertheless, your issue would probably be more appropriate to have its own thread, as that's quite a strange issue you have.  The only thing I can think of is that maybe it's the specific video clip you're testing with or maybe your hardware decoder can't quite do 30fps of whatever codec you're using.

Thing is, 5x interpolation of 24fps would be considerably more CPU and GPU intensive than 2x interpolation of 30fps except in terms of hardware decoding the actual source video stream.

It would make sense to me if 1280px width or 720p was a common laptop, monitor, or TV resolution...but unfortunately it is not.


Other than 10+ year old laptops (1280x800), 10+ year old monitors (1280x1024), and tablet/mobile devices that don't use x86 CPUs (1280x720 and 1280x800), nearly all displays are 1360x768 at minimum (including TVs that are advertised as 720p).  This means that nearly anybody using the the downsize to HD (720p) combined with fullscreen is going to be doing some sort of upscaling, so you'd ideally want to have as much of the source resolution as possible without it causing a reduction in performance.

For example, I currently use "downsize to HD" on my PC that is connected to a 1080p display as the PC's performance is inadequate for SVP to process at a full 1080p.  For videos with a 16:9 aspect ratio like 1920x1080, I'm getting the full resolution possible that my PC hardware could handle.  However, with any other aspect ratio like 2.4:1 and 1920x800, the fact that it downsizes all the way to 1280x534 means I'm actually leaving performance and/or resolution on the table as that is something like 25% fewer pixels than 1280x720.


The way I see it, because the resulting image is almost certainly going to be upscaled anyway, why wouldn't the user prefer a higher resolution result that would still have identical performance to the likes of 1280x720?

Chainik wrote:

yep

Is there a particular benefit for SVP to behave in its current way that I am unaware of?

I had been doing some SVP tests on an HD5450 I had gotten for free, and in the process I discovered that the "Decrease to HD" downsizes to 1280px wide or 720p regardless of the source video's aspect ratio.


If the source video is 1920x800, the resulting video in after SVP's downsize will be something like 1280x534.

If the source video is 1440x1080, the resulting video in after SVP's downsize will be something like 960x720.


Is this in fact the the intended behavior?

I was just wondering this since both 1280x534 and 960x720 have around 25% fewer total pixels than 1280x720 does; to have actual similar total pixels they'd have to use a resolution of something like 1480x616 and 1104x828.

Apologies for the 13-months-later grave-dig, but I just want to confirm if the above method of using ffdshow to resize the video stream is still the best way to use a lighter-weight downscaling algorithm with SVP.

Unless there's now a way to change SVP's built-in downscaling algorithm to a lighter-weight one?



For reference, I'm planning on moving my HTPC's SVP configuration away from 32bit MPC-HC and I wanted to find out if there's a better way to do things now (in particular, I don't believe the ffdshow method works with players like mpv).

For SVP's real-time interpolation, there are certain behind-the-scenes difference that give a smoother result when using GPU-acceleration vs only using the CPU for interpolation ("smooth.cubic" particularly comes to mind - it only works with a GPU).

Therefore, I'm wondering if this applies to transcoding as well - that is, do we need to have GPU-acceleration enabled in order to have the smoothest motion possible even for transcoding?  In other words, if I transcode with GPU-acceleration disabled, will the resulting motion not be as smooth compared to if I had GPU-acceleration enabled?