Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / libraries / dav1d / default.nix
blob9c5e5101c8afbaf3ace693eeeeaa2d0bd50c60be
1 { lib, stdenv, fetchFromGitHub
2 , meson, ninja, nasm, pkg-config
3 , xxHash
4 , withTools ? false # "dav1d" binary
5 , withExamples ? false, SDL2 # "dav1dplay" binary
6 , useVulkan ? false, libplacebo, vulkan-loader, vulkan-headers
8 # for passthru.tests
9 , ffmpeg
10 , gdal
11 , handbrake
12 , libavif
13 , libheif
16 assert useVulkan -> withExamples;
18 stdenv.mkDerivation rec {
19   pname = "dav1d";
20   version = "1.2.1";
22   src = fetchFromGitHub {
23     owner = "videolan";
24     repo = pname;
25     rev = version;
26     hash = "sha256-RrEim3HXXjx2RUU7K3wPH3QbhNTRN9ZX/oAcyE9aV8I=";
27   };
29   outputs = [ "out" "dev" ];
31   nativeBuildInputs = [ meson ninja nasm pkg-config ];
32   # TODO: doxygen (currently only HTML and not build by default).
33   buildInputs = [ xxHash ]
34     ++ lib.optional withExamples SDL2
35     ++ lib.optionals useVulkan [ libplacebo vulkan-loader vulkan-headers ];
37   mesonFlags= [
38     "-Denable_tools=${lib.boolToString withTools}"
39     "-Denable_examples=${lib.boolToString withExamples}"
40   ];
42   doCheck = true;
44   passthru.tests = {
45     inherit
46       ffmpeg
47       gdal
48       handbrake
49       libavif
50       libheif;
51   };
53   meta = with lib; {
54     description = "A cross-platform AV1 decoder focused on speed and correctness";
55     longDescription = ''
56       The goal of this project is to provide a decoder for most platforms, and
57       achieve the highest speed possible to overcome the temporary lack of AV1
58       hardware decoder. It supports all features from AV1, including all
59       subsampling and bit-depth parameters.
60     '';
61     inherit (src.meta) homepage;
62     changelog = "https://code.videolan.org/videolan/dav1d/-/tags/${version}";
63     # More technical: https://code.videolan.org/videolan/dav1d/blob/${version}/NEWS
64     license = licenses.bsd2;
65     platforms = platforms.unix;
66     maintainers = with maintainers; [ primeos ];
67   };