diff --git a/pkgs/development/libraries/ffmpeg-full/default.nix b/pkgs/development/libraries/ffmpeg-full/default.nix index a2f5e366e008..f428290e8039 100644 --- a/pkgs/development/libraries/ffmpeg-full/default.nix +++ b/pkgs/development/libraries/ffmpeg-full/default.nix @@ -111,6 +111,7 @@ , opensslExtlib ? false, openssl ? null , libpulseaudio ? null # Pulseaudio input support , rav1e ? null # AV1 encoder (focused on speed and safety) +, svt-av1 ? null # AV1 encoder/decoder (focused on speed and correctness) , rtmpdump ? null # RTMP[E] support #, libquvi ? null # Quvi input support , samba ? null # Samba protocol @@ -250,6 +251,11 @@ stdenv.mkDerivation rec { sha256 = "sha256-dqpmpDFETTuWHWolMoLaubU4BeDEuQaBNA0wmzL1f8o="; name = "fix_libsrt.patch"; }) + # Patch ffmpeg for svt-av1 until version 4.4 + (fetchpatch { + url = "https://raw.githubusercontent.com/AOMediaCodec/SVT-AV1/v0.8.4/ffmpeg_plugin/0001-Add-ability-for-ffmpeg-to-run-svt-av1.patch"; + sha256 = "1p4g8skr5gjw5h1648j7qrks81zx49lrnx9g0p81qgnrvxc2wwx0"; + }) ]; prePatch = '' @@ -393,6 +399,7 @@ stdenv.mkDerivation rec { (enableFeature (libpulseaudio != null) "libpulse") #(enableFeature quvi "libquvi") (enableFeature (rav1e != null) "librav1e") + (enableFeature (svt-av1 != null) "libsvtav1") (enableFeature (rtmpdump != null) "librtmp") #(enableFeature (schroedinger != null) "libschroedinger") (enableFeature (SDL2 != null) "sdl2") @@ -429,7 +436,7 @@ stdenv.mkDerivation rec { bzip2 celt dav1d fontconfig freetype frei0r fribidi game-music-emu gnutls gsm libjack2 ladspaH lame libaom libass libbluray libbs2b libcaca libdc1394 libmodplug libmysofa libogg libopus librsvg libssh libtheora libvdpau libvorbis libvpx libwebp libX11 - libxcb libXv libXext lzma openal openjpeg libpulseaudio rav1e rtmpdump opencore-amr + libxcb libXv libXext lzma openal openjpeg libpulseaudio rav1e svt-av1 rtmpdump opencore-amr samba SDL2 soxr speex srt vid-stab vo-amrwbenc wavpack x264 x265 xavs xvidcore zeromq4 zlib ] ++ optionals openglExtlib [ libGL libGLU ] diff --git a/pkgs/tools/video/svt-av1/default.nix b/pkgs/tools/video/svt-av1/default.nix new file mode 100644 index 000000000000..c3d2de311b1f --- /dev/null +++ b/pkgs/tools/video/svt-av1/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchFromGitHub, cmake, nasm }: + +stdenv.mkDerivation rec { + pname = "svt-av1"; + version = "0.8.6"; + + src = fetchFromGitHub { + owner = "AOMediaCodec"; + repo = "SVT-AV1"; + rev = "v${version}"; + sha256 = "1wzamg89azi1f93wxvdy7silsgklckc754ca066k33drvyacicyw"; + }; + + nativeBuildInputs = [ cmake nasm ]; + + meta = with stdenv.lib; { + description = "AV1-compliant encoder/decoder library core"; + homepage = "https://github.com/AOMediaCodec/SVT-AV1"; + license = licenses.bsd2; + platforms = platforms.unix; + broken = stdenv.isAarch64; # undefined reference to `cpuinfo_arm_linux_init' + maintainers = with maintainers; [ chiiruno ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f979f56083f7..f008ac7b1026 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2672,6 +2672,8 @@ in syslogng_incubator = callPackage ../tools/system/syslog-ng-incubator { }; + svt-av1 = callPackage ../tools/video/svt-av1 { }; + inherit (callPackages ../servers/rainloop { }) rainloop-community rainloop-standard; @@ -13038,6 +13040,7 @@ in ffmpeg = ffmpeg_4; ffmpeg-full = callPackage ../development/libraries/ffmpeg-full { + svt-av1 = if stdenv.isAarch64 then null else svt-av1; # The following need to be fixed on Darwin libjack2 = if stdenv.isDarwin then null else libjack2; libmodplug = if stdenv.isDarwin then null else libmodplug;