Nuihc88 / SVPlite

SVPlite - Realtime-Optimized AviSynth+ Script-Templates for the SmoothVideo Project's SVPflow filters. Portable Low-Resource Motion Interpolation.
The Unlicense
37 stars 5 forks source link

Any svplite script for realtime playback (capture cards)? #4

Closed Usulyre closed 1 year ago

Usulyre commented 2 years ago

Hi, do you have any scripts for realtime playback (capture cards) for the best balance of smoothness and no lag (if for example playing a game -video game console hooked up to capture card)?

My best pc has a ryzen 5 5600x and gtx 1660. My laptop has a core i7 6700hq and gtx 1060 6gb

Nuihc88 commented 2 years ago

Since your hardware is more powerful than any that i own and test these scripts with, you might be able to use any of my presets without problems or much tinkering.

From most to least lag the order for Quality-Preset options is: 'Heavy' -> 'Medium' -> 'Light' -> 'Ultralight'. I would suggest trying these out in order; with quality differences being generally fairly negligible from one to the next and biggest jump in lag being from 'Heavy' to 'Medium'.

From most to least lag the order for Content-Preset options is: 'Live' -> 'Mixed' -> 'Anime'. For most games i would recommend using the 'Mixed' Presets for best quality, although 'Anime' Presets might be better for some 2D games.

In regards to smooth and responsive gameplay with least lag & dropped frames, your renderer configuration is likely to make the most difference. If frame-buffers are set too high there will be lag, too low and there will be dropped frames.

I also suggest tuning the 'cores', 'threads' & 'frames' values in 'SVPlite_Environment.avsi' to match your system configuration.

Usulyre commented 2 years ago

Hi, i took parameters from medium_live.avs, etc. to form my own script. I only use one script at the moment.

My monitor is 144 hz.

I'm using mpc-be x64, avisynth filter, ffdshow for the capture card processing, enhanced video renderer for the video renderer.

My capture card defaults to 60 fps.

Here is my script. If you see anything that would help for smoothness, let me know. Also, i'm having a slight delay, very slight delay when I press the my remote (capture card has a video streaming player hooked up to it) and what happens on my monitor. Without svp script it is fine. So, if you can correct anything that would stop the lag and keep the smoothness, let me know for that too. Thanks in advance.

This script was generated by SmoothVideo Project (SVP) Manager.

Check http://www.svp-team.com for more details.

SetMemoryMax(6000) SetCacheMode(1) cores=4 global threads=8 frames=16

AvsFilterSource()

ConvertToYV12()

SetFilterMTMode("DEFAULT_MT_MODE",2)

global crop_params="" global resize_string=""

global super_params = "{pel:1,gpu:1,full:false}"

global analyse_params = "{block:{w:32,h:16,overlap:0},main:{ search:{distance:-9 ,type:4,satd:false,sort:true, coarse:{distance:-21,type:2,satd:false,trymany:true, width:961,bad:{range:0}}},levels:0,penalty:{lambda:3.3, plevel:1.25,pnew:44,pglobal:104,pzero:32,pnbour:74,prev:-1}}}"

global smoothfps_params = "{rate:{num:144,den:1,abs:true},mask:{cover:88}, algo:23,cubic:1,linear:true,scene:{mode:0,blend:false, limits:{scene:2220,zero:4,blocks:42},luma:1}}"

global demo_mode=0 stereo_type=0 stereo_left_selection="" stereo_right_selection=""

########## BEGIN OF MSMoothFps.avs ##########

This file is a part of SmoothVideo Project (SVP) 3.1

This is NOT the full AVS script, all used variables are defined via

JavaScript code that generates the full script text.

function interpolate(clip src) { input = crop_params=="" ? src : eval("src.crop("+crop_params+")") input = resize_string=="" ? input : eval("input."+resize_string)

super=SVSuper(input, super_params)
vectors=SVAnalyse(super, analyse_params, src=input)
smooth=SVSmoothFps(input, super, vectors, smoothfps_params, mt=threads)

return demo_mode==0 ? smooth : demo(input,smooth)

}

input=last

stereo_type==0 ? eval(""" interpolate(input)

""") : stereo_type==1 || stereo_type==3 ? eval(""" lf = interpolate(input.crop(0,0,input.width/2,0))"""+stereo_left_selection+""" rf = interpolate(input.crop(input.width/2,0,0,0))"""+stereo_right_selection+""" StackHorizontal(lf, rf) """) : stereo_type==2 || stereo_type==4 ? Eval(""" lf = interpolate(input.crop(0,0,0,input.height/2))"""+stereo_left_selection+""" rf = interpolate(input.crop(0,input.height/2,0,0))"""+stereo_right_selection+""" StackVertical(lf, rf)""") : input

########### END OF MSMoothFps.avs ########### Prefetch(threads)

Nuihc88 commented 2 years ago

I don't see anything that would directly cause the button-press delay, but would guess that it's probably some of the javascript that SVP runs in the background; there are many reasons why i don't use any of it in SVPlite and random delays are one.

Here's your above script with some quick optimizations, including all seemingly unused parts removed:

SetMemoryMax(3072)
SetCacheMode(0)
cores=4
threads=8
frames=16

SetFilterMTMode("DEFAULT_MT_MODE",2)
SetFilterMTMode("SVSuper",      1)
SetFilterMTMode("SVAnalyse",        1)  # All SVPflow Filters support mode 1.
SetFilterMTMode("SVSmoothFps",      1)

AvsFilterSource()

if (!IsYV12) {last.ConvertBits(bits=8).ConvertToYV12()} 

global super_params = "{pel:1,gpu:1,full:false}"

global analyse_params = "{block:{w:32,h:16,overlap:0},main:{
search:{distance:-9 ,type:4,satd:false,sort:true,
coarse:{distance:-21,type:2,satd:false,trymany:true,
width:961,bad:{range:0}}},levels:0,penalty:{lambda:3.3,
plevel:1.25,pnew:44,pglobal:104,pzero:32,pnbour:74,prev:-1}}}"

global smoothfps_params = "{rate:{num:144,den:1,abs:true},mask:{cover:88},
algo:23,cubic:1,linear:true,scene:{mode:0,blend:false,
limits:{scene:2220,zero:4,blocks:42},luma:1}}"

super=SVSuper(input, super_params)
vectors=SVAnalyse(super, analyse_params, src=input)
smooth=SVSmoothFps(input, super, vectors, smoothfps_params, mt=cores+1)
input=last

OnCPU(frames)
Prefetch(1, frames)

If it still doesn't work right, i recommend copying my 'UltraLight_Mixed.avs' Preset along with 'SVPlite_Environment.avsi' & 'SVPlite_Processing.avsi' directly as they are and loading the first one from AviSynth Filter, then gradually lowering the 'cores', 'threads' & 'frames' values to see if that makes a difference.

Nuihc88 commented 2 years ago

PS. Increasing video renderer's cache value to match your script OR Lowering 'frames' value to match your video renderer's cache value might help with possible memory bottle-necks, but also potentially cause micro-stutters if set too low for your CPU to manage effectively.

Another thing to look out for in regards to reducing processing delays is colorspace conversions. If your player does any kind of internal processing, it's likely converting your video feed several times along the way, each time adding a tiny bit of delay. I have no idea what your capture-card outputs or how it's handled by ffdshow, but if you are able to set the output format for your capture-card or ffdshow, you might be able to reduce the delay by disabling output formats or processing steps that require extra conversions. If your capture-card is outputting something memory heavy you might also be able to get better performance by switching to NV12 or YV12 early on in the filter chain; internally SVPflow requires YV12 input anyway.

Also, Interpolating 60 fps to 144 fps is probably going to be fairly taxing on any system, so you might also want ot consider frame doubling to 120 fps instead; while that would cause a minor reduction to smoothness, it would also reduce CPU & Memory usage to about half while retaining sharpness of the original frames. That said, if you have no issues with memory bandwidth and prefer smoothness over sharpness, this isn't necessarily better.

Usulyre commented 2 years ago

Had to modify your script because there was an error: "I don't know what input means"

So here is my modified script:

Works on video but when I try it with my capture card the player closes with no error.

SetMemoryMax(3072) SetCacheMode(0) cores=4 threads=8 frames=16

SetFilterMTMode("DEFAULT_MT_MODE",2) SetFilterMTMode("SVSuper", 1) SetFilterMTMode("SVAnalyse", 1) # All SVPflow Filters support mode 1. SetFilterMTMode("SVSmoothFps", 1)

AvsFilterSource()

if (!IsYV12) {last.ConvertBits(bits=8).ConvertToYV12()}

global super_params = "{pel:1,gpu:1,full:false}"

global analyse_params = "{block:{w:32,h:16,overlap:0},main:{ search:{distance:-9 ,type:4,satd:false,sort:true, coarse:{distance:-21,type:2,satd:false,trymany:true, width:961,bad:{range:0}}},levels:0,penalty:{lambda:3.3, plevel:1.25,pnew:44,pglobal:104,pzero:32,pnbour:74,prev:-1}}}"

global smoothfps_params = "{rate:{num:120,den:1,abs:true},mask:{cover:88}, algo:23,cubic:1,linear:true,scene:{mode:0,blend:false, limits:{scene:2220,zero:4,blocks:42},luma:1}}"

super=SVSuper(last, super_params) vectors=SVAnalyse(super, analyse_params, src=last) SVSmoothFps(last, super, vectors, smoothfps_params, mt=cores+1)

OnCPU(frames) Prefetch(1, frames)

Usulyre commented 2 years ago

I'm not sure why it closes with no error, could it be the colorspace conversion?

Nuihc88 commented 2 years ago

I'm not sure why it closes with no error, could it be the colorspace conversion?

Since i'm not seeing anything out of place here apart from {rate:{num:120,den:1,abs:true} being perhaps better expressed as {rate:{num:2,den:1}; though that shouldn't make a difference unless your capture-card is actually outputting something like 59,98 fps...

I would guess it probably is input format related and would start the troubleshooting by looking at the output from MPC-BE's Right-Click menu > Renderer Settings > Display Stats to figure out what the capture card is outputting with and without AviSynth Filter & ffdshow.

Usulyre commented 2 years ago

If i set the script with

ConvertToYV12()

and comment out

if (!IsYV12) {last.ConvertBits(bits=8).ConvertToYV12()}

I get a picture but it is frozen

convert

Here is stats with without avisynth filter and ffdshow

none

Usulyre commented 2 years ago

SetMemoryMax(3072) SetCacheMode(0) cores=4 threads=8 frames=8

SetFilterMTMode("DEFAULT_MT_MODE",2) SetFilterMTMode("SVSuper", 1) SetFilterMTMode("SVAnalyse", 1) # All SVPflow Filters support mode 1. SetFilterMTMode("SVSmoothFps", 1)

AvsFilterSource() ConvertToYV12()

if (!IsYV12) {last.ConvertBits(bits=8).ConvertToYV12()}

global super_params = "{pel:1,gpu:1,full:false}"

global analyse_params = "{block:{w:32,h:16,overlap:0},main:{ search:{distance:-9 ,type:4,satd:false,sort:true, coarse:{distance:-21,type:2,satd:false,trymany:true, width:961,bad:{range:0}}},levels:0,penalty:{lambda:3.3, plevel:1.25,pnew:44,pglobal:104,pzero:32,pnbour:74,prev:-1}}}"

global smoothfps_params = "{rate:{num:120,den:1,abs:true},mask:{cover:88}, algo:23,cubic:1,linear:true,scene:{mode:0,blend:false, limits:{scene:2220,zero:4,blocks:42},luma:1}}"

super=SVSuper(last, super_params) vectors=SVAnalyse(super, analyse_params, src=last) SVSmoothFps(last, super, vectors, smoothfps_params, mt=cores+1)

OnCPU(frames) Prefetch(1, frames)

To get this to work with my capture card I used "ConvertToYV12(): and comment out "if (!IsYV12) {last.ConvertBits(bits=8).ConvertToYV12()}" plus I set "frames=16" to "frames=8"

Why would "frames=16" have any impact? When it is set like that the video is almost frozen.

Here is the above script's stats:

2022-08-21 16_56_28-

Nuihc88 commented 2 years ago

if(!IsYV12) {last.ConvertBits(bits=8).ConvertToYV12()} Should only check if the input is YV12 and if it's not then convert it first to 8bit (as required for YV12) and then to YV12. My guess is that the if-statement is causing communication with the capture card to be delayed by few ms as playback is starting, thus causing some kind of fluke state, but i have no way to know for sure.

Why would "frames=16" have any impact? When it is set like that the video is almost frozen.

My guess is that AviSynth Filter has some communication issue with either ffdshow or the video renderer. Also your capture-card likely can't buffer very well due to being a nearly realtime thing, thus it's likely that you could get better performance by setting frames & threads values even lower. Basically 'EVR Buffers:' in MPC-BE should match the 'frames=' value in your AviSynth Script.

Based on what MPC-BE's Display Stats are reporting, your current video renderer is only buffering 4-5 frames, so you could try switching from standard 'Enhanced Video Renderer' (a.k.a. EVR) to 'EVR (Custom Presenter)' or 'Sync Video Renderer' and then adjusting 'EVR Buffers:' value under 'Right-click menu' > 'Options' > 'Video' to see if lower or higher values improve performance.

By the way, looks like your capture card is outputting YUY2 @ 59.994 fps, so rate:{num:2,den:1} would be more optimal from performance standpoint.

I have no idea if it's possible to directly adjust your capture-card's output from YUY2 to YV12, but you should at least be able to set NV12 or YV12 as primary output colorspace from ffdshow (or disable other colorspaces in either ffdshow's or AviSynth Filter's settings).

Usulyre commented 2 years ago

Ok, I think some changes have reduced the delays. Do you have any more tips on how to get the most smoothness, while preserving everything that you mentioned above, meaning won't add more delay?

Nuihc88 commented 2 years ago

Ok, I think some changes have reduced the delays. Do you have any more tips on how to get the most smoothness, while preserving everything that you mentioned above, meaning won't add more delay?

Smoothness is a multi-faceted concept so to answer this i would need to know how things are and aren't smooth for you right now... Off the top of my head all i can say are these things:

  1. If you experience dropped frames, even slightly increasing the buffer sizes is likely to help, but could also add a slight delay, so lower is better up until the point where you get dropped frames, which is generaly less likely on newer hardware. What the sweetspot is will depend on the hardware, but i would guess that for your capture-card 3-5 is likely close to right.

  2. If you can entirely skip whatever processing ffdshow is currently doing for you and/or use a newer (AviSynth) filter for that task, you'll likely reduce latencies a bit. Some newer AviSynth filters are quite good at operating in realtime, while old ones are usually slower than ffdshow.

  3. If you have confirmed that AviSynth Filter is receiving 'YV12' or 'NV12' you can skip ConvertToYV12() entirely in the script, maybe saving a few ms there.

  4. SVPlite is optimized differently for different content types, with 'Live'-Presets having the most 'Soap opera effect' at the cost of some bubble-like blurring, while 'Animated'-Presets instead increase smoothness through stretching-like visual distortions, whereas 'Mixed'-Presets use a more neutral/subtle approach; while 'Heavy'-Presets are slighly smoother in most regards, but with slighly more latency which could lead to some dropped frames under high system loads.

Usulyre commented 2 years ago

OK. I am looking for the most "soap opera effect" possible with SVPlite.

Do you have a capture card that maybe you can test what I am trying to accomplish?

Nuihc88 commented 2 years ago

OK. I am looking for the most "soap opera effect" possible with SVPlite.

In that case you might want to try trading some performance for smoothness with: rate:{num:24,den:10}, which should then output 143.9856 fps and result in much stronger soap opera effect with more motion blur and slightly more overall smoothness. In my experience, for whatever reason abs:false (default) always causes less of a performance hit than abs:true, so as long as the delay doesn't come back, the performance hit should be fine with your hardware.

Do you have a capture card that maybe you can test what I am trying to accomplish?

Nope.

Nuihc88 commented 2 years ago

PS. if you haven't checked this already, i recommend going over this file listing the recommended filter versions... Sanear Audio Renderer for example should effectively remove delays on the audio side of processing while minimizing system overhead. However, i can't know for certain what will work best on any specific hardware (and driver) combination.

Usulyre commented 2 years ago

Does Sanear Audio Renderer support raw audio?

Also, do you know how to add to a svplite script "SVSmoothFps_NVOF" parameters? I have a gtx 1660 so I'd like to see how that works out.

Nuihc88 commented 2 years ago

Does Sanear Audio Renderer support raw audio?

If you mean bitstreaming audio-passthrough, then yes.

Also, do you know how to add to a svplite script "SVSmoothFps_NVOF" parameters? I have a gtx 1660 so I'd like to see how that works out.

I am not able to test this for myself, but it should basically work by editing 'SVPlite_Processing.avsi' like this:

First find and comment out (#) these two lines, like so:

super=SVSuper(last, super_params)

vectors=SVAnalyse(super, analyse_params, src=last)

Then replace this line: SVSmoothFps(last, super, vectors, smoothfps_params, mt=cores+1) with this: SVSmoothFps_NVOF(last, smoothfps_params, mt=cores+1)

not sure if it can take the mt= parameter though, so you may also need to remove that if you run into problems.

Usulyre commented 2 years ago

OK.

What are the parameters specified for NVOF?

I found this but I'm not sure about what to put there?

global nvof = global nvof_blk =

Nuihc88 commented 2 years ago

Had to look those up from SVP forums...

input=last
nvof_blk = 32
nvof_src = input.BicubicResize(input.width/nvof_blk*4,input.height/nvof_blk*4,src_width=-(input.width % nvof_blk),src_height=-(input.height % nvof_blk))
SVSmoothFps_NVOF(input, smoothfps_params, nvof_src=nvof_src, mt=cores+1)

...above code should work well, unless i'm still missing something.

PS. global nvof = & global nvof_blk = are basically AviSynth-script variables used in standard SVP's scripts; These aren't actually passed onto the SVPflow2 library that runs NVOF.

The nvof_blk variable is used for nvof_src input scaling math; while nvof is only used for turning NVOF on/off depending on the value given; as for nvof_src =, while i suspect it could be further optimized for speed or quality by replacing the BicubicResize part with something else, i wouldn't call Bicubic a bad choice.

PPS. Here's a sharper & slightly faster nvof_src line using Catmull-Rom instead of standard Mitchell-Netravali Bicubic scaling: nvof_src = input.BicubicResize(input.width/nvof_blk*4,input.height/nvof_blk*4,src_width=-(input.width % nvof_blk),src_height=-(input.height % nvof_blk), b=0, c=.5)

...and here's a softer & ever faster version using Bilinear instead of Bicubic scaling: nvof_src = input.BilinearResize(input.width/nvof_blk*4,input.height/nvof_blk*4,src_width=-(input.width % nvof_blk),src_height=-(input.height % nvof_blk))

I'm not sure whether sharper or softer scaling would give better results for motion estimation, but would guess that sharper input would be processed more quickly in NVOF.

Usulyre commented 1 year ago

OK thanks for that info.

I noticed video sources that are natively 24 fps when using svp lite or similar software look more smoother/stronger soap opera effect.

I'm working with video capture source and there aren't many capture card sources that can change the input of the source to 24 fps.

I have a avermedia capture card and there is a sdk from avermedia that has a directshow filter that can change the input of the source into 24 fps, i'm not really sure how it works, but if you apply that filter, svp lite or something similar seem to smooth out video/apply the soap opera effect much better.

Do you happen to know a script or plugin or filter (avisynth, vapoursynth, or directshow, etc.) that does the above, changing input framerate, so it can trick svp lite into thinking that is the actual framerate?

Nuihc88 commented 1 year ago

While i know some AviSynth filters that do similar things, i'm not sure how applicable they would be to your use case. I have sometimes used lines like these to work around random source problems: TDecimate(mode=1,chroma=false,dupthresh=2.618,cycleR=36,cycle=60) TDecimate(mode=7,chroma=false,dupthresh=0.618,vidthresh=4.236,rate=23.976) FDecimate2(rate=23.976,threshold=1.618,chroma=false) ...None of these seem completely reliable though.

If you can find a way to limit framerate to the video source's actual fps from the avermedia sdk's directshow filter, that should give the best performance and most reliable operation.

Usulyre commented 1 year ago

I believe FDecimate2 would work the best when using avisynth. I have tried it before and it helped my source become smoother but had some inconsistencies in the smoothness.

Do you know what is the best way to find the threshold parameter? I used the "metrics=true" but the number is constantly moving?

Nuihc88 commented 1 year ago

Do you know what is the best way to find the threshold parameter? I used the "metrics=true" but the number is constantly moving?

The value is very source (and sometimes scene) dependent. I generally use AvsPmod GPo to go through a problematic scene frame-by-frame to get a better sense of what range of values works best. So i guess for a video capture card, you'll first have to find a way to record a test clip.

Usulyre commented 1 year ago

Ok. What's the best way to get consistent smoothness? Most of the realtime video is smooth when I have conducted my tests, but there are times when the video i guess gets stutters in the smoothness? Are the parameters in svplite script affecting this? Like "global analyse_params" ? Or is it something else?

Nuihc88 commented 1 year ago

Ok. What's the best way to get consistent smoothness? Most of the realtime video is smooth when I have conducted my tests, but there are times when the video i guess gets stutters in the smoothness?

Stuttering issues are usually caused by system lag, which correlates heavily with peaks in system load, especially in regards to CPU usage; Here's some ways to reduce it:

  1. Tuning Windows process priorities using Prio - Process Priority Saver, to give higher priority to drivers and video players.
  2. Limiting resource hungry background processes using BES - Battle Encoder Shirasé, to reserve more resources for real-time applications.
  3. Switching to a lower tier SVPlite-Preset like so: Heavy -> Medium -> Light -> UltraLight ... As each drop in tier gets diminishing returns while trading quality for performance, i would generally recommend sticking with Medium or Light.

Without any system tuning, the SVPflow-libraries need about 30% of idle CPU as headroom, but after tuning my system with the tools mentioned above and switching to the correct SVPlite-preset for a given source media, only about 5-10% of headroom is needed for perfectly smooth playback.

Are the parameters in svplite script affecting this? Like "global analyse_params" ?

Yes, 'analyse_params' values do play a role; however, since SVPlite has already been carefully tuned, there is little point in manually adjusting them. For example: Lowering the 'distance' values would significantly reduce latency in low motion scenes, but when set too low, lots of extra processing steps are required in high motion scenes for chasing low-quality vectors across multiple search-levels, when a higher value would have gotten there within first few 'levels', thus reducing the need for further refinement.

Or is it something else?

Most likely what you are seeing is some kind of system overhead or latency issue, but i have no idea what could be causing it. You could try to diagnose such issues with Task & Process Managers (for diagnosing CPU usage spikes) or tools like WhySoSlow & LatencyMon (for diagnosing hardware/driver latency spikes).

Usulyre commented 1 year ago

I have been doing some testing, and again, why is it that (i think), 24 fps video sources when svplite is used, the soap opera effect is more present?

Why are other video sources like 29.97, 30, 60, etc., when svplite is used, nothing seems to happen, no noticeable soap opera effect is happening?

What is the way to make these 29.97, 30, 60, etc., video sources, have the soap opera effect when using svplite in realtime?

Also, what is the recommended video renderer to use for the best soap opera effect? Does the video renderer have any effect on the soap opera effect?

By the way, do you have any capture card, webcam, or any realtime streaming/capture source, that you can use to test svplite on?

Nuihc88 commented 1 year ago

I have been doing some testing, and again, why is it that (i think), 24 fps video sources when svplite is used, the soap opera effect is more present?

One possibility is that you have conditional loading set up from your video player's settings. Can you post screenshots of your filter-chain at various fps if it looks different while working and not working. In PotPlayer mine looks like this: FilterChain ...If it looks the same either way, then it's probably not a conditional loading problem.

Why are other video sources like 29.97, 30, 60, etc., when svplite is used, nothing seems to happen, no noticeable soap opera effect is happening?

It should not matter as long as the video source is actually what it's been encoded as. However, if for example a 24 fps video source was being blindly re-encoded as 60 fps (without motion-interpolating it), then there would indeed be reduced smoothness due to the video containing a bunch of duplicate frames and inconsistent display times between frames, which SVPflow filters have no built-in mechanism for detecting or dealing with. Since you are using a capture card, that is most likely to be the problem and if indeed it is, i have no proper solution as AviSynth+ sadly doesn't support variable frame rates, which any potential solution in realtime playback would be dependent upon.

However, i recommend also checking to make sure that your output fps is configured right, for example rate:{num:2,den:1} should work right regardless of input fps.

What is the way to make these 29.97, 30, 60, etc., video sources, have the soap opera effect when using svplite in realtime?

That depends entirely on whether it's a source problem or player conditionals configuration problem. If it's the former, then you need to find a way to re-convert the video to correct framerate using something like FDecimate2 before SVPflow filters even see it, but that does add to latency and overhead.

Also, what is the recommended video renderer to use for the best soap opera effect? Does the video renderer have any effect on the soap opera effect?

In theory it shouldn't, but depending on both your hardware and drivers, one may drop more frames than another. Personally i use 'Madshi Video Renderer', but 'EVR (Custom Presenter)' & 'Sync Video Renderer' are good choices as well, you'll have to use trial and error on this one.

By the way, do you have any capture card, webcam, or any realtime streaming/capture source, that you can use to test svplite on?

Not really, i have a few laptops with webcams, but on 10" screens the effect would be barely noticeable to the naked eye. Even if i did, i really couldn't further optimize anything for your specific hardware or use case.

...Earlier in this 'issue' you wrote this:

I have a avermedia capture card and there is a sdk from avermedia that has a directshow filter that can change the input of the source into 24 fps, i'm not really sure how it works, but if you apply that filter, svp lite or something similar seem to smooth out video/apply the soap opera effect much better.

...And i responded to that with this:

If you can find a way to limit framerate to the video source's actual fps from the avermedia sdk's directshow filter, that should give the best performance and most reliable operation.

There is really nothing worthwhile i can add to my earlier conclusion there.