• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

doc/H03-May-2022-173140

examples/H16-May-2021-1,7991,218

include/H16-May-2021-1,900995

package/H16-May-2021-11192

src/H16-May-2021-170,188153,599

tests/H16-May-2021-5,5104,200

tools/H16-May-2021-3,4282,368

.gitignoreH A D16-May-2021102 109

.gitlab-ci.ymlH A D16-May-202120.5 KiB648591

CONTRIBUTING.mdH A D16-May-20212 KiB5735

COPYINGH A D16-May-20211.3 KiB2419

NEWSH A D16-May-20218.4 KiB237186

README.mdH A D16-May-20215.3 KiB15292

THANKS.mdH A D16-May-20211.3 KiB3225

gcovr.cfgH A D16-May-202179 43

meson.buildH A D16-May-202116.4 KiB486411

README.md

1![dav1d logo](doc/dav1d_logo.png)
2
3# dav1d
4
5**dav1d** is a new **AV1** cross-platform **d**ecoder, open-source, and focused on speed and correctness.
6
7The canonical repository URL for this repo is https://code.videolan.org/videolan/dav1d
8
9This project is partially funded by the *Alliance for Open Media*/**AOM**.
10
11## Goal and Features
12
13The 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.
14
15It supports all features from AV1, including all subsampling and bit-depth parameters.
16
17In the future, this project will host simple tools or simple wrappings *(like, for example, an MFT transform)*.
18
19## License
20
21**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.
22
23The reasoning behind this decision is the same as for libvorbis, see [RMS on vorbis](https://lwn.net/2001/0301/a/rms-ov-license.php3).
24
25# Roadmap
26
27The plan is the following:
28
29### Reached
301. Complete C implementation of the decoder,
312. Provide a usable API,
323. Port to most platforms,
334. Make it fast on desktop, by writing asm for AVX2 chips.
345. Make it fast on mobile, by writing asm for ARMv8 chips,
356. Make it fast on older desktop, by writing asm for SSSE3+ chips,
367. Make high bit-depth fast on mobile, by writing asm for ARMv8 chips.
378. Make it fast on older mobile, by writing asm for ARMv7 chips,
389. Make high bit-depth fast on older mobile, by writing asm for ARMv7 chips,
39
40### On-going
4110. Improve C code base with [various tweaks](https://code.videolan.org/videolan/dav1d/wikis/task-list),
4211. Accelerate for less common architectures, like PPC, SSE2 or AVX-512.
4312. Make high bit-depth fast on desktop, by writing asm for AVX2 chips,
44
45### After
4613. Make high bit-depth fast on older desktop, by writing asm for SSSE3+ chips,
4714. Use more GPU decoding, when possible.
4815. Improve threading.
49
50# Contribute
51
52Currently, we are looking for help from:
53- C developers,
54- asm developers,
55- platform-specific developers,
56- GPGPU developers,
57- testers.
58
59Our contributions guidelines are quite strict. We want to build a coherent codebase to simplify maintenance and achieve the highest possible speed.
60
61Notably, the codebase is in pure C and asm.
62
63We are on IRC, on the **#dav1d** channel on *Freenode*.
64
65See the [contributions document](CONTRIBUTING.md).
66
67## CLA
68
69There is no CLA.
70
71People will keep their copyright and their authorship rights, while adhering to the BSD 2-clause license.
72
73VideoLAN will only have the collective work rights.
74
75## CoC
76
77The [VideoLAN Code of Conduct](https://wiki.videolan.org/CoC) applies to this project.
78
79# Compile
80
811. Install [Meson](https://mesonbuild.com/) (0.47 or higher), [Ninja](https://ninja-build.org/), and, for x86\* targets, [nasm](https://nasm.us/) (2.14 or higher)
822. Run `mkdir build && cd build` to create a build directory and enter it
833. Run `meson ..` to configure meson, add `--default-library=static` if static linking is desired
844. Run `ninja` to compile
85
86## Cross-Compilation for 32- or 64-bit Windows, 32-bit Linux
87
88If you're on a linux build machine trying to compile .exe for a Windows target/host machine, run
89
90```
91meson build --cross-file=package/crossfiles/x86_64-w64-mingw32.meson
92```
93
94or, for 32-bit:
95
96```
97meson build --cross-file=package/crossfiles/i686-w64-mingw32.meson
98```
99
100`mingw-w64` is a pre-requisite and should be installed on your linux machine via your preferred method or package manager. Note the binary name formats may differ between distributions. Verify the names, and use `alias` if certain binaries cannot be found.
101
102For 32-bit linux, run
103
104```
105meson build --cross-file=package/crossfiles/i686-linux32.meson
106```
107
108# Run tests
109
1101. 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
1112. During meson configuration, specify `-Dtestdata_tests=true`
1123. Run `meson test -v` after compiling
113
114# Support
115
116This project is partially funded by the *Alliance for Open Media*/**AOM** and is supported by TwoOrioles and VideoLabs.
117
118These companies can provide support and integration help, should you need it.
119
120
121# FAQ
122
123## Why do you not improve libaom rather than starting a new project?
124
125- We believe that libaom is a very good library. It was however developed for research purposes during AV1 design.
126We think that an implementation written from scratch can achieve faster decoding, in the same way that *ffvp9* was faster than *libvpx*.
127
128## Is dav1d a recursive acronym?
129
130- Yes.
131
132## Can I help?
133
134- Yes. See the [contributions document](CONTRIBUTING.md).
135
136## I am not a developer. Can I help?
137
138- Yes. We need testers, bug reporters and documentation writers.
139
140## What about the AV1 patent license?
141
142- This project is an implementation of a decoder. It gives you no special rights on the AV1 patents.
143
144Please read the [AV1 patent license](doc/PATENTS) that applies to the AV1 specification and codec.
145
146## Will you care about <my_arch>? <my_os>?
147
148- We do, but we don't have either the time or the knowledge. Therefore, patches and contributions welcome.
149
150## Where can I find documentation?
151- The current library documentation, built from master, can be found [here](https://videolan.videolan.me/dav1d/).
152