README.md 3.76 KB
Newer Older
1 2
# dav1d

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
3
**dav1d** is a new **AV1** cross-platform **d**ecoder, open-source, and focused on speed and correctness.
4 5 6

The canonical repository URL for this repo is https://code.videolan.org/videolan/dav1d

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
7 8
This project is partially funded by the *Alliance for Open Media*/**AOM**.

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
## Goal and Features

The goal of this project is to provide a decoder for **most platforms**, and achieve the **highest speed** possible to overcome the lack of AV1 hardware decoder.

It aims to support all features from AV1, including all subsampling and bit-depth parameters.

In the future, this project will host simple tools or simple wrappings *(like, for example, an MFT transform)*.

## License

**dav1d** is released under a very liberal license, a contrario from the other VideoLAN projects, so that it can be embedded anywhere, including non-open-source software; or even drivers, for hybrid decoders.

The reasoning behind this decision is the same as for libvorbis, [RMS on vorbis](https://lwn.net/2001/0301/a/rms-ov-license.php3).

# Roadmap

The plan is the folllowing:

1. Complete C implementation of the decoder,
2. Provide a usable API,
3. Port to most platforms,
4. Make it fast, by writing asm.

By the end of 2018, we hope to have a completely usable version that will be faster than any other software open source implementation.

# Contribute

Currently, we are looking for help from:
- C developers,
- asm developers,
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
39 40
- platform-specific developers,
- testers.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

Our contributions guidelines are strict. We want to build a coherent codebase to simplify maintenance and achieve the highest possible speed.

Notably, the codebase is in pure C and asm.

We are on IRC, on the **#dav1d** channel on *Freenode*.

See the [contributions document](CONTRIBUTING.md).

## CLA

There is no CLA.

People will keep their copyright and their authorship rights.

VideoLAN will only have the collective work rights.

## CoC

The [VideoLAN Code of Conduct](https://wiki.videolan.org/CoC) applies to this project.

# Compile

Raphaël Zumer's avatar
Raphaël Zumer committed
64
1. Install [Meson](https://mesonbuild.com/) (0.47 or higher), [Ninja](https://ninja-build.org/), and, for x86* targets, [nasm](https://nasm.us/) (2.13 or higher)
65
2. Run `meson build --buildtype release`
66
3. Build with `ninja -C build`
67

68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
# Run tests

1. During initial build dir setup or `meson configure` specify `-Dbuild_tests=true`
2. In the build directory run `meson test` optionally with `-v` for more verbose output, especially useful
   for checkasm

# Run testdata based tests

1. Checkout the test data repository
   
   ```
   git clone https://code.videolan.org/videolan/dav1d-test-data.git tests/dav1d-test-data
   ```
2. During initial build dir setup or `meson configure` specify `-Dbuild_tests=true` and `-Dtestdata_tests=true`
3. In the build directory run `meson test` optionally with `-v` for more verbose output

84 85 86 87
# Support

This project is partially funded by the *Alliance for Open Media*/**AOM** and is supported by TwoOrioles and VideoLabs.

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
88
These companies can provide support and integration help, should you need it.
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114


# FAQ

## Why do you not improve libaom rather than starting a new project?

- We believe that libaom is a very good library. It was however developed for research purposes during AV1 design.  
We think that an implementation written from scratch can achieve faster decoding, in the same way that *ffvp9* was faster than *libvpx*.

## Is dav1d a recursive acronym?

- Yes.

## Can I help?

- Yes. See the [contributions document](CONTRIBUTING.md).

## I am not a developer. Can I help?

- Yes. We need testers, bug reporters, and documentation writers.

## What about the AV1 patent license?

This project is an implementation of a decoder. It gives you no special rights on the AV1 patents.

Please read the [AV1 patent license](doc/PATENTS) that applies to the AV1 specification and codec.