2019-06-18 23:52:59 +03:00
![dav1d logo ](dav1d_logo.png )
2018-11-24 04:53:30 +03:00
# dav1d
**dav1d** is a new **AV1** cross-platform **d**ecoder, open-source, and focused on speed and correctness.
The canonical repository URL for this repo is https://code.videolan.org/videolan/dav1d
This project is partially funded by the *Alliance for Open Media* /**AOM**.
## Goal and Features
2018-12-19 21:11:14 +03:00
The goal of this project is to provide a decoder for **most platforms** , and achieve the **highest speed** possible to overcome the temporary lack of AV1 hardware decoder.
2018-11-24 04:53:30 +03:00
2018-12-19 21:11:14 +03:00
It supports all features from AV1, including all subsampling and bit-depth parameters.
2018-11-24 04:53:30 +03:00
In the future, this project will host simple tools or simple wrappings *(like, for example, an MFT transform)* .
## License
2018-12-19 21:11:14 +03:00
**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, to allow the creation of hybrid decoders.
2018-11-24 04:53:30 +03:00
2018-12-19 21:11:14 +03:00
The reasoning behind this decision is the same as for libvorbis, see [RMS on vorbis ](https://lwn.net/2001/0301/a/rms-ov-license.php3 ).
2018-11-24 04:53:30 +03:00
# Roadmap
The plan is the folllowing:
2018-12-19 21:11:14 +03:00
### Reached
2018-11-24 04:53:30 +03:00
1. Complete C implementation of the decoder,
2. Provide a usable API,
3. Port to most platforms,
2018-12-19 21:11:14 +03:00
4. Make it fast on desktop, by writing asm for AVX-2 chips.
2018-11-24 04:53:30 +03:00
2018-12-19 21:11:14 +03:00
### On-going
5. Make it fast on mobile, by writing asm for ARMv8 chips,
6. Make it fast on older desktop, by writing asm for SSE chips.
### After
2019-03-19 20:35:09 +03:00
7. Improve C code base with [various tweaks ](https://code.videolan.org/videolan/dav1d/wikis/task-list ),
2018-12-19 21:11:14 +03:00
8. Accelerate for less common architectures,
9. Use more GPU, when possible.
2018-11-24 04:53:30 +03:00
# Contribute
Currently, we are looking for help from:
- C developers,
- asm developers,
- platform-specific developers,
2018-12-19 21:11:14 +03:00
- GPGPU developers,
2018-11-24 04:53:30 +03:00
- testers.
2018-12-19 21:11:14 +03:00
Our contributions guidelines are quite strict. We want to build a coherent codebase to simplify maintenance and achieve the highest possible speed.
2018-11-24 04:53:30 +03:00
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.
2018-12-19 21:11:14 +03:00
People will keep their copyright and their authorship rights, while adhering to the BSD 2-clause license.
2018-11-24 04:53:30 +03:00
VideoLAN will only have the collective work rights.
## CoC
The [VideoLAN Code of Conduct ](https://wiki.videolan.org/CoC ) applies to this project.
# Compile
2019-03-19 20:35:09 +03:00
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.02 or higher)
2019-10-24 21:58:15 +03:00
2. Run `mkdir build && cd build` to create a build directory and enter it
3. Run `meson ..` to configure meson, add `--default-library=static` if static linking is desired
4. Run `ninja` to compile
2018-11-24 04:53:30 +03:00
2018-11-27 17:04:37 +03:00
# Run tests
2019-10-24 21:58:15 +03:00
1. In the root directory, run `git clone https://code.videolan.org/videolan/dav1d-test-data.git tests/dav1d-test-data` to fetch the test data repository
2. During meson configuration, specify `-Dtestdata_tests=true`
3. Run `meson test -v` after compiling
2018-11-27 17:04:37 +03:00
2018-11-24 04:53:30 +03:00
# Support
This project is partially funded by the *Alliance for Open Media* /**AOM** and is supported by TwoOrioles and VideoLabs.
These companies can provide support and integration help, should you need it.
# FAQ
## Why do you not improve libaom rather than starting a new project?
2018-12-19 21:11:14 +03:00
- We believe that libaom is a very good library. It was however developed for research purposes during AV1 design.
2018-11-24 04:53:30 +03:00
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?
2018-12-19 21:11:14 +03:00
- This project is an implementation of a decoder. It gives you no special rights on the AV1 patents.
2018-11-24 04:53:30 +03:00
Please read the [AV1 patent license ](doc/PATENTS ) that applies to the AV1 specification and codec.
2018-12-19 21:11:14 +03:00
## Will you care about <my_arch>? <my_os>?
- We do, but we don't have either the time or the knowledge. Therefore, patches and contributions welcome.