What is HAFVSP? A designator I created to identify this process and I include it my folder and file names.
HAF = it’s a secret
VSP = Video Super-sampling super-resolution Process.
First to be clear, if I’m the inventor, this process is released for free and in the public domain. But I doubt I invented it. It may even be patented, but good luck searching for prior art. I was a USPTO Researcher for 20+ years and the current search system returns too many non-relevant results IMO. It’s possible the process has been in quietly in use by video pros using the same or similar tools. As far as I can tell, no one has described HAFVSP in any public forum using the tools and process detailed below.
It creates remastered/upscaled video with more natural fine detail and sharpness than any other AI model or process others have published (IMO). The Starlight Mini 4x variation can work with very poor low resolution video (as you already know).
The basic idea is to extract the maximum possible fine detail via 2x upscale (Iris MQ) or 4x upscale (Starlight Mini) resolution. Diffusion AI can create realistic fake fine detail, so Starlight Mini 4x is often the best with DVD to Blu-ray. Note that GAN AI is still useful- it’s fast and often strong enough. Iris MQ 2x with conservative manual settings (10 30 0 0 0 0 0 0 0) can in some cases outperform Starlight Mini 4x because Iris has face recovery training.
I specify 2x or 4x in my details as it is important that you use an upscaling model that is a strong low artifact model. Iris MQ 1x does nothing- no additional detail is found. My hair upscale tests at 1x, 2x, and 4x clearly showed no additional detail with 1x, and a huge amount of newly found detail at 2x and 4x. Also note that Iris 4x has no more detail than 2x, but it’s 4 times slower (don’t use 4x). Iris MQ is similar to the other Iris versions, but the strongest in every test I’ve done. Artifacts are generally not visible with Improve Detail at 30. Some videos can be artifact free with Improve Detail at 40, 50, or 60. Do not use Sharpen. It controls a WarpSharp like filter (the worst sharpened ever created IMO). The real sharpener controls are Improve Detail combined with Anti-Alias/Deblur. Fix Compression controls the deblocking and needs to be non-zero to work. Higher settings (above 10) can reduce the detail found.
For 1080p and 2160p videos, I have great results with Iris MQ 2x plus it’s reasonably quick. For 1080p video, in theory Starlight Mini 4x with the Gemini 8K workaround may yield more fine detail but be too slow to be useful.
For 480i and under, use Starlight Mini 4x. Yes it’s very slow and that may limit its practicality.
Then take that upscaled video with more fine detail and output it with the full Topaz 12 bit color information. Output with Prores 4444XQ, FFv1-YUV444-12bit, or data pipes.
Use DPID 12bit (Vapoursynth) to downscale to the desired output resolution if less than the upscale resolution. Use lamba(s) of 0.4 to 1.5. See what Gemini thinks. Tell it as much about the video as you know. Keep in mind Google can corrolate this with indexed content (from sharemania, etc.) and determine who you are if you use the exact same wording in your chat as you have in your posting or info.txt file. Gemini has info on the other DPID parameters (see the Vapoursynth script below).
DPID is Detail Preserving Image Downscaler. It’s the only downscaler function that retains detail as it downscales (Gemini has a possibly better process created with discrete functions). If you have a 4K video and want 2K but sharper, just DPID by itself is often enough. No need to upscale with Iris MQ 2x or Starlight Mini 4x to 8K- that process is for really bad 4K inputs (the war child video below confirms this works).
With these DPID videos CAS sometimes gives extra sharpening you may like and can be used to fine tune the output sharpness. Sharpness=1.0 is usually too strong (may look artificial). Try 0.1 to 0.95.
I don’t mention any of the other upscalers as they are generally poor compared to Iris MQ 2x or Starlight Mini 4x. You are welcome to try others. Starlight Precise 2.5 is artificial out of the box. Too strong and not natural IMO. FlashVSR + DPID + CAS may be the ultimate combo- FlashVSR is fast but can be tricky to configure and get the quality you want. Gemini has various thoughts about getting this working optimally. An AI (or expert machine) and GUI could make this really simple for folks to use (possible product idea!).
I have a Gemini created IVTC deinterlacer that retains more fine detail than any other deinterlacer (even high end professional tools). It uses TFM, TDecimate, and QTGMC with some unusual parameters that make no sense to me. If you have Gemini explain its process, it finds a synergistic combination of parameters. And it works better than anything else and determines how close to Blu-ray quality you are going to get (IMO). It may end up on doom9 at some point, and they’ll be scratching their heads. The doom9 folks are really smart, but not as smart as an AI with all the tools’ source codes.
Here’s the process for high quality 480i DVD to Blu-ray. Be sure to use a Blu-ray like bitrate in your final encode or else you’ll lose that hard won fine detail:
Here’s the Avisynth+ version of the film source deinterlacer (Gemini can create a Vapoursynth version):
# AVISYNTH+ MASTER SCRIPT: 35MM FILM RECONSTRUCTION (480i -> 480p IVTC)
# Hardware: DGDecNV (NVIDIA GPU Decoding)
# Target: Topaz Starlight Mini (4x) -> DPID 1080p Downscale
# --- 1. SOURCE (DGDecNV) ---
# DGSource is typically best for DVD/MPEG-2 stability.
# Ensure s01e01-29.97.dgi is in the same folder as this script.
Source = DGSource("s01e01-29.97.dgi")
# --- 2. INVERSE TELECINE (IVTC) ---
# TFM: Matches fields to reconstruct the original 35mm progressive frames.
# PP=0: Disables TFM's internal deinterlacer to let QTGMC handle residual combing.
# TDecimate: Drops the 1 duplicate frame in every 5 to return to 23.976fps.
V_IVTC = Source.TFM(order=-1, mode=1, slow=2, PP=0).TDecimate(mode=1)
# --- 3. QTGMC (SOURCE MATCH / DETAIL RECOVERY) ---
# We use SourceMatch=3 to verify the output against the original fields.
# Lossless=2 ensures the 35mm grain structure is preserved for Topaz.
V_QTGMC = V_IVTC.QTGMC(
Preset="Slower",
SourceMatch=3,
Lossless=2,
FPSDivisor=2,
Sharpness=0.4,
TR0=1,
TR1=2,
TR2=0,
EZDenoise=0,
NoiseProcess=0,
ShutterBlur=0)
# --- 4. LSFMOD (PRE-AI EDGE DEFINITION) ---
# Smode=5 (SeeSaw logic) primes the edges for the Starlight Mini 4x model.
# Overshoot=1 is critical for preventing "white ringing" halos.
V_PREP = V_QTGMC.LSFmod(
Smode=5,
strength=120,
overshoot=1,
soft=-1,
secure=true,
Szrp=16,
Spwr=4,
SdmpLo=4)
# 5. CONVERT FOR LOSSLESS 12-BIT EXPORT
# Using the modern 'matrix' parameter ensures 12-bit compatibility
# and keeps the 4:4:4 (YUV444P12) structure intact.
Return V_PREP.ConvertBits(12).ConvertToYUV444()
And here’s the optimal Vapoursynth version with DPID 12bit I have yet to test:
import vapoursynth as vs
import os
core = vs.core
# 1. OPTIMIZE FOR 4090 / 8K
# 12-bit 8K frames are heavy (\~150MB each). 12GB cache is the sweet spot.
core.max_cache_size = 12288
# 2. SOURCE (ProRes 4444 XQ in .mov)
# LWLibavSource is best for .mov containers.
# It will natively see the 12-bit ProRes stream.
clip = core.lsmas.LWLibavSource(source="01k-FFv1-YUV444-2160p_iris2=prores4444XQ.mov")
# 3. CONVERT TO 32-BIT FLOAT (Precision Pipe)
# We move to 32-bit float immediately.
# This is where we catch chromatic aberration detail.
clip = core.resize.Bicubic(clip, format=vs.RGBS, filter_param_a=0, filter_param_b=0.5)
# 4. DPID DOWNSCALE (The Analysis)
# Since you're looking for LoCA, we want to keep the "lambda\_" high (1.5).
# This makes DPID more aggressive at keeping sharp centroids vs. blurred halos.
# Refinement 4 is slow, but provides the most accurate iterative downsampling.
clip = core.dpid.Dpid(clip, width=1920, height=1080, lambda\_=1.5, refinement=4)
# 5. FINAL OUTPUT CONVERSION
# Back to 8-bit YUV for final delivery.
# Use 'Error Diffusion' dither to prevent pink-light banding.
clip = core.resize.Bicubic(clip, format=vs.YUV420P8, matrix_s="709", dither_type="error_diffusion")
# 6. OUTPUT
clip.set_output()
After Topaz Video AI:
My non-optimal AVISynth script for educational purposes (limited to 8 bit intermediate by DPID):
SetFilterMTMode(“DEFAULT_MT_MODE”, MT_MULTI_INSTANCE)
SetFilterMTMode(“DGSource”, MT_SERIALIZED)
DGSource(“01-G01-23.976-FFv1-12bit_starlight_mini_4x.dgi”, deinterlace=0)
CropVD(20,20,0,0) #this is a Virtualdub like version of Crop (it’s on doom9.org forums)
DPID(1440,1080,lambdaU=0.4,lambdaV=0.4,lambdaY=0.4)
Tweak(bright=0,cont=1.00,sat=0.75,hue=0)
CAS(sharpness=0.9)
ConvertToRGB(matrix=“Rec709”)
prefetch( 8 )
Note: Gemini recommends trying lambda(s) at 0.4 and 0.5 in the AVISynth+ script and 1.5 in the Vapoursynth script. With AVISynth I tried 0.4 and 0.5 and created a visibly more detailed video with 0.4. I got stuck installing R74 Vapoursynth (that version has major changes that broke it). R78 and later may be working now.
You or Gemini of course can change the script to output 10bit video.
Iris MQ 2x is fast and 8K output, but the downside (currently) for using Starlight Mini 4x is that it’s too slow for most projects and 4K output max. We’ll have 1.2nm GPUs soon that’ll be much faster and there’s the Starlight 8K output workaround that Gemini details.
Due to the coming possible enshittification of Topaz by Adobe, we may be stuck with the version 7 Video AI (perpetual license) Starlight Mini 4x and RTX 4090, RTX 5090 GPUs. New faster GPUs may require code changes and since we are getting no more updates to Video AI… we’re stuck unless the Video product line continues to be developed and the Founder Pro license continues to be supported. I have high hopes someone will get HAFVSP working with FlashVSR.
Other thoughts:
The Topaz product naming convention is super confusing. It must be a most confusing experience for new users.
I’ve been using HAFVSP since late 2024. Why am I making this post when it’s not really tested much? In July 2024 I found out from a EU doctor that I have a life threatening illness (he’s not covered by my insurance). I’m in poverty due to multiple strokes and COVID19. I now spend most of my free time fighting the broken USA medical/insurance system that may allow me to pass on from a curable illness. The condition is rare and not taught in the USA but is taught in most other countries (if you can help me get better healthcare, please PM me). Gemini and other AIs found the cause, diagnosis, treatments/cure but the system is far too slow at getting anything done. The ERs and hospitals can’t help cure me as they don’t have the equipment, tests, or specialists to confirm my diagnosis (which comes before treatments/cure). My case is complex by their reasoning, but it’s actually quite simple to an Engineer (me) with years of experience in fluid dynamics, aerodynamics, and failure modes. I now work for a large hospital system to be near the ER.
HAFVSP may be used for years to come. Topaz/Adobe may incorporate it into the Video product once they become aware of its capabilities.
Educational demos on Soulseek, search terms. See notes below:
war hafvsp 1080p50
forum london hafvsp 1080p50
test clip starlight mini 1080p
The original AURORA War Child 2024 gig is a mess on Youtube due to a lack of bitrate. I traded 4K resolution + Iris MQ 2x for far more detail. A process using Starlight Mini 4x may get it to maximally sharp. Note that some countries don’t allow this to be downloaded even for personal or educational use. The encore was cut by the webcaster but the video is longer than USA’s Fair Use allows.
The CHVRCHES Forum Gig was before I understood the Iris manual parameters. Non-optimal defaults were used but it still looks great. This was released for free by the band for promotional purposes.
The test clip is my Starlight Mini 4x test of 480i to Blu-ray. Note 8 bit DPID was used, so a redo with 12 bits will have even more detail. It’s only 3 minutes of a typical 90s TV show but Fair Use is about 20 seconds (don’t download unless your country allows it).
ContrastPop in Davinci Resolve Studio Pro is like CAS on steroids. Try it out. FilmGrain is decent but complex (don’t add too much film grain). Gemini has other thoughts, tools, and scripts with realistic film grain. Most live video and grain free video or film is often best with no grain. Use 23.976fps for films to keep the cinematic look, and Chronos 2x for 50 to 60fps for live video. Use 2x framerate increases. Non-integer framerate increases is still broken AFAIK.
If you have VFR video (Variable FrameRate), you need to use Chronos to make precise CFR video (Constant FrameRate):
You can confirm VFR was used with ffmpeg -vf vfrdet (details on Gemini). Ask Gemini about using ffprobe instead if you are curious. If pushed, Gemini Flash Extended AI has an algorithm to create precise temporally correct CFR interpolation using Topaz Video AI Chronos via the CLI. You must use real Chronos CFR video not fake CFR (that ffmpeg can do) for use with most remastering/upscaling processes. Topaz will need real CFR to produce judder free output (and I suspect maximum fine detail).
About pink LED lighting some artists/bands use during live performances:
Pink looks blurry as videocameras can’t focus due to longitudinal chromatic aberration. It’s a physics problem where blue is at one end of the spectrum of visible light, and red is at the other end. The light focuses in different planes and the image sensor(s) is in only one plane. It can’t be in both planes at the same time. HAFVSP may be able to partially or fully focus the blur.
Before you post that the Starlight 4x process is far too slow for many video projects, yes you are correct today. Intel and TSMC are separately working on GPU process nodes for 1.2nm that will be far faster per watt. Intel’s plan is better (if it works) as it can scale to even smaller nodes. In 2030 and beyond, HAFVSP should be practical with Starlight Mini. But I can reasonably expect someone will get it working with FlashVSR (or a new faster/better model) at some time in the future.