depot/third_party/nixpkgs/pkgs/by-name/av/av1an/package.nix

89 lines
2 KiB
Nix

{
lib,
av1an,
av1an-unwrapped,
ffmpeg,
libaom,
libvmaf,
libvpx,
makeBinaryWrapper,
mkvtoolnix-cli,
python3,
rav1e,
svt-av1,
symlinkJoin,
testers,
vapoursynth,
x264,
x265,
withAom ? true, # AV1 reference encoder
withSvtav1 ? false, # AV1 encoder/decoder (focused on speed and correctness)
withRav1e ? false, # AV1 encoder (focused on speed and safety)
withVpx ? true, # VP8 & VP9 de/encoding
withX264 ? true, # H.264/AVC encoder
withX265 ? true, # H.265/HEVC encoder
withVmaf ? false, # Perceptual video quality assessment algorithm
withMkvtoolnix ? true, # mkv editor, recommended concatenation method
}:
# av1an requires at least one encoder
assert lib.assertMsg (lib.elem true [
withAom
withRav1e
withSvtav1
withVpx
withX264
withX265
]) "At least one encoder is required!";
symlinkJoin {
pname = "av1an";
inherit (av1an-unwrapped) version;
paths = [ av1an-unwrapped ];
nativeBuildInputs = [ makeBinaryWrapper ];
postBuild =
let
runtimePrograms =
[
vapoursynth
(ffmpeg.override { inherit withVmaf; })
]
++ lib.optional withAom libaom
++ lib.optional withMkvtoolnix mkvtoolnix-cli
++ lib.optional withRav1e rav1e
++ lib.optional withSvtav1 svt-av1
++ lib.optional withVmaf libvmaf
++ lib.optional withVpx libvpx
++ lib.optional withX264 x264
++ lib.optional withX265 x265;
in
''
wrapProgram $out/bin/av1an \
--prefix LD_LIBRARY_PATH : ${vapoursynth}/lib \
--prefix PATH : ${lib.makeBinPath runtimePrograms} \
--prefix PYTHONPATH : ${vapoursynth}/${python3.sitePackages}
'';
passthru = {
tests.version = testers.testVersion {
package = av1an;
inherit (av1an-unwrapped) version;
};
};
meta = {
inherit (av1an-unwrapped.meta)
description
longDescription
homepage
changelog
license
maintainers
mainProgram
broken
;
};
}