mirror of https://code.videolan.org/videolan/dav1d
commit
c001c4b0a7
|
@ -0,0 +1,47 @@
|
|||
# Dav1d contribution guide
|
||||
|
||||
## CoC
|
||||
The [VideoLAN Code of Conduct](https://wiki.videolan.org/CoC) applies to this project.
|
||||
|
||||
## Codebase language
|
||||
|
||||
The codebase is developed with the following assumptions:
|
||||
|
||||
For the library:
|
||||
- C language with C99 version, without the VLA or the Complex (*\_\_STDC_NO_COMPLEX__*) features, and without compiler extension,
|
||||
- asm in .asm files, using the NASM syntax,
|
||||
- no C++ is allowed, whatever the version.
|
||||
|
||||
For the tools and utils:
|
||||
- C *(see above for restrictions)*
|
||||
- Rust
|
||||
- C++ only for the MFT.
|
||||
|
||||
If you want to use *Threads* or *Atomic* features, please conform to the **C11**/**POSIX** semantic and use a wrapper for older compilers/platforms *(like done in VLC)*.
|
||||
|
||||
Please use modern standard POSIX functions *(strscpy, asprintf, tdestroy)*, and provide a compatibility fallback *(like done in VLC)*.
|
||||
|
||||
We will make reasonable efforts for compilers that are a bit older, but we won't support gcc 3 or MSVC 2012.
|
||||
|
||||
## Authorship
|
||||
|
||||
Please provide a correct authorship for your commit logs, with a name and a valid email.
|
||||
|
||||
We will reject anonymous contributions for now. As an exception, known pseudonyms from the multimedia community are accepted.
|
||||
|
||||
This project is respecting **Copyright** and **Droit d'auteur**. There is no copyright attribution or CLA.
|
||||
|
||||
## Commit logs
|
||||
|
||||
Please read [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/).
|
||||
|
||||
## Submit requests (WIP)
|
||||
|
||||
- Code
|
||||
- Test
|
||||
- Try
|
||||
- Submit patches
|
||||
|
||||
## Patent license
|
||||
|
||||
You need to read and understand the [AV1 patents license](doc/PATENTS), before committing.
|
|
@ -0,0 +1,23 @@
|
|||
Copyright © 2018, VideoLAN and dav1d authors
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -0,0 +1,94 @@
|
|||
# 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
|
||||
|
||||
## 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,
|
||||
- platform-specific developers.
|
||||
|
||||
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
|
||||
|
||||
1. Install [Meson](https://mesonbuild.com/)
|
||||
2. Run `meson build`
|
||||
|
||||
# Support
|
||||
|
||||
This project is partially funded by the *Alliance for Open Media*/**AOM** and is supported by TwoOrioles and VideoLabs.
|
||||
|
||||
These 2 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?
|
||||
|
||||
- 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.
|
|
@ -0,0 +1,108 @@
|
|||
Alliance for Open Media Patent License 1.0
|
||||
|
||||
1. License Terms.
|
||||
|
||||
1.1. Patent License. Subject to the terms and conditions of this License, each
|
||||
Licensor, on behalf of itself and successors in interest and assigns,
|
||||
grants Licensee a non-sublicensable, perpetual, worldwide, non-exclusive,
|
||||
no-charge, royalty-free, irrevocable (except as expressly stated in this
|
||||
License) patent license to its Necessary Claims to make, use, sell, offer
|
||||
for sale, import or distribute any Implementation.
|
||||
|
||||
1.2. Conditions.
|
||||
|
||||
1.2.1. Availability. As a condition to the grant of rights to Licensee to make,
|
||||
sell, offer for sale, import or distribute an Implementation under
|
||||
Section 1.1, Licensee must make its Necessary Claims available under
|
||||
this License, and must reproduce this License with any Implementation
|
||||
as follows:
|
||||
|
||||
a. For distribution in source code, by including this License in the
|
||||
root directory of the source code with its Implementation.
|
||||
|
||||
b. For distribution in any other form (including binary, object form,
|
||||
and/or hardware description code (e.g., HDL, RTL, Gate Level Netlist,
|
||||
GDSII, etc.)), by including this License in the documentation, legal
|
||||
notices, and/or other written materials provided with the
|
||||
Implementation.
|
||||
|
||||
1.2.2. Additional Conditions. This license is directly from Licensor to
|
||||
Licensee. Licensee acknowledges as a condition of benefiting from it
|
||||
that no rights from Licensor are received from suppliers, distributors,
|
||||
or otherwise in connection with this License.
|
||||
|
||||
1.3. Defensive Termination. If any Licensee, its Affiliates, or its agents
|
||||
initiates patent litigation or files, maintains, or voluntarily
|
||||
participates in a lawsuit against another entity or any person asserting
|
||||
that any Implementation infringes Necessary Claims, any patent licenses
|
||||
granted under this License directly to the Licensee are immediately
|
||||
terminated as of the date of the initiation of action unless 1) that suit
|
||||
was in response to a corresponding suit regarding an Implementation first
|
||||
brought against an initiating entity, or 2) that suit was brought to
|
||||
enforce the terms of this License (including intervention in a third-party
|
||||
action by a Licensee).
|
||||
|
||||
1.4. Disclaimers. The Reference Implementation and Specification are provided
|
||||
"AS IS" and without warranty. The entire risk as to implementing or
|
||||
otherwise using the Reference Implementation or Specification is assumed
|
||||
by the implementer and user. Licensor expressly disclaims any warranties
|
||||
(express, implied, or otherwise), including implied warranties of
|
||||
merchantability, non-infringement, fitness for a particular purpose, or
|
||||
title, related to the material. IN NO EVENT WILL LICENSOR BE LIABLE TO
|
||||
ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL,
|
||||
INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF
|
||||
ACTION OF ANY KIND WITH RESPECT TO THIS LICENSE, WHETHER BASED ON BREACH
|
||||
OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR
|
||||
NOT THE OTHER PARTRY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
2. Definitions.
|
||||
|
||||
2.1. Affiliate. “Affiliate” means an entity that directly or indirectly
|
||||
Controls, is Controlled by, or is under common Control of that party.
|
||||
|
||||
2.2. Control. “Control” means direct or indirect control of more than 50% of
|
||||
the voting power to elect directors of that corporation, or for any other
|
||||
entity, the power to direct management of such entity.
|
||||
|
||||
2.3. Decoder. "Decoder" means any decoder that conforms fully with all
|
||||
non-optional portions of the Specification.
|
||||
|
||||
2.4. Encoder. "Encoder" means any encoder that produces a bitstream that can
|
||||
be decoded by a Decoder only to the extent it produces such a bitstream.
|
||||
|
||||
2.5. Final Deliverable. “Final Deliverable” means the final version of a
|
||||
deliverable approved by the Alliance for Open Media as a Final
|
||||
Deliverable.
|
||||
|
||||
2.6. Implementation. "Implementation" means any implementation, including the
|
||||
Reference Implementation, that is an Encoder and/or a Decoder. An
|
||||
Implementation also includes components of an Implementation only to the
|
||||
extent they are used as part of an Implementation.
|
||||
|
||||
2.7. License. “License” means this license.
|
||||
|
||||
2.8. Licensee. “Licensee” means any person or entity who exercises patent
|
||||
rights granted under this License.
|
||||
|
||||
2.9. Licensor. "Licensor" means (i) any Licensee that makes, sells, offers
|
||||
for sale, imports or distributes any Implementation, or (ii) a person
|
||||
or entity that has a licensing obligation to the Implementation as a
|
||||
result of its membership and/or participation in the Alliance for Open
|
||||
Media working group that developed the Specification.
|
||||
|
||||
2.10. Necessary Claims. "Necessary Claims" means all claims of patents or
|
||||
patent applications, (a) that currently or at any time in the future,
|
||||
are owned or controlled by the Licensor, and (b) (i) would be an
|
||||
Essential Claim as defined by the W3C Policy as of February 5, 2004
|
||||
(https://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential)
|
||||
as if the Specification was a W3C Recommendation; or (ii) are infringed
|
||||
by the Reference Implementation.
|
||||
|
||||
2.11. Reference Implementation. “Reference Implementation” means an Encoder
|
||||
and/or Decoder released by the Alliance for Open Media as a Final
|
||||
Deliverable.
|
||||
|
||||
2.12. Specification. “Specification” means the specification designated by
|
||||
the Alliance for Open Media as a Final Deliverable for which this
|
||||
License was issued.
|
||||
|
Loading…
Reference in New Issue