All Projects → videolan → Dav1d

videolan / Dav1d

Licence: bsd-2-clause
A read-only mirror of dav1d source code repository. The origin is at https://code.videolan.org/videolan/dav1d/

Programming Languages

assembly
5116 projects

Labels

Projects that are alternatives of or similar to Dav1d

Vp8 Webm Javascript Decoder
hand ported version of vp8 webm javascript decoder
Stars: ✭ 101 (-39.88%)
Mutual labels:  decoder
Swift Html Entities
HTML5 spec-compliant character encoder/decoder for Swift
Stars: ✭ 130 (-22.62%)
Mutual labels:  decoder
Salsanext
Uncertainty-aware Semantic Segmentation of LiDAR Point Clouds for Autonomous Driving
Stars: ✭ 153 (-8.93%)
Mutual labels:  decoder
Base62.js
🔡 A javascript Base62 encode/decoder for node.js
Stars: ✭ 108 (-35.71%)
Mutual labels:  decoder
Pytorch Asr
ASR with PyTorch
Stars: ✭ 124 (-26.19%)
Mutual labels:  decoder
Irremoteesp8266
Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/
Stars: ✭ 1,964 (+1069.05%)
Mutual labels:  decoder
Gifdec
small C GIF decoder
Stars: ✭ 100 (-40.48%)
Mutual labels:  decoder
Gojay
fastest JSON encoder/decoder with powerful stream API for Golang
Stars: ✭ 2,009 (+1095.83%)
Mutual labels:  decoder
Bbwebimage
A high performance Swift library for downloading, caching and editing web images asynchronously.
Stars: ✭ 128 (-23.81%)
Mutual labels:  decoder
Base62
Base62 encoder and decoder for arbitrary data
Stars: ✭ 141 (-16.07%)
Mutual labels:  decoder
Sdp
RFC 4566 SDP implementation in go
Stars: ✭ 109 (-35.12%)
Mutual labels:  decoder
Htmlstring
Escape and unescape HTML entities in Swift
Stars: ✭ 119 (-29.17%)
Mutual labels:  decoder
Wav
Battle tested Wav decoder/encoder
Stars: ✭ 139 (-17.26%)
Mutual labels:  decoder
Jlm
A fast LSTM Language Model for large vocabulary language like Japanese and Chinese
Stars: ✭ 105 (-37.5%)
Mutual labels:  decoder
Ffmediatoolkit
FFMediaToolkit is a cross-platform video decoder/encoder library for .NET that uses FFmpeg native libraries. It supports video frames extraction, reading stream metadata and creating videos from bitmaps in any format supported by FFmpeg.
Stars: ✭ 156 (-7.14%)
Mutual labels:  decoder
Boswatch
Python Script to process input data from rtl_fm and multimon-NG - multiple Plugin support
Stars: ✭ 101 (-39.88%)
Mutual labels:  decoder
Silk V3 Decoder
kn007's blog
Stars: ✭ 1,832 (+990.48%)
Mutual labels:  decoder
Oysterkit
OysterKit is a framework that provides a native Swift scanning, lexical analysis, and parsing capabilities. In addition it provides a language that can be used to rapidly define the rules used by OysterKit called STLR
Stars: ✭ 167 (-0.6%)
Mutual labels:  decoder
Ctc pytorch
CTC end -to-end ASR for timit and 863 corpus.
Stars: ✭ 161 (-4.17%)
Mutual labels:  decoder
Cityengine Sdk
CityEngine is a 3D city modeling software for urban design, visual effects, and VR/AR production. With its C++ SDK you can create plugins and standalone apps capable to execute CityEngine CGA procedural modeling rules.
Stars: ✭ 137 (-18.45%)
Mutual labels:  decoder

dav1d logo

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 following:

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 AVX2 chips.
  5. Make it fast on mobile, by writing asm for ARMv8 chips,
  6. Make it fast on older desktop, by writing asm for SSSE3+ chips,
  7. Make high bit-depth fast on mobile, by writing asm for ARMv8 chips.

On-going

  1. Make it fast on older mobile, by writing asm for ARMv7 chips,
  2. Make high bit-depth fast on older mobile, by writing asm for ARMv7 chips,
  3. Improve C code base with various tweaks,
  4. Accelerate for less common architectures, like PPC, SSE2 or AVX-512.

After

  1. Make high bit-depth fast on desktop, by writing asm for AVX2 chips,
  2. Make high bit-depth fast on older desktop, by writing asm for SSSE3+ chips,
  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.14 or higher)
  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

Cross-Compilation for 32- or 64-bit Windows, 32-bit Linux

If you're on a linux build machine trying to compile .exe for a Windows target/host machine, run

meson build --cross-file=package/crossfiles/x86_64-w64-mingw32.meson

or, for 32-bit:

meson build --cross-file=package/crossfiles/i686-w64-mingw32.meson

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.

For 32-bit linux, run

meson build --cross-file=package/crossfiles/i686-linux32.meson

Run tests

  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

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.

Where can I find documentation?

  • The current library documentation, built from master, can be found here.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].