python312Packages.llama-index: 0.12.9 -> 0.12.9.post1 (#371957)
[NixPkgs.git] / pkgs / by-name / li / libavif / package.nix
blob00273ae753f12e5e87855342ae63eee20d8462c9
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   libaom,
6   cmake,
7   pkg-config,
8   zlib,
9   libpng,
10   libjpeg,
11   dav1d,
12   libyuv,
13   gdk-pixbuf,
14   makeWrapper,
17 let
18   gdkPixbufModuleDir = "${placeholder "out"}/${gdk-pixbuf.moduleDir}";
19   gdkPixbufModuleFile = "${placeholder "out"}/${gdk-pixbuf.binaryDir}/avif-loaders.cache";
22 stdenv.mkDerivation rec {
23   pname = "libavif";
24   version = "1.1.1";
26   src = fetchFromGitHub {
27     owner = "AOMediaCodec";
28     repo = pname;
29     rev = "v${version}";
30     hash = "sha256-kop1S4A/+hP2YdgoMXP7OMVPc2eoRnHpoBrPnW6KWyM=";
31   };
33   # reco: encode libaom slowest but best, decode dav1d fastest
35   cmakeFlags = [
36     "-DBUILD_SHARED_LIBS=ON"
37     "-DAVIF_CODEC_AOM=ON" # best encoder (slow but small)
38     "-DAVIF_CODEC_DAV1D=ON" # best decoder (fast)
39     "-DAVIF_CODEC_AOM_DECODE=OFF"
40     "-DAVIF_BUILD_APPS=ON"
41     "-DAVIF_BUILD_GDK_PIXBUF=ON"
42   ];
44   nativeBuildInputs = [
45     cmake
46     pkg-config
47     gdk-pixbuf
48     makeWrapper
49   ];
51   buildInputs = [
52     gdk-pixbuf
53     zlib
54     libpng
55     libjpeg
56   ];
58   propagatedBuildInputs = [
59     dav1d
60     libaom
61     libyuv
62   ];
64   postPatch = ''
65     substituteInPlace contrib/gdk-pixbuf/avif.thumbnailer.in \
66       --replace '@CMAKE_INSTALL_FULL_BINDIR@/gdk-pixbuf-thumbnailer' "$out/libexec/gdk-pixbuf-thumbnailer-avif"
67   '';
69   env.PKG_CONFIG_GDK_PIXBUF_2_0_GDK_PIXBUF_MODULEDIR = gdkPixbufModuleDir;
71   postInstall =
72     ''
73       GDK_PIXBUF_MODULEDIR=${gdkPixbufModuleDir} \
74       GDK_PIXBUF_MODULE_FILE=${gdkPixbufModuleFile} \
75       gdk-pixbuf-query-loaders --update-cache
77     ''
78     # Cross-compiled gdk-pixbuf doesn't support thumbnailers
79     + lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''
80       mkdir -p "$out/bin"
81       makeWrapper ${gdk-pixbuf}/bin/gdk-pixbuf-thumbnailer "$out/libexec/gdk-pixbuf-thumbnailer-avif" \
82         --set GDK_PIXBUF_MODULE_FILE ${gdkPixbufModuleFile}
83     '';
85   meta = with lib; {
86     description = "C implementation of the AV1 Image File Format";
87     longDescription = ''
88       Libavif aims to be a friendly, portable C implementation of the
89       AV1 Image File Format. It is a work-in-progress, but can already
90       encode and decode all AOM supported YUV formats and bit depths
91       (with alpha). It also features an encoder and a decoder
92       (avifenc/avifdec).
93     '';
94     homepage = "https://github.com/AOMediaCodec/libavif";
95     changelog = "https://github.com/AOMediaCodec/libavif/blob/v${version}/CHANGELOG.md";
96     maintainers = with maintainers; [ mkg20001 ];
97     platforms = platforms.all;
98     license = licenses.bsd2;
99   };