How Vint Works
Depth aware and machine learning based interpolation:
Vint generates a new cache for every new combination of video resolution and RIFE model. This takes about 30 seconds and involves a commandline window opening while generating that cache.
Vint's RIFE interpolation is very high quality but is also computationally expensive. Vint accelerated that computation extensively but an RTX 3080 or RTX 4060 Ti desktop can expect to interpolate a 1080p 24FPS video up to about 60FPS. RIFE's performance scales with pixels and output framerate so that same GPU can expect to be able to interpolate 720p 24FPS to 120FPS smoothly. Vint offers easy video resolution scaling to tune the video to the capability of your GPU. Nvidia 4000 and 5000 series GPUs offer greater tensor performance and therefore can handle greater resolutions and target framerates smoothly.
This page has useful ballpark figures for tensor performance: https://www.nvidia.com/en-us/geforce/graphics-cards/compare/
An RTX 3080 or RTX 4060 Ti for 1080p 60FPS output is about 200-250 'AI TOPS' based
on this chart:
https://www.nvidia.com/en-us/geforce/graphics-cards/compare/
500 'AI TOPS' for example should be capable of 1080p 120FPS or 1440p 60FPS output.
Realtime:
Vint uses the MPV player for realtime video upscaling. MPV offers extensive customization options in configuration files. MPV also offers numerous keyboard controls. Check out the MPV documentation for more information:
https://mpv.io/manual/master/
Offline:
Vint has an 'Offline Queue' tab that can be populated with videos located on a local drive.
Simply add a file from the file selector or by pasting a local file path from your clipboard. This will add the video to the queue. You can drag to reorder files in the queue.
To start transcoding, simply press 'Transcode queue' in the 'Offline Queue' tab or click 'Transcode' on a specific file you wish to process. This action will open a commandline window that shows the progress of the transcode. Currently Vint only supports CPU encoding in H264 and H265 because they offer superior quality and configuration. Be aware that generally, for most systems, the CPU encoding portion of the transcode will be substantially slower than the GPU tensor interpolation portion.
The 'CRF Value' or constant rate factor dictates the target quality of the video encode. Lower values result in a larger file size and higher quality output.
How to play videos:
The recommended way to play local video files with Vint using realtime upscaling is by opening the video file with the Vint executable. Simply right click on a video file, select 'Open with' and 'Choose another app'.
Click 'Look for another app on this PC' and select Vint.exe from the file selector. Once you do this and click 'Always use this app to open .[fileext] files' you will be able to left click on a file and it will play immediately with Vint's realtime settings. For other file extensions you simply need to click 'Choose another app' but Vint will be in the 'other options' list and you will not need to open the file selector again.
Alternatively, you can use the 'add from...local drive' file selector in the 'Realtime queue' tab to add a video file to the queue. It will not play automatically but you can either click 'Play' directly on the video in the queue or click 'Play queue' to play all videos on the queue.
Do note there can be issues when enqueuing files that have an apostrophe in the path.
It's also possible to drag files and links into the MPV window to play them.
Web streaming:
Finally, you can copy a link to a youtube video or other web video supported by yt-dlp and click 'Play from clipboard' and the MPV window will open. Note, if a video can be played, the video link shown below the 'Play from clipboard' button will be replaced with the title of the video.
You can also add web links to the realtime queue by using the 'Add from...clipboard' button in the 'Realtime queue' tab. Local and web videos can be mixed interchangeably in the realtime queue.
yt-dlp has support for a wide array of sources, this link has an incomplete list:
UVC source (video capture cards):
Vint can take a standard UVC source like those from webcams or video capture cards and use all of Vint's upscaling techniques on that video stream. Naturally, interpolation adds some latency, similar to that of online gamestreaming services (~50-100ms). BFI and CRT emulation add less latency.
This is a great option to use if you want to interpolate webcam footage before streaming/recording.
Using a console output to a capture card allows you to play old 30fps games with the smoothness of a modern system.
Unfortunately, RIFE interpolation using tensor core acceleration doesn't play well with competing graphics accelerator usage on the same system. Therefore, only external UVC sources are recommended. Software loopback using OBS or hardware loopback both cause substantial stuttering before the interpolation step so Vint does not advise using interpolation of a video source from the same computer that is running Vint. This limitation applies to even light graphics applications and very low resolution video loopback.
How to best use Vint's RIFE engine:
Vint uses the RIFE engine for
interpolation. The RIFE model version affects the visual quality and
performance of the interpolation. Alternative RIFE models can be added
by placing their .onnx files in the `<path to Vint
folder>\assets\vsmlrt\models\rife\` folder.
In
order to maximize performance, Vint's implementation of RIFE creates a
new cache for every new combination of resolution and RIFE model used.
For example, if you play a 1080p file with the '4.9' model, a command
line window will open and the cache will be generated. This process will
normally take 30 seconds or so and generate a ~12MB cache file. The
second time you play that video, it will play instantly using that
generated cache. If you then play a 720p file or change to a different
RIFE model, a new cache will be generated. All caches persist until they
are deleted. This applies to both realtime and offline transcoded
interpolations.
Nvidia GPU acceleration:
Vint's
implementation of RIFE uses the Nvidia TensorRT (trt) API and the tensor
acceleration hardware found on RTX GPUs. Few other system resources will
be stressed but GPU tasks can interfere greatly with Vint's ability to
run the RIFE engine smoothly. If you wish to see resource consumption, the Windows task manager has a GPU activity monitor under the 'Performance' tab. RIFE's tensor core usage can be coarsely monitored by selecting the 'Cuda' graph from the dropdown menu in Windows 10.
If you are attempting to interpolate to a higher output framerate and at a higher resolution than your system can handle, this Cuda usage will measure well below 100% but MPV will indicate dropped frames and the video will be choppy. Generally, it's better to start with lower settings, check Cuda usage and increase your settings until you approach 80% or so to leave appropriate headroom. Leaving adequate headroom is critical for consistently smooth performance. Windows 11 does not appear to show a Cuda usage reading in the task manager under some circumstances like when Hardware Accelerated GPU Scheduling (HAGS) is enabled.
Nvidia also has TensorRT-RTX acceleration (trtx) available but it is generally not preferred. It does use less file space and less RAM/VRAM and ostensibly different hardware support characteristics but it generally performs worse than regular TensorRT.
Intel and AMD acceleration:
You can find the acceleration drop down selector in the advanced part of the Vint app settings menu. Settings are in the upper right by default. You do have to expand the advanced settings pane.
I will note that while I have not tested it, this Intel CPU acceleration has been reported to work on AMD Ryzen CPUs as well.
Performance check:
Vint provides information about the config configured and running below the title and progress bar.
These indicates what Vint is trying to apply but will not indicate if it is successful or not.

Vint will also provide warnings if MPV reports dropped frames or the output framerate is the same as the input video container.
You can look at the raw info reported by MPV below in the Vint video info tab or you can open the stats in MPV directly to see that same information.
This above image is shown by pressing 'i' or 'shift + i' in the MPV window. Any dropped frames (output) indicate if you are trying to interpolate at higher settings than your system is capable of.
Miscellaneous:
Basic troubleshooting:
If you are not getting a Vint config being reported in the video information tab but MPV is open with your video then you likely have something preventing Vint from initializing at all.
Consider verifying files in Steam, updating graphics drivers, and whether you are using the correct acceleration library for your platform.
If you are getting dropped frames or unsatisfactory performance consider turning down settings such as resolution and framerate/multiplier target and look at performance metrics mentioned above.
If you have upgraded your Nvidia GPU to a new architecture and Vint doesn't work:
Previously trained TensorRT engine runtime caches that were built for an old architecture will be incompatible with other Nvidia architectures. (This means something like upgrading a 30xx card to a 50xx card) I don't currently have a way to automatically invalidate those caches with hardware updates but I can look into it.
The solution is to go into '%Vint_directory%\assets\vsmlrt\models\rife\' and to delete all '.engine', '.engine.cache', and '.engine.cache.lock' but DO NOT delete the '.onnx' files in that same directory.
Once those are cleared, you can simply run again and they engine runtime caches will be regenerated correctly.
If you have system wide python or SVP installed and Vint doesn't work:
Some of these dependencies installed in the system can prevent Vint from launching videos at all.
SVP has been known to add lots of registry keys that can interfere with the operation of Vint.
To fix this, open the registry editor (`regedit.exe`) and access `Computer\HKEY_CURRENT_USER\Software\'
In that folder, delete any items related to 'Python', 'vapoursynth', or 'ffmpeg'.
If that doesn't work, system environmental variables may be the issue.
(Special thanks to ForeverNumb for helping me troubleshoot this!)
This should resolve any conflicts with Vint's realtime interpolation.
Also, while I haven't seen any issues from any users so far, it is conceivable that systemwide python configurations could interfere. Check Windows environmental variables in addition to the registry for conflicts if you think this might be the case.
Vint (1.3.2) uses portable python 3.12.7
System-wide python installations can sometimes interfere with Vint so if videos do not open try uninstalling.
Toggle Vint's functionality:
You can easily enable or disable all Vint upscaling in the MPV video player window by pressing 'F1'. Text will show up to indicate that.
Pressing `F2` and `F3` toggle 2x and 3x video super resolution scaling.
Notification tray icon:
The Vint notification tray icon can be interacted with for select functions. If the Vint window is open, left clicking the icon will minimize Vint to the notification tray. Left clicking again will open it again.
Pressing middle mouse on the icon will close Vint entirely.
Right clicking the icon will attempt to play any link or path in your clipboard. This is convenient for web streaming links.
No comments:
Post a Comment