Skip to content

pahorema/forge-vsr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Forge VSR

Forge VSR e' un'applicazione desktop Windows per processare video in batch con NVIDIA RTX Video Super Resolution, RTX HDR/TrueHDR opzionale e codifica NVENC.

Il progetto combina una UI Avalonia in C# con un worker nativo Zig. La pipeline usa FFmpeg per demux/probe/mux, Direct3D 11 per il percorso GPU, NVIDIA NGX per VSR/HDR e NVENC per l'encoding finale.

Funzioni principali

  • Scansione di file o cartelle video, anche ricorsiva.
  • Coda batch con stato, progresso, frame processati, FPS, media FPS ed ETA.
  • Upscale RTX VSR 2x, 3x o 4x con qualita 1-4.
  • Scala di output separata dalla scala RTX: per esempio RTX 4x e output 2x con downscale Lanczos3 su D3D11.
  • RTX HDR opzionale con contrasto, saturazione, middle gray e picco luminanza configurabili.
  • Rilevamento del picco HDR del monitor primario tramite DXGI, con fallback a 1000 nits.
  • Encoding video con h264_nvenc, hevc_nvenc o av1_nvenc.
  • Preset, tune, rate control, CQ/QP, bitrate, maxrate, buffer, multipass, AQ, lookahead ed extra option NVENC.
  • Selezione stream audio e sottotitoli per ogni file.
  • Propagazione selezione stream ai file con layout uguale.
  • Audio in copia oppure transcodifica in Opus, AAC, AC3 o FLAC.
  • Copia di metadati container, metadati stream e capitoli.
  • Output Matroska .mkv con naming pattern personalizzabile.

Requisiti

  • Windows x64.
  • GPU NVIDIA RTX compatibile con RTX Video/NGX.
  • Driver NVIDIA aggiornati con supporto RTX Video Super Resolution e, per HDR, RTX Video HDR/TrueHDR.
  • .NET SDK 10.
  • Zig 0.16.
  • Visual Studio Build Tools o Visual Studio con toolchain C++ MSVC x64.
  • Windows SDK.

Dipendenze third-party

FFmpeg e NVIDIA RTX Video SDK non vanno committati nel repository. Prima della build bisogna scaricarli localmente e copiarli dentro third_party con questa struttura.

FFmpeg

Scaricare una build Windows x64 condivisa/full di FFmpeg che includa bin, include e lib. Una build adatta e' la full shared build di gyan.dev.

Estrarre o copiare i file in:

third_party/
  ffmpeg/
    README.txt
    LICENSE
    bin/
      ffprobe.exe
      avcodec-*.dll
      avformat-*.dll
      avutil-*.dll
      swresample-*.dll
      swscale-*.dll
      ...
    include/
      libavcodec/
      libavformat/
      libavutil/
      libswresample/
      libswscale/
      ...
    lib/
      avcodec.lib
      avformat.lib
      avutil.lib
      swresample.lib
      swscale.lib
      ...

La build usa gli header e le librerie in include/lib; l'app copia ffprobe.exe e le DLL runtime da bin.

NVIDIA RTX Video SDK

Scaricare NVIDIA RTX Video SDK dal portale NVIDIA Developer e copiare SDK, headers, import library e DLL runtime in:

third_party/
  rtx_video_sdk/
    NVIDIA_RTX_Video_SDK_License.pdf
    include/
      nvsdk_ngx.h
      nvsdk_ngx_defs.h
      nvsdk_ngx_params.h
      nvsdk_ngx_helpers.h
      nvsdk_ngx_helpers_vsr.h
      nvsdk_ngx_helpers_truehdr.h
      ...
    lib/
      Windows/
        x64/
          nvsdk_ngx_s.lib
          ...
    bin/
      Windows/
        x64/
          rel/
            nvngx_vsr.dll
            nvngx_truehdr.dll

Il worker Zig linka nvsdk_ngx_s.lib; l'app copia nvngx_vsr.dll e nvngx_truehdr.dll nella cartella tools.

Struttura

ForgeVsr.slnx
src/
  ForgeVsr.App/      UI Avalonia/SukiUI
  ForgeVsr.Core/     scansione, ffprobe, naming, pipeline e interop nativo
  ForgeVsr.Native/   target MSBuild che compila il worker Zig
native/
  ForgeVsrWorkerZig/     DLL e CLI native per RTX Video + NVENC
third_party/
  README.md              istruzioni per dipendenze locali
  ffmpeg/                dipendenza locale ignorata da Git
  rtx_video_sdk/         dipendenza locale ignorata da Git

Build

Prima di compilare, preparare third_party/ffmpeg e third_party/rtx_video_sdk come descritto sopra.

Dalla root:

dotnet build .\ForgeVsr.slnx -c Debug

La build:

  1. ripristina i pacchetti NuGet;
  2. compila il worker Zig in artifacts/worker-zig-build;
  3. compila i progetti C#;
  4. copia worker, FFmpeg DLL, ffprobe.exe e DLL NGX nella cartella tools dell'app.

Build Release:

dotnet build .\ForgeVsr.slnx -c Release

Esecuzione dalla sorgente:

dotnet run --project .\src\ForgeVsr.App\ForgeVsr.App.csproj -c Debug

Publish

dotnet publish .\src\ForgeVsr.App\ForgeVsr.App.csproj -c Release -r win-x64

L'output contiene anche la cartella tools necessaria al runtime.

Worker nativo

Il worker viene usato dall'app via P/Invoke tramite forge-vsr-worker.dll, ma viene compilata anche una CLI:

.\artifacts\worker-zig-build\bin\forge-vsr-worker-cli.exe --help

Esempio:

.\artifacts\worker-zig-build\bin\forge-vsr-worker-cli.exe `
  --input .\input.mkv `
  --output .\output.mkv `
  --scale 2 `
  --output-scale 2 `
  --vsr-quality 2 `
  --codec av1_nvenc `
  --preset p7 `
  --tune uhq `
  --rc vbr `
  --cq 18

Check e test Zig:

cd .\native\ForgeVsrWorkerZig
zig build check
zig build test

Naming output

Pattern predefinito:

{orig_title}_rtx{scale}_out{output_scale}_{rtx_hdr}.{output_extension}

Token disponibili:

Token Significato
{orig_title} titolo container, se presente, altrimenti nome file
{orig_name} nome file originale senza estensione
{orig_ext} estensione originale
{output_extension} estensione di output, attualmente mkv
{scale} / {rtx_scale} scala RTX
{output_scale} scala finale
{codec} encoder video scelto
{rtx_hdr} rtxhdr oppure sdr
{width} / {height} risoluzione finale stimata
{date} data yyyyMMdd

Con input da cartella, l'app conserva la struttura relativa dentro la cartella output.

Pipeline tecnica

Il worker nativo esegue:

FFmpeg demux
-> D3D11VA decode
-> D3D11 video processor BGRA
-> NVIDIA NGX RTX VSR / TrueHDR
-> eventuale downscale Lanczos3 D3D11
-> NVENC D3D11
-> Matroska mux con audio/subtitle selezionati

Per l'HDR vengono impostati colorimetria BT.2020/PQ, metadata mastering display e content light. L'HDR e' bloccato lato UI/Core per H.264: usare HEVC NVENC o AV1 NVENC.

Note toolchain

native/ForgeVsrWorkerZig/build.zig contiene default locali per Windows SDK e MSVC:

  • Windows SDK 10.0.26100.0
  • MSVC 14.50.35717

Se la macchina usa versioni o percorsi diversi, aggiornare quei default oppure invocare zig build con le opzioni:

zig build `
  -Dwindows-sdk-include="C:\Program Files (x86)\Windows Kits\10\Include\<versione>" `
  -Dwindows-sdk-lib="C:\Program Files (x86)\Windows Kits\10\Lib\<versione>" `
  -Dmsvc-include="C:\Program Files\Microsoft Visual Studio\<versione>\<edizione>\VC\Tools\MSVC\<versione>\include" `
  -Dmsvc-lib="C:\Program Files\Microsoft Visual Studio\<versione>\<edizione>\VC\Tools\MSVC\<versione>\lib\x64"

Troubleshooting

  • No NVIDIA adapter found: il worker non vede una GPU NVIDIA RTX compatibile.
  • Unable to load nvngx.dll: controllare driver NVIDIA e DLL NGX copiate nella cartella tools.
  • RTX Video DX11 initialization failed: driver, SDK/runtime NGX o supporto RTX Video non disponibili.
  • D3D11VA decoder not found: il codec sorgente non ha decoder D3D11VA disponibile nella build FFmpeg scaricata.
  • Errori MSVC/Windows SDK in Zig: verificare i percorsi in build.zig.

Licenza

Il codice di questa repository e' distribuito con licenza MIT. Vedere LICENSE.

Attenzione ai vendor locali:

  • FFmpeg, se si usa la full build GPL di gyan.dev, e' soggetto a GPL v3.
  • NVIDIA RTX Video SDK e' soggetto alla licenza NVIDIA inclusa nel pacchetto scaricato.

Le cartelle third_party/ffmpeg e third_party/rtx_video_sdk sono ignorate da Git per evitare di pubblicare binari pesanti e materiale soggetto a licenze vendor.

About

App Windows per processing video con NVIDIA RTX VSR e RTX HDR.AI Slop generato da GPT 5.5

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors