Giter Club home page Giter Club logo

dav1d's Introduction

dav1d

dav1d is a new AV1 cross-platform decoder, 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

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.

It supports 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, to allow the creation of hybrid decoders.

The reasoning behind this decision is the same as for libvorbis, see RMS on vorbis.

Roadmap

The plan is the folllowing:

Reached

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

On-going

  1. Make it fast on mobile, by writing asm for ARMv8 chips,
  2. Make it fast on older desktop, by writing asm for SSE chips.

After

  1. Improve C code base with various tweaks,
  2. Accelerate for less common architectures,
  3. Use more GPU, when possible.

Contribute

Currently, we are looking for help from:

  • C developers,
  • asm developers,
  • platform-specific developers,
  • GPGPU developers,
  • testers.

Our contributions guidelines are quite 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.

CLA

There is no CLA.

People will keep their copyright and their authorship rights, while adhering to the BSD 2-clause license.

VideoLAN will only have the collective work rights.

CoC

The VideoLAN Code of Conduct applies to this project.

Compile

  1. Install Meson (0.47 or higher), Ninja, and, for x86* targets, nasm (2.13 or higher)
  2. Run meson build --buildtype release
  3. Build with ninja -C build

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

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?

  • 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?

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 that applies to the AV1 specification and codec.

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.

dav1d's People

Contributors

jannau avatar rbultje avatar jamrial avatar gramner-twoorioles avatar epirat avatar mstorsjo avatar ltrudeau-twoorioles avatar barrbrain avatar chouquette avatar jbkempf avatar rzumer avatar dwbuiten avatar robux4 avatar fcartegnie avatar haasn avatar thresheek avatar boyuanxiao-argondesign avatar wlwcc701 avatar mjbshaw avatar lotharkript avatar tdaede avatar smilingwolf avatar jbeich avatar dalecurtis avatar fredbarbier avatar counterpillow avatar shizmob avatar stemidts avatar tgurr avatar skal65535 avatar

Watchers

James Cloos avatar Slanterns avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.