(define-module (kdenlive-movit) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix utils) #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (guix build-system qt) #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages gnome) #:use-module (gnu packages linux) #:use-module (gnu packages video) #:use-module (gnu packages gtk) #:use-module (gnu packages xml) #:use-module (gnu packages audio) #:use-module (gnu packages photo) #:use-module (gnu packages xiph) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages autotools) #:use-module (gnu packages algebra) #:use-module (gnu packages gl) #:use-module (gnu packages kde-plasma) #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages qt) #:use-module (gnu packages sdl) #:use-module (gnu packages check) #:use-module (gnu packages pkg-config)) (define-public movit (package (name "movit") (version "1.7.1") (source (origin (method url-fetch) (uri (string-append "https://movit.sesse.net/movit-" version ".tar.gz")) (sha256 (base32 "06n1zfqjq74c4b82v6jfpd07nh0m2lam3ks296nbdk7h0nvp6c5k")))) (build-system gnu-build-system) (arguments (list #:tests? #f #:make-flags #~'("GTEST_DIR=gtest/googletest") #:phases #~(modify-phases %standard-phases (add-after 'unpack 'unpack-googletest ;; Copy the googletest sources to where the build system expects them. (lambda* (#:key inputs #:allow-other-keys) (let ((source (assoc-ref inputs "googletest-source")) (target "gtest")) (mkdir-p target) (copy-recursively source target) #t)))))) (native-inputs `(("googletest-source" ,(package-source googletest)))) (inputs (list pkg-config googletest libepoxy sdl2 fftw eigen)) (synopsis "Modern Video Toolkit, a high performance library for video filters") (description "Movit is the Modern Video Toolkit, notwithstanding that anything that's called “modern” usually isn't, and it's really not a toolkit. It aims to be a high-quality, high-performance, free software library for video filters.") (home-page "https://movit.sesse.net") (license license:gpl2))) (define-public mlt-movit (package (name "mlt-movit") (version "7.20.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/mltframework/mlt") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1dc09j8yvis6ilba5a13qicf6wbgxnzwllab6h48kzfl1lc0n8g7")))) (build-system cmake-build-system) (arguments (list #:tests? #f ;requires "Kwalify" #:phases #~(modify-phases %standard-phases (add-before 'configure 'override-LDFLAGS (lambda _ (setenv "LDFLAGS" (string-append "-Wl,-rpath=" #$output "/lib")))) (add-after 'install 'wrap-executable (lambda _ (let* ((frei0r #$(this-package-input "frei0r-plugins")) (ladspa #$(this-package-input "ladspa")) (movit #$(this-package-input "movit")) ;; In MLT 7, 'melt' symlinks to 'melt-7'. Try to keep ;; compatibility with MLT 6 where it's only 'melt'. (major #$(version-major version)) (exec (if (file-exists? (string-append #$output "/bin/melt-" major)) (string-append "melt-" major) "melt"))) (wrap-program (string-append #$output "/bin/" exec) `("FREI0R_PATH" ":" = (,(string-append frei0r "/lib/frei0r-1"))) `("LADSPA_PATH" ":" = (,(string-append ladspa "/lib/ladspa")))))))))) (inputs (list alsa-lib `(,alsa-plugins "pulseaudio") bash-minimal ffmpeg fftw frei0r-plugins gdk-pixbuf gtk+ libxml2 jack-1 ladspa libebur128 libexif libvorbis movit eigen rubberband libsamplerate pulseaudio qtbase-5 qtsvg-5 rtaudio sdl2 sdl2-image sox vidstab)) (native-inputs (list pkg-config)) (home-page "https://www.mltframework.org/") (synopsis "Author, manage, and run multitrack audio/video compositions") (description "MLT is a multimedia framework, designed and developed for television broadcasting. It provides a toolkit for broadcasters, video editors, media players, transcoders, web streamers and many more types of applications. The functionality of the system is provided via an assortment of ready to use tools, XML authoring components, and an extensible plug-in based API.") (license license:lgpl2.1+))) (define-public kdenlive-movit (package (name "kdenlive-movit") (version "23.04.2") (source (origin (method git-fetch) (uri (git-reference (url "https://invent.kde.org/multimedia/kdenlive") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0dgrgnnq38nphfzbapr7dkb21lv4idqynxqmzv9x3maijmp1jjfr")))) (build-system qt-build-system) (arguments ;; XXX: there is a single test that spawns other tests and ;; 1/3 tests failed and 1/327 assertions failed. It seems ;; that individual tests can't be skipped. (list #:configure-flags #~(list "-DBUILD_TESTING=off") #:tests? #f #:phases #~(modify-phases %standard-phases (add-after 'install 'wrap-executable (lambda _ (let* ((ffmpeg #$(this-package-input "ffmpeg")) (frei0r #$(this-package-input "frei0r-plugins")) (ladspa #$(this-package-input "ladspa")) (qtbase #$(this-package-input "qtbase"))) (wrap-program (string-append #$output "/bin/kdenlive") `("PATH" ":" prefix ,(list (string-append ffmpeg "/bin"))) `("FREI0R_PATH" ":" = (,(string-append frei0r "/lib/frei0r-1"))) `("LADSPA_PATH" ":" = (,(string-append ladspa "/lib/ladspa"))) `("QT_QPA_PLATFORM_PLUGIN_PATH" ":" = (,(string-append qtbase "/lib/qt5/plugins/platforms"))) `("MLT_PREFIX" ":" = (,#$(this-package-input "mlt-movit")))))))))) (native-inputs (list extra-cmake-modules kdoctools pkg-config qttools-5)) (inputs (list bash-minimal breeze ; make dark them available easily breeze-icons ; recommended icon set ffmpeg frei0r-plugins karchive kcrash kdbusaddons kdeclarative kdoctools kfilemetadata kguiaddons kiconthemes kirigami knewstuff knotifications knotifyconfig kparts kplotting ladspa mlt-movit movit rtaudio purpose qtbase-5 qtdeclarative-5 qtgraphicaleffects qtmultimedia-5 qtnetworkauth-5 qtquickcontrols-5 qtquickcontrols2-5 qtscript qtsvg-5 shared-mime-info)) (home-page "https://kdenlive.org") (synopsis "Non-linear video editor") (description "Kdenlive is an acronym for KDE Non-Linear Video Editor. Non-linear video editing is much more powerful than beginner's (linear) editors, hence it requires a bit more organization before starting. However, it is not reserved to specialists and can be used for small personal projects.") (license license:gpl2+)))