1

(2 replies, posted in Using SVP)

Great to hear, thanks for letting me know! I brought up support with MPV (see https://github.com/mpv-player/mpv/issues/11060) and it could end up getting upstreamed into FFmpeg as a filter. Could SVP handle 10/12 bit support? "The api itself says it can only accept nv12 and rgb, which would make proper handling of 10/12 bit content impossible, as you really don't want to do interpolation on the final scaled rgb and neither do you want to do rgb conversion in a filter as opposed to in the vo."

Chainik wrote:

the current FRUC API only allows x2 interpolation which makes it not so interesting as it could be

In this case, it seems the API does not really care whether you passed one if its own interpolated frames back to itself. Perhaps non-2x interpolation could be hacked in through SVP holding on to the outputted interpolated frames and passing them back in with the real next video frame, up to an arbitrary number of times to handle 1.5, 3x, 4x, 5x, etc.? The logic for when and how to do this would need to be on SVP's side obviously. Personally, I only use 2x but I understand why other ratios are desirable.

I was reading the documentation for NVOFA FRUC (see https://docs.nvidia.com/video-technolog … index.html), and it looks like this would make optical flow-based frame interpolation possible for any NVIDIA GPUs since the Turing generation.

I suppose there needs to be 2 different options offered now. 1) Only use motion vectors from NVOFA and let SVP do the rest, and 2) Allow NVOFA FRUC to generate the interpolated frames.

(2) is new since SDK 4.0 and would not have been easily possible before. I don't know how the FRUC frames' quality compares with SVP, but it would be an appreciated feature regardless of if it is technically worse. There is sample code provided from NVIDIA that shows how relatively simple it is to integrate NVOFA FRUC into applications.

3

(1 replies, posted in Using SVP)

Hi,

I used to use SVP4 a lot, but have not used any video interpolation software that much recently. I have tried out the new RIFE model on some clips and found that it performed extremely well, and on Google Colab, it can easily do 2x 1080p interpolation at 9-10fps (which is insane for a neural network-based approach!). The authors of RIFE have published PSNR and SSIM results in their paper at https://arxiv.org/abs/2011.06294, and I was wondering if anyone has any data/results about how SVP (at the best default settings) compares to these neural net models. I might run SVP on these datasets when I get time if no one else does, but I figured I'd save time in case someone has already done this!

4

(8 replies, posted in Using SVP)

Are you sure it's skipping frames and not masking artifacts? Is artifacts masking set to disabled? Uniform + no scene change detection + integer frame rate multiplier should generate exactly what you want.

5

(0 replies, posted in Using SVP)

I have been experimenting with MVTools and have used a trimmed down version of this script (https://forum.doom9.org/showthread.php? … ost1800439), namely no remove grain and dct=4, to render a movie at 2x framerate. It was a great success with no noticeable artifacts at all. (The movie was the blu-ray copy of Jesus Christ Superstar, 1971 version)

This took way too long though, and given that gpu-based calculations for motion vectors are essentially equal to cpu-based calculations, except way faster, is there a way to configure SVPflow2 params (or through the Manager GUI) to get equal or better results than the jm script?

Ideally I'm aiming for maximum smoothness and hoping that artifacts are not an issue. I can compare any suggestions with results from my avisynth script that I used for the movie render.

Thanks for any help!

6

(1 replies, posted in Using SVP)

I just had a question about using SVPflow directly on Linux (with vspipe and ffmpeg). If my source is 10-bit HDR and I want to preserve this in the raw video output from SVPflow, is there a way to do this, or will it always convert it to YV12?

I ask because I was reading through the SVPflow manual and saw this near the bottom of the page under "Basic Vapoursynth script":
clip = # need some input here
clip = clip.resize.Bicubic(format=vs.YUV420P8) #convert to YV12

Can this format be YUV420P10 instead or will that mess up SVP's calculations? Can HDR information be preserved?

If not, I'm fine with encoding SVP's raw video output to 8-bit hevc using ffmpeg (rather than 10-bit hevc) so long as SVPflow converts the 10-bit content to YUV420P8 faithfully. Thanks for any info!

7

(2 replies, posted in Using SVP)

You can still have SVP double, triple, or generally increase the frame rate like usual, but your monitor will not be able to refresh quickly enough to show these extra frames, so you'll effectively be watching every 2 frames of a (for example) interpolated 60fps video, which is not optimal.

If you want smooth motion, I suggest keeping your refresh rate high and sacrificing the 10bit color for 8bit and higher refresh rates. Make sure you read about SVPs tips on 10bit to 8bit color conversion (on their wiki) if your source videos are 10bit.

8

(4 replies, posted in Using SVP)

Thanks for the update. In the meantime I uploaded the libs to my Google Drive which is an easy fix smile

9

(4 replies, posted in Using SVP)

If there's an update, I'd like to know about it and have it. I can follow the instructions in the PKGBUILD on Arch Linux's AUR but it's hacky. The website shouldn't be providing old versions anyway regardless of how much they change.

10

(4 replies, posted in Using SVP)

Hi again,

Since I'm using vapoursynth scripts on Linux, I don't need SVPManager but I DO need updated svpflow plugins. The ones on the Download page are very outdated (4.2.0.xxx vs 4.3.0.xxx).

Do I have have to manually extract them from the ".run" binary every new release or am I just missing where new ones are hosted?

Thanks!

11

(5 replies, posted in Using SVP)

Chainik, my initial feeling was correct. Like you said, keeping SVPManager open with "rc:true" allowed me to encode without any memory issues. However, not running SVPManager at all and deleting "rc:true" from my script (which I assume defaults to false) caused it to work flawlessly.

I'm really happy that I can use just the libraries and not have to have the GUI work too. I think the documentation should be updated to reflect this about "rc" for Linux users! It gave me a headache yesterday smile

12

(5 replies, posted in Using SVP)

Thanks, I'll be migrating to NixOS this weekend and I'm not even sure if SVPManager will work correctly on it (packages are declaratively installed and entirely reside in /nix/store rather than /usr/bin). Vapoursynth, mpv, and ffmpeg are all packaged so ideally I can keep the 2 svpflow libs in my home folder and change the path in the vpy script without running SVPManager at all.

I'll experiment around.

13

(5 replies, posted in Using SVP)

I didn't know it needed to be open... Sounds like an easy fix!

Is SVPManager actually needed or is it something I can change in the script (setting "rc" to false for example)?

14

(5 replies, posted in Using SVP)

My vapoursynth/SVP script: https://pastebin.com/MC9EFFUG

My laptop's memory is about 8GB and within 4-5 minutes of running this script (piped to ffmpeg which is fine, not even 200 MB of ram), my computer freezes (I'm on Linux). I tried setting core.max_cache_size = 5000 and this did nothing.

The video I'm using is very large... 1080p Blu-ray rip, 24 GB. Perhaps the video size is too big? Or that I'm using ffms2 to read the video?

So, 2 questions. 1) How can I stop the script from maxing out my memory, and 2) How can I pass a video into this script without using ffms2? I know it must be blatantly simple but this is a whole new world for me :)

Thank you for ANY help!

P.S. Completely random but what does rc:true actually mean? The documentation says it's for SVP Manager, but in what way?

15

(2 replies, posted in Using SVP)

I looked for a while and couldn't find those mpv settings... I feel pretty dumb, but thank you so much!

Sorry to bother you again, but is there any benefit to using mpv vs vspipe and ffmpeg? And the .vpy script where I installed SVP4 will work with my GPU with or without SVP Manager being opened? How would I change profiles? Can I just use "vspipe -a profile=foo etc."?

I'm away from my computer at the moment, else I'd just try all these things for myself!

16

(2 replies, posted in Using SVP)

I've been experimenting with SVPCode (on Linux). I'd really like to just use ffmpeg and vapoursynth because customizing the encoding process (and everything really) is so much simpler without having to work around mpv.

Is it possible to use SVP (with GPU) by just doing "python foo.vpy | ffmpeg -i etc. -o foo_60.mkv" ? (obviously pseudocode, just as an example)

If it is possible, what raw video format does SVP output?

If it isn't possible, how can I pass these ffmpeg options (-hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi) to mpv so I can benefit from vaapi encoding/decoding?

I'd rather stick to the command-line rather than the GUI for SVPCode... just personal preference.

Thanks for any help!

17

(3 replies, posted in Using SVP)

Thanks for letting me know. Yeah the vaapi encoders for FFmpeg take different arguments than the software encoders. It has a CRF mode that you can explicitly enable. Sounds like that's a starting point for some basic comparisons!

18

(3 replies, posted in Using SVP)

I know video encoding is a subjective, messy topic when talking about "optimal" quality, but I am trying to understand this from the SVP point of view.

I'm getting a new laptop soon with an i5-8365U CPU and Intel UHD 620 iGPU. I will install either Gentoo or Arch Linux on it... Shouldn't matter as they both support the new "Intel-Neo" OpenCL and "Intel-Media-Driver" for VAAPI.

My goal will be to use SVPcode to re-encode somewhat lossy x264/x265 1080p content (not going to lie, acquired through "online sources"...) to H.265. I'd like to use FFmpeg's hevc_vaapi encoder to do so since it is way easier to set up than QSV (and still open-source).

Obviously, I want to avoid quality loss. Inserting interpolated frames adds to a file's data so I expect the resulting file to be larger than my source. How can I ensure the re-encoded file is minimally affected by the hevc_vaapi encoder? I assume setting "hevc_vaapi -q:v 18" and the other necessary options is good enough for no noticeable quality loss... Am I missing something?

Any help is greatly appreciated! :)

19

(3 replies, posted in Using SVP)

I can run it but the system is designed to be stateless and package management is supposed to be done entirely through their swupd tool. The version of ffmpeg they supply does not handle proprietary codecs either.

Flatpak would ensure every Linux user has the same system libraries across distributions so troubleshooting and differences in packaging aren't an issue. I can always keep a minimal Solus or Ubuntu install around but having SVP work entirely in Clear would be optimal.

Feel free to talk to the developers here (https://github.com/clearlinux/distribution/issues/809). I don't know all the technical differences but apparently the license is an issue.

20

(7 replies, posted in Using SVP)

Ferdous wrote:

I'm currently using AMD Fluid Motion which is much better in resource usage & less artifacts.

It's literally awesome

I agree, but keeping a Windows install on my hard drive just for this seems wasteful :P

Why can't AMD release a Linux version? SVP is amazing as a cross-platform tool, but I've found Fluid Motion produces less artifacts and is much easier to setup and use. Not worth keeping Windows around to use it though.

21

(3 replies, posted in Using SVP)

I use Intel's Clear Linux OS Desktop which does not allow for easy installation of third-party software. It also does not natively support proprietary codecs. The only third-party software it supports is flatpak. I know flatpaks are quite extensible and are used by proprietary/freeware software as a method of distribution. Is there any way SVP could be offered as a flatpak for easier and more standardized availability on Linux distros?