Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
3d702ce
feat: only show queue notifications when not on main screen again
f0e Aug 31, 2025
28cd6f3
wip: video element
f0e May 28, 2025
c9b018f
feat: video event handling
f0e Aug 26, 2025
a488596
fix: log type
f0e Aug 26, 2025
1901bb0
chore: add note from libmpv
f0e Aug 26, 2025
58aee80
style: add_files->add_files_for_render
newgan Aug 31, 2025
48d45a8
temporary(shit) setup for mpv
newgan Aug 31, 2025
61e62dd
cleanup
newgan Sep 1, 2025
32cbd6c
feat: good mpv options
f0e Sep 1, 2025
dce738e
feat: proper aspect ratio
f0e Sep 1, 2025
d1c8cf5
fix: continually creating new videoplayers & use shared ptr instead o…
f0e Sep 1, 2025
b094f46
refactor: probably no need for fallback
f0e Sep 1, 2025
83e64b0
wip frame prog
newgan Sep 1, 2025
5583ab0
feat: video loading indicator
f0e Sep 1, 2025
d50949c
fix: wip frame progress
f0e Sep 1, 2025
096f7b0
chore: remove leftover observe stuff
f0e Sep 1, 2025
d8570d3
chore: add todo notes
f0e Sep 1, 2025
a398a27
feat: wip video track
newgan Sep 1, 2025
3722c96
refactor: mpv_get_property wrapper
f0e Sep 1, 2025
c0b9e07
feat: waveform, start/end grabs, more stuff
f0e Sep 1, 2025
040672c
fix: stay pointer when dragging grab & little refactor
f0e Sep 1, 2025
643412b
feat: tweaking stuff
f0e Sep 1, 2025
323f5de
feat: trim and pending queue
f0e Sep 1, 2025
08f2719
feat: wip show multiple videos
f0e Sep 1, 2025
26aefab
feat: merge video & video track, animations, show side by side, switc…
f0e Sep 1, 2025
d974dd2
feat: render audio through vapoursynth, fixes trim sync & should be a…
f0e Sep 1, 2025
7ed1c99
start and end point
newgan Sep 2, 2025
d9e33d8
feat: only play focused player
newgan Sep 2, 2025
a2c14a9
refactor: make code less gorilla
f0e Sep 2, 2025
9b7c73b
fix: pause when switching video
f0e Sep 2, 2025
3f53a0a
Revert "feat: render audio through vapoursynth, fixes trim sync & sho…
f0e Sep 2, 2025
99eb78a
fix: error msg
f0e Sep 2, 2025
64af591
fix: bug
f0e Sep 2, 2025
091fdc1
fix: trimming & audio sync
f0e Sep 2, 2025
8aac847
Revert "Revert "feat: render audio through vapoursynth, fixes trim sy…
f0e Sep 2, 2025
b11f39c
feat: PROPERLY trim video/audio (i hope)
f0e Sep 2, 2025
f944179
feat: fix switch video animation snap, start all renders on button pr…
f0e Sep 2, 2025
2fefb1a
chore: remove mpv submodule - it wasnt being used
f0e Sep 2, 2025
18299d4
feat: downsample audio waveform for rendering
newgan Sep 3, 2025
c88ad96
chore: note to self
newgan Sep 3, 2025
e702bb1
feat: zoom & pan timeline
f0e Sep 3, 2025
46dcfa1
fix: freeze on exit
f0e Sep 3, 2025
544f34d
feat: track pan with horizontal scroll
f0e Sep 3, 2025
97ac991
fix: config preview
f0e Sep 4, 2025
a98dfcc
wip: test stuff
f0e Sep 8, 2025
50e99c4
feat: named pipes on windows
f0e Sep 8, 2025
36999b7
fix: dont fail if video doesnt have audio track
f0e Sep 8, 2025
86422ef
fix: windows build
f0e Sep 8, 2025
53f5f35
feat: finish format testing
f0e Sep 8, 2025
95c7499
chore: note
f0e Sep 9, 2025
6d2b33b
feat: wip squiggly waveform
f0e Sep 9, 2025
4a276f5
chore: allow more zoom
f0e Sep 9, 2025
12413ea
fix: loader drawing
f0e Sep 9, 2025
22846f8
fix: crash
f0e Sep 9, 2025
cd70764
fix: memory issue on multiple videos
f0e Sep 9, 2025
dca82e5
fix: reset zoom on active video switch
f0e Sep 9, 2025
8077f00
chore: remove comment, its fixed already
f0e Sep 9, 2025
d386d75
feat: dont limit background videos
f0e Sep 9, 2025
1cc1704
feat: dont draw videos that are off screen
f0e Sep 9, 2025
b030538
fix: draw flat line when no amplitude in waveform
f0e Sep 9, 2025
9c31966
feat: put all nav buttons on same line
f0e Sep 9, 2025
b5453b6
refactor: avoid separate map
f0e Sep 9, 2025
b8ec425
refactor: panning (avoid separate map)
f0e Sep 9, 2025
95d7ec8
fix: trim start and end clamping to eachother
f0e Sep 9, 2025
910125f
fix: render track bars over waveform
f0e Sep 9, 2025
af7dd2e
feat: show video preview when grabbing trim handle
5f5 Sep 9, 2025
f524dc6
change sentinel value to optional, address pr comments
5f5 Sep 10, 2025
fe2f741
fix seek fix, cache mpv props
newgan Jan 30, 2026
c347520
minor: dont update frames unless necessary
newgan Jan 30, 2026
06ba031
fix: prevent loud spikes from ruining waveform
f0e Jan 30, 2026
3850fbb
feat: pointer cursor on clicking other videos in queue
f0e Jan 30, 2026
f36b373
tmp: disable spike normalisation
f0e Jan 30, 2026
15291d5
feat: dont pause on seek
f0e Jan 30, 2026
6d4bfa0
feat: seek hotkeys
f0e Jan 30, 2026
b6ba2c0
feat: click the video to play/pause
f0e Jan 30, 2026
945cfe3
feat: findmpv cmake module from jellyfin to hopefully make windows bu…
f0e Jan 30, 2026
ccd02a0
feat: start/end cut hotkeys
f0e Jan 30, 2026
a5add34
chore: comments
f0e Jan 30, 2026
088769a
feat: reduce hotkey seek to 3s
f0e Jan 30, 2026
4f36b8b
feat: a-b loop over trim region
f0e Jan 31, 2026
7546f9b
feat: cycle pause rather than fetching pause state and inverting it
f0e Jan 31, 2026
f0383cb
refactor: consolidate & move stuff into header to match other fns
f0e Jan 31, 2026
de153e4
feat: fix rendering videos with no audio stream
f0e Jan 31, 2026
9867235
chore: update comment
f0e Jan 31, 2026
5b5b423
chore: format
f0e Jan 31, 2026
9b4580f
tmp: feat: give videos unique ids, use as key instead of path
f0e Jan 31, 2026
5ce37f8
fix: cached size and seek resets
newgan Jan 31, 2026
e27d7df
Merge remote-tracking branch 'refs/remotes/upstream/feat/video' into …
newgan Jan 31, 2026
044b1d4
chore: style
f0e Jan 31, 2026
f546739
fix: always handle mpv events
f0e Jan 31, 2026
cf61426
fix: merge issue
f0e Jan 31, 2026
bd52ffd
fix: dont render inactive mpvs
f0e Jan 31, 2026
adacdfc
fix: ensure at least one frame is outputted
f0e Jan 31, 2026
c7d1e71
fix: safely try to create output directory
f0e Jan 31, 2026
69644db
fix: importing super short videos
f0e Jan 31, 2026
4dcd141
feat: seek 1 frame ahead instead of playing (default behaviour)
f0e Jan 31, 2026
221c1bb
feat: make end point of cuts inclusive by adding an extra frame onto end
f0e Jan 31, 2026
b7626a9
feat: log when mpv props change
f0e Jan 31, 2026
4645856
fix: dont reset percent-pos on restart
f0e Jan 31, 2026
862ac2b
chore: yeah i dont think this is needed
f0e Jan 31, 2026
14f33cd
Revert "feat: log when mpv props change"
f0e Jan 31, 2026
6e5b7cb
feat: proper windows build
f0e Jan 31, 2026
0992211
feat: mpv-lossless-cut keybinds (g/h=start/end, r=render)
f0e Jan 31, 2026
c6597d6
chore: format
f0e Jan 31, 2026
d1b8aed
fix: use goal instead of current in hotkey cutting
f0e Jan 31, 2026
93a5b12
feat: better track zooming with mouse scrollwheels
f0e Jan 31, 2026
8eebd01
feat: escape to cancel queue & move start hotkey to renderer.cpp
f0e Jan 31, 2026
1596436
feat: window size option
f0e Jan 31, 2026
6de7f7b
feat: update imgui
f0e Jan 31, 2026
d004af7
feat: add test screen
f0e Jan 31, 2026
4ec5c52
feat: preview volume config option
f0e Jan 31, 2026
1a78d7d
feat: switch to nv garamond
f0e Jan 31, 2026
2eb5eef
feat: lower bottom margin of video title in queue screen
f0e Jan 31, 2026
ba424ad
chore: update logs
f0e Jan 31, 2026
67a03f9
refactor: simplify useless code
f0e Jan 31, 2026
012eb5c
fix: windows ci build
f0e Feb 1, 2026
8410a61
fix: linux/macos ci build
f0e Feb 1, 2026
1cf8fe6
fix: install libmpv dll on windows
f0e Feb 1, 2026
e235803
feat: better video size handling - fetch from ffprobe instead of mpv
f0e Feb 1, 2026
aa580dc
feat: ffmpeg thumbnails, show waveform & stuff when no player
f0e Feb 2, 2026
78d55bd
feat: use fps & duration from player once it exists
f0e Feb 2, 2026
bce8dc0
feat: use bilinear resizing
f0e Feb 3, 2026
270aef0
feat: upscale option
f0e Feb 3, 2026
b3919c5
feat: mvtools interpolation & deduplication
f0e Feb 3, 2026
44b18ca
feat: disable gpu decoding by default
f0e Feb 3, 2026
ca40acb
feat: options for point resizing & chroma location
f0e Feb 3, 2026
8c1d760
feat: add note on svp chroma resizing limitation
f0e Feb 3, 2026
c0d3e7e
feat: add debug checkbox tooltip
f0e Feb 3, 2026
9f73bbc
fix: only check if ffmpeg ended (thats all we care about) & force sto…
f0e Feb 4, 2026
d460fe6
feat: temporary point upscaling to avoid chroma loss, remove point up…
f0e Feb 4, 2026
ce5fbfe
feat: dont downscale though
f0e Feb 4, 2026
e4d039f
feat: controllable resize upscale fix options
f0e Feb 4, 2026
3914bdf
chore: reorganise settings
f0e Feb 4, 2026
4ab1d2d
feat: use bicubic instead of bilinear, it is a little better
f0e Feb 4, 2026
2b21d58
feat: better chroma fix (thanks smoothie)
f0e Feb 5, 2026
5e39d88
feat: move upscale to end
f0e Feb 5, 2026
6d1969a
chore: more explicit comment
f0e Feb 5, 2026
944552e
feat: improve presets.cfg loading
f0e Feb 9, 2026
5e1a7fb
feat: filter out presets with unavailable codecs
f0e Feb 9, 2026
352a26c
feat: friendly error when using a preset with unavailable codec
f0e Feb 9, 2026
d4f2d7c
refactor: static var in fn instead of anon namespace
f0e Feb 9, 2026
40cc592
feat: better error handling
f0e Feb 9, 2026
8e06bbc
feat: wrap rife for better error logging
f0e Feb 9, 2026
9a0d6cb
feat: extend notification width
f0e Feb 9, 2026
6c342a3
feat: allow for newlines in notifications
f0e Feb 9, 2026
a866331
feat: catch resize errors
f0e Feb 9, 2026
b5885f0
feat: build & bundle fmtconv on mac
f0e Feb 9, 2026
9313275
feat: explicitly check required plugins are loaded
f0e Feb 9, 2026
b83af50
feat: wrap svp for better error logging
f0e Feb 9, 2026
1646ad2
chore: update log
f0e Feb 9, 2026
b2869c2
fix: dont double-raise and improve resize errors
f0e Feb 9, 2026
3911491
chore: its probably more helpful to spell it the american way
f0e Feb 10, 2026
d14407e
chore: clarity in error
f0e Feb 10, 2026
371e8b2
fix: vspipe stderr parsing
f0e Feb 12, 2026
0f98dd0
fix: remove unused plugin from expected list
f0e Feb 12, 2026
27ccc63
fix: dont write upscale=false in concise output
f0e Feb 13, 2026
ea29212
feat: better trimming & copy all audio streams
f0e Feb 13, 2026
7853d06
feat: parse json ffprobe output rather than line parsing
f0e Feb 13, 2026
979920f
fix: rife (rgbs resize) on clips with color props set improperly
f0e Feb 13, 2026
e06edb8
chore: better logs
f0e Feb 13, 2026
1983439
fix: didnt mean to comment this out
f0e Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 20 additions & 2 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ name: Build

on: [push]

env:
MPV_VERSION: "20260118-git-468d34c"

jobs:
build:
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -40,7 +43,8 @@ jobs:
gcc-13 g++-13 \
libfontconfig1-dev \
autoconf automake libtool pkg-config libltdl-dev \
libnotify-dev
libnotify-dev \
libmpv-dev

- name: Install GCC
if: runner.os == 'Linux'
Expand All @@ -63,7 +67,7 @@ jobs:
- name: Collect dependencies (macOS)
if: runner.os == 'macOS'
run: |
brew install ffmpeg libass zimg imagemagick autoconf automake libtool gcc ffmpeg llvm@20 meson xxhash vapoursynth fftw dylibbundler
brew install ffmpeg libass zimg imagemagick autoconf automake libtool gcc ffmpeg llvm@20 meson xxhash vapoursynth fftw dylibbundler mpv
cd ci
bash build-dependencies-macos.sh

Expand All @@ -73,6 +77,19 @@ jobs:
cd ci
pwsh build-dependencies-windows.ps1

- name: Download libmpv (Windows)
if: runner.os == 'Windows'
run: |
curl -L https://sourceforge.net/projects/mpv-player-windows/files/libmpv/mpv-dev-x86_64-v3-${{ env.MPV_VERSION }}.7z/download > mpv.7z
7z x mpv.7z
mkdir mpv
mv include mpv
gendef libmpv-2.dll
mv libmpv-2.dll mpv/libmpv-2.dll
mv libmpv-2.def mpv.def
mv mpv.def libmpv.dll.a mpv/
shell: bash

- name: Collect dependencies (Linux)
if: runner.os == 'Linux'
run: |
Expand Down Expand Up @@ -151,6 +168,7 @@ jobs:
curl -L https://aka.ms/vs/17/release/vc_redist.x64.exe -o installer/redist/vc_redist.x64.exe
cp "$build_dir/blur-cli-$config.exe" installer/resources/blur-cli.exe
cp "$build_dir/blur-$config.exe" installer/resources/blur-gui.exe
cp "mpv/libmpv-2.dll" installer/resources/
iscc installer/setup.iss

# Copy everything to bundle
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# dev
/lib
old
/mpv

# tests
tests/assets/*
Expand Down
23 changes: 23 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE})
set(CMAKE_BINARY_DIR ${PROJECT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE})

list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")

# packages
find_package(nlohmann_json CONFIG REQUIRED)
find_package(cpr CONFIG REQUIRED)
Expand Down Expand Up @@ -145,6 +147,27 @@ target_compile_definitions(blur PRIVATE IMGUI_IMPL_OPENGL_LOADER_CUSTOM)
# stb
target_include_directories(blur PRIVATE ${PROJECT_SOURCE_DIR}/dependencies/stb)

# mpv
find_package(MPV REQUIRED)

target_include_directories(blur PRIVATE ${MPV_INCLUDE_DIRS})

if(WIN32)
target_link_libraries(blur PRIVATE ${MPV_LIBRARY})

if(MPV_DLL)
add_custom_command(TARGET blur POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${MPV_DLL}"
"$<TARGET_FILE_DIR:blur>/"
COMMENT "Copying mpv DLL to output directory"
)
endif()
else()
target_link_libraries(blur PRIVATE ${MPV_LIBRARY})
target_link_directories(blur PRIVATE ${MPV_LIBRARY_DIRS})
endif()

target_link_libraries(
blur PRIVATE blur-common SDL3::SDL3 SDL3_image::SDL3_image Freetype::Freetype
glad::glad)
Expand Down
4 changes: 3 additions & 1 deletion CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
},
"cacheVariables": {
"CMAKE_C_COMPILER": "cl",
"CMAKE_CXX_COMPILER": "cl"
"CMAKE_CXX_COMPILER": "cl",
"MPV_INCLUDE_DIR": "${sourceDir}/mpv/include",
"MPV_LIBRARY": "${sourceDir}/mpv/libmpv-2.dll"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
Expand Down
9 changes: 9 additions & 0 deletions ci/build-dependencies-macos.sh
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,15 @@ meson build
ninja -C build
" "build" "vapoursynth-plugins"

## fmtconv
build "https://gitlab.com/EleonoreMizo/fmtconv.git" "--single-branch" "259b702e4e3c1e2fc6d7b2c8e83d95b612519e89" "fmtconv" "
cd build/unix
./autogen.sh
./configure
make
cd ../..
" "build/unix/.libs" "vapoursynth-plugins"

PATH="/opt/homebrew/opt/llvm@20/bin:$PATH"
ZSTD_PREFIX=$(brew --prefix zstd)

Expand Down
48 changes: 24 additions & 24 deletions ci/build-dependencies-windows.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ function Extract-Files {
if (Test-Path $filePath) {
Copy-Item -Path $filePath -Destination $DestinationPath
Write-Host "Copied $pattern to $DestinationPath"
} else {
}
else {
Write-Warning "Could not find $pattern in the extracted files."
}
}
Expand Down Expand Up @@ -96,8 +97,8 @@ function Download-ModelFiles {
}

# Download and install VapourSynth
$vapoursynthInstallerUrl = "https://github.com/vapoursynth/vapoursynth/releases/download/R70/Install-Portable-VapourSynth-R70.ps1"
$vapoursynthInstallerPath = Join-Path $vapoursynthDir "Install-Portable-VapourSynth-R70.ps1"
$vapoursynthInstallerUrl = "https://github.com/vapoursynth/vapoursynth/releases/download/R72/Install-Portable-VapourSynth-R72.ps1"
$vapoursynthInstallerPath = Join-Path $vapoursynthDir "Install-Portable-VapourSynth-R72.ps1"
Download-File -Url $vapoursynthInstallerUrl -OutFile $vapoursynthInstallerPath

# Run VapourSynth installer
Expand All @@ -116,38 +117,38 @@ Set-Location $PWD
# Plugin installations
$plugins = @(
@{
Name = "Akarin";
Url = "https://github.com/AkarinVS/vapoursynth-plugin/releases/download/v0.96/akarin-release-lexpr-amd64-v0.96g3.7z";
Name = "Akarin";
Url = "https://github.com/AkarinVS/vapoursynth-plugin/releases/download/v0.96/akarin-release-lexpr-amd64-v0.96g3.7z";
FilePatterns = @("akarin.dll");
},
@{
Name = "BestSource";
Url = "https://github.com/vapoursynth/bestsource/releases/download/R11/BestSource-R11.7z";
Name = "BestSource";
Url = "https://github.com/vapoursynth/bestsource/releases/download/R11/BestSource-R11.7z";
FilePatterns = @("BestSource.dll");
},
@{
Name = "LSmashSource";
Url = "https://github.com/HomeOfAviSynthPlusEvolution/L-SMASH-Works/releases/download/1194.0.0.0/L-SMASH-Works-r1194.0.0.0.7z";
Name = "LSmashSource";
Url = "https://github.com/HomeOfAviSynthPlusEvolution/L-SMASH-Works/releases/download/1194.0.0.0/L-SMASH-Works-r1194.0.0.0.7z";
FilePatterns = @("x64/LSMASHSource.dll");
},
@{
Name = "MVTools";
Url = "https://github.com/dubhater/vapoursynth-mvtools/releases/download/v24/vapoursynth-mvtools-v24-win64.7z";
Name = "MVTools";
Url = "https://github.com/dubhater/vapoursynth-mvtools/releases/download/v24/vapoursynth-mvtools-v24-win64.7z";
FilePatterns = @("libmvtools.dll");
},
@{
Name = "VapourSynth-RIFE-ncnn-Vulkan";
Url = "https://github.com/styler00dollar/VapourSynth-RIFE-ncnn-Vulkan/releases/download/r9_mod_v32/librife_windows_x86-64.dll";
Name = "VapourSynth-RIFE-ncnn-Vulkan";
Url = "https://github.com/styler00dollar/VapourSynth-RIFE-ncnn-Vulkan/releases/download/r9_mod_v32/librife_windows_x86-64.dll";
IsDirectDll = $true;
},,
}, ,
@{
Name = "Adjust";
Url = "https://github.com/f0e/Vapoursynth-adjust/releases/download/v1/adjust.dll";
Name = "Adjust";
Url = "https://github.com/f0e/Vapoursynth-adjust/releases/download/v1/adjust.dll";
IsDirectDll = $true;
},
@{
Name = "SVPFlow";
Url = "https://web.archive.org/web/20190322064557if_/http://www.svp-team.com/files/gpl/svpflow-4.2.0.142.zip";
Name = "SVPFlow";
Url = "https://web.archive.org/web/20190322064557if_/http://www.svp-team.com/files/gpl/svpflow-4.2.0.142.zip";
FilePatterns = @(
"svpflow-4.2.0.142/lib-windows/vapoursynth/x64/svpflow1_vs64.dll",
"svpflow-4.2.0.142/lib-windows/vapoursynth/x64/svpflow2_vs64.dll"
Expand All @@ -165,9 +166,10 @@ foreach ($plugin in $plugins) {
# Direct DLL download (no extraction needed)
$dllPath = Join-Path $pluginsDir "$($plugin.Name.ToLower()).dll"
Download-File -Url $plugin.Url -OutFile $dllPath
} else {
}
else {
# Archive download that needs extraction
$archiveExt = if ($plugin.Url.EndsWith('.zip')) {'.zip'} else {'.7z'}
$archiveExt = if ($plugin.Url.EndsWith('.zip')) { '.zip' } else { '.7z' }
$archivePath = Join-Path $vapoursynthDir "$($plugin.Name.ToLower())$archiveExt"
Download-File -Url $plugin.Url -OutFile $archivePath
Extract-Files -ArchivePath $archivePath -FilePatterns $plugin.FilePatterns -DestinationPath $pluginsDir
Expand All @@ -186,15 +188,13 @@ Extract-Files -ArchivePath $ffmpegArchive -FilePatterns @(
# Define model downloads
$modelDownloads = @(
@{
BaseUrl = "https://raw.githubusercontent.com/styler00dollar/VapourSynth-RIFE-ncnn-Vulkan/a2579e656dac7909a66e7da84578a2f80ccba41c/models/rife-v4.26_ensembleFalse";
BaseUrl = "https://raw.githubusercontent.com/styler00dollar/VapourSynth-RIFE-ncnn-Vulkan/a2579e656dac7909a66e7da84578a2f80ccba41c/models/rife-v4.26_ensembleFalse";
ModelName = "rife-v4.26_ensembleFalse";
FileList = @("flownet.bin", "flownet.param");
FileList = @("flownet.bin", "flownet.param");
}
)

# Download all models
foreach ($model in $modelDownloads) {
Download-ModelFiles -BaseUrl $model.BaseUrl -ModelName $model.ModelName -FileList $model.FileList
}

Write-Host "Done"
102 changes: 102 additions & 0 deletions cmake/FindMPV.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# https://github.com/jellyfin/jellyfin-desktop

# ##############################################################################
# CMake module to search for the mpv libraries.
#
# WARNING: This module is experimental work in progress.
#
# Based one FindVLC.cmake by: Copyright (c) 2011 Michael Jansen
# <info@michael-jansen.biz> Modified by Tobias Hieta <tobias@hieta.se>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
# ##############################################################################

#
# Global Configuration Section
#
set(_MPV_REQUIRED_VARS MPV_INCLUDE_DIR MPV_LIBRARY)

#
# MPV uses pkgconfig.
#
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_MPV QUIET mpv)
endif(PKG_CONFIG_FOUND)

#
# Look for the include files.
#
find_path(
MPV_INCLUDE_DIR
NAMES mpv/client.h
HINTS ${PC_MPV_INCLUDEDIR} ${PC_MPV_INCLUDE_DIRS} # Unused for MPV but anyway
DOC "MPV include directory")

if(WIN32)
# don't ask me why this is needed
unset(MPV_LIBRARY CACHE)

find_file(
MPV_LIBRARY
NAMES libmpv.dll.a
PATHS
${CMAKE_SOURCE_DIR}/mpv
${CMAKE_SOURCE_DIR}/mpv/lib
$ENV{MPV_DIR}
$ENV{MPV_DIR}/lib
NO_DEFAULT_PATH
DOC "MPV import library")

find_file(
MPV_DLL
NAMES libmpv-2.dll
PATHS
${CMAKE_SOURCE_DIR}/mpv
${CMAKE_SOURCE_DIR}/mpv/bin
$ENV{MPV_DIR}
$ENV{MPV_DIR}/bin
NO_DEFAULT_PATH
DOC "MPV runtime DLL")

if(MPV_LIBRARY)
get_filename_component(_MPV_LIBRARY_DIR ${MPV_LIBRARY} DIRECTORY)
endif()
else()
#
# Look for the libraries
#
set(_MPV_LIBRARY_NAMES mpv)
if(PC_MPV_LIBRARIES)
set(_MPV_LIBRARY_NAMES ${PC_MPV_LIBRARIES})
endif(PC_MPV_LIBRARIES)

foreach(l ${_MPV_LIBRARY_NAMES})
find_library(
MPV_LIBRARY_${l}
NAMES ${l}
HINTS ${PC_MPV_LIBDIR} ${PC_MPV_LIBRARY_DIRS} # Unused for MPV but anyway
PATH_SUFFIXES lib${LIB_SUFFIX})
list(APPEND MPV_LIBRARY ${MPV_LIBRARY_${l}})
endforeach()

get_filename_component(_MPV_LIBRARY_DIR ${MPV_LIBRARY_mpv} PATH)
mark_as_advanced(MPV_LIBRARY)
endif()

set(MPV_LIBRARY_DIRS _MPV_LIBRARY_DIR)
list(REMOVE_DUPLICATES MPV_LIBRARY_DIRS)

mark_as_advanced(MPV_INCLUDE_DIR)
mark_as_advanced(MPV_LIBRARY_DIRS)
set(MPV_INCLUDE_DIRS ${MPV_INCLUDE_DIR})

#
# Check if everything was found and if the version is sufficient.
#
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
MPV
REQUIRED_VARS ${_MPV_REQUIRED_VARS}
VERSION_VAR MPV_VERSION_STRING)
2 changes: 1 addition & 1 deletion dependencies/imgui
Submodule imgui updated 129 files
2 changes: 1 addition & 1 deletion installer/setup.iss
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: envPath; Description: "Add to PATH"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: ".\resources\blur-gui.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: ".\resources\blur-cli.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: ".\resources\libmpv-2.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: ".\dependencies\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: ".\redist\VC_redist.x64.exe"; DestDir: {tmp}; Flags: deleteafterinstall

Expand Down
11 changes: 8 additions & 3 deletions src/cli/cli.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,17 @@ bool cli::run(
std::filesystem::create_directories(output_path->parent_path());
}

rendering::video_render_queue.add(
auto add_res = rendering::video_render_queue.add(
input_path, video_info, config_path, config_app::get_app_config(), output_path
);

if (blur.verbose) {
u::log("Queued '{}' for render", input_path.stem());
if (add_res.error) {
u::log("Failed to queue '{}' for render: {}", input_path.stem(), *add_res.error);
}
else {
if (blur.verbose) {
u::log("Queued '{}' for render", input_path.stem());
}
}
}

Expand Down
Loading
Loading