Comparison
Quality comparisons are frequently used within the enthusiast community to compare the video quality offered by different sources/releases. It serves as a great way to distinguish the differences between good and bad sources, and can help you determine which one to download.
This guide goes through the process of setting up and effectively utilizing VSPreview, a previewer utility for VapourSynth, to produce useful quality comparisons that will allow you to ascertain which release offers the best visual experience.
Warning
The goal of this guide is to ensure the video is represented as accurately as possible. Do NOT use this guide as a reference for making encodes where the goal is to make the video look better.
VSPreview
VSPreview is a previewer application for scripts created in VapourSynth. It features a simple graphical interface to allow you to use VapourSynth's features (and create comparisons) with ease. This should already be installed in your environment if you followed the setup.
Dependencies
In order to create comparisons with VSPreview, you will need to install some necessary dependencies.
LibP2P
,LSMASHSource
,Subtext
andvs-placebo
can be installed usingvsrepo
from VapourSynth. In your terminal, run the following:
Note
If vsrepo.py
command doesn't work, make sure Windows is set to open .py
files with Python. You may also need to add it to the PATHEXT
environment variable.
awsmfunc
can be installed usingpip
:
If you're working with Dolby Vision (DV) content, you will need to install additional dependencies.
libdovi
can be installed usingvsrepo
from VapourSynth. In your terminal, run the following:
Usage
In order to create a comparison, you will need to create a VapourSynth script. This script outlines the parameters and files which VSPreview will use when generating your comparison.
Create a file called comp.py
and launch it in your favorite text editor.
Basic Script
Here's a simple comp.py
script example that does nothing more than loading the videos and previewing them.
Common issues
Most of the time, the basic script will not be enough. Different sources may need various adjustments to make a fair comparison, some of which are covered below with small code snippets on how to deal with them.
Frame Rate
Sets the source frame rate (fps) based on fractional input (fpsnum
/fpsden
). For example, fpsnum=24000
and fpsden=1001
forces the clip frame rate to 23.976 fps. This should be used on sources that have different frame rates that don't automatically stay in sync.
Note
If a clip stays in sync without changing during scrubbing, you should note that the specific source has dropped or duplicate frames.
FieldBased
Sets interlaced flagged content that may be progressive as progressive.
Inverse Telecine
Quick inverse telecine filter for converting telecined clips to progressive.
Note
You need vivtc
installed for the above snippet to work. You can install it with vsrepo.py install vivtc
.
Cropping
Crops the source video by n pixels from the selected side. For example, left=20
will remove 20 horizontal pixels starting from the left side. This should be used on sources that use letterboxing or other form of borders.
Warning
If you are cropping with odd numbers, you will need to convert your clip to 16-bit depth with 4:4:4 chroma subsampling.
Note
Make sure to check for variable aspect ratios throughout the file and only crop the smallest border.
Scaling
Downscales or upscales the video. This should be used to match sources that have differing resolutions.
- For upscaling (e.g. 720p -> 1080p), use
EwaLanczos
:
- For downscaling (e.g. 2160p/4K -> 1080p), use
Hermite
:
Warning
Downscaling is generally not recommended. We suggest upscaling your sources to match the highest resolution unless you have a specific reason (e.g. comparing how a higher resolution file would look on a lower resolution display).
Trimming
Removes the first n frames from the source. For example, [24:]
will skip the first 24 frames and start the source at frame 25. This should be used on sources that are out of sync.
To get the frame difference, find a unique frame (e.g. scene changes) in the correct and incorrect source. Note the frame numbers each one begin at, then set the difference of the two for the incorrect source.
Note
For more advanced trimming such as chaining, splicing, and looping, see Vapoursynth's docs.
Depth
Converts clips to 16-bit depth with 4:4:4 chroma subsampling. Required for filters such as cropping (with odd numbers) or tonemapping.
Tonemapping
Converts the colorspace of the source (i.e. HDR/DV -> SDR).
- For converting HDR (washed out colors) -> SDR, set
source_colorspace=ColorSpace.HDR10
- For converting DV (green/purple hue) -> SDR, set
source_colorspace=ColorSpace.DOVI
Note
If you want to tonemap, you will need to change the clip's bit depth to 16-bit (see above).
Note
Refer to the libplacebo and vs-placebo docs to gain a better understanding of what each parameter does.
Range
Sets the color range of the clip as limited (0
) or full (1
). This should be used on sources containing incorrect metadata or after tonemapping DV content (set it to limited).
Gamma
Adjusts the gamma level of the video. This should only be used to fix the QuickTime gamma bug or similar where one source will appear much brighter than the rest.
FrameProps
Set the correct frame properties for your sources. This is most commonly used on sources you're upscaling or 4K SDR content. This should be used on sources with incorrect/missing metadata or colors that are off, particularly reds and greens.
Double-Range Compression (DRC)
Fixes washed out colors on selected sources.
Running
To run your comparison script, launch a terminal window in your working directory and run the following:
Tips
- Label your sources clearly.
- Try to capture a large variety of scenes (e.g. low/high detail, bright/dark, low/high motion).
- Try to capture frames of the same type.
- Try to capture
P
orB
type frames when possible. Although it's not always guranteed that your source will have all the picture types (e.g. Crunchyroll WEB-DLs don't haveB
frames).
Basic Keybinds
Key | Action |
---|---|
Left arrow (<-) |
Move back n frames (default: n = 1) |
Right arrow (->) |
Move forward n frames (default: n = 1) |
Number keys | Switches to source n (e.g. 2 switches to clip2 ) |
Shift + S |
Take and save screenshot of the current frame |
Ctrl + Space |
Mark current frame number for [semi-automatic] comparisons |
Process
VSPreview offers three methods for creating comparisons:
Automatic comparisons are created completely without any additional user input. VSPreview will automatically select, capture, and upload frames for you. This is the fastest method for creating comparisons.
Capturing
-
In VSPreview, navigate to the bottom bar and toggle the Comp section
-
Fill out these fields:
Key Description Collection name The title of your comparison/show Random Number of frames to randomly capture. This should be set to a value higher or equal to 40 frames Picture types The picture type TMDB ID The TMDB ID for the show -
Hit the Start Upload button under Comp to begin creating your comparison
Semi-automatic comparisons are created with minor user input. VSPreview will automatically capture and upload frame manually marked by the user. This is the recommended method for creating comparisons.
Setup
-
Locate the frame(s) you want to compare
- Use
Left arrow
to go the previous frame andRight arrow
to go to the next frame. - Use
Shift + Left arrow
andShift + Right arrow
to navigateN
number of frames on either side.
- Use
-
Once you land on a frame you like, mark it with
Ctrl
+Space
.
Capturing
-
In VSPreview, navigate to the bottom bar and toggle the Comp section
-
Fill out these fields:
Key Description Collection name The title of your comparison/show TMDB ID The TMDB ID for the show -
Hit the Start Upload button under Comp to begin creating your comparison
Manual comparisons are created completely by the user. VSPreview displays and handles frame capture, while the main actions are performed by the user through the previewer.
Capturing
-
Locate the frame(s) you want to compare
- Use
Left arrow
to go the previous frame andRight arrow
to go to the next frame. - Use
Shift + Left arrow
andShift + Right arrow
to navigateN
number of frames on either side.
- Use
-
Once you land on a frame you like, take its screenshot with
Shift
+S
. -
Switch to the other sources and take screenshots of their current frame
- Press the number keys to change sources (e.g.
1
forclip1
,2
forclip2
)
- Press the number keys to change sources (e.g.
-
Repeat process for the next frames in your comparison
Note
If you want to use automatic Slowpoke Pics sorting, make sure your file naming scheme is set to {frame}_{index}_{Name}
.
By default, all frames are stored within your working directory unless manually changed to a different destination.
Slowpoke Pics
Fetching Account Tokens
If you plan on uploading to Slowpoke Pics (slow.pics) under your account, you will need to provide VSPreview with your account token.
- Visit Slowpoke Pics in your browser and log into your account
- Open your browser's Developer Tools. You will need to get two values:
- To get your
browserId
, go to Application -> Storage -> Local Storage ->https://slow.pics
. Copy the key listed there - To get your
sessionId
, go to Network. Refresh the page, then findslow.pics
. On the right section open cookies and copy theSLP-SESSION
value - In VSPreview, go to Settings -> Comp
- Paste the two values in the boxes provided
- Visit Slowpoke Pics in your browser and log into your account
- Open your browser's Developer Tools. You will need to get two values:
- To get your
browserId
, go to Storage -> Local Storage ->https://slow.pics
. Copy the key listed there - To get your
sessionId
, go to Storage -> Cookies ->https://slow.pics
. Copy the key listed underSLP-SESSION
- In VSPreview, go to Settings -> Comp
- Paste the two values in the boxes provided