1# dav1d contribution guide 2 3## CoC 4The [VideoLAN Code of Conduct](https://wiki.videolan.org/CoC) applies fully to this project. 5 6## ToDo 7 8The todo list can be found [on the wiki](https://code.videolan.org/videolan/dav1d/wikis/task-list). 9 10## Codebase language 11 12The codebase is developed with the following assumptions: 13 14For the library: 15- C language with C99 version, without the VLA or the Complex (*\_\_STDC_NO_COMPLEX__*) features, and without compiler extensions. Anonymous structures and unions are the only allowed compiler extensions for internal code. 16- x86 asm in .asm files, using the NASM syntax, 17- arm/arm64 in .S files, using the GAS syntax limited to subset llvm 5.0's internal assembler supports, 18- no C++ is allowed, whatever the version. 19 20For the tools and utils: 21- C *(see above for restrictions)* 22- Rust 23- C++ is only allowed for the MFT. 24 25If 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)*. 26 27Please use modern standard POSIX functions *(strscpy, asprintf, tdestroy)*, and provide a compatibility fallback *(like done in VLC)*. 28 29We will make reasonable efforts for compilers that are a bit older, but we won't support gcc 3 or MSVC 2012. 30 31## Authorship 32 33Please provide a correct authorship for your commit logs, with a name and a valid email. 34 35We will reject anonymous contributions for now. As an exception, known pseudonyms from the multimedia community are accepted. 36 37This project is respecting **Copyright** and **Droit d'auteur**. There is no copyright attribution or CLA. 38 39## Commit logs 40 41Please read [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/). 42 43## Submit requests (WIP) 44 45- Code, 46- [Compile](https://xkcd.com/303/), 47- Check your [code style](https://code.videolan.org/videolan/dav1d/wikis/Coding-style), 48- Test, 49- Try, 50- Submit patches through merge requests, 51- Check that this passes the CI. 52 53## Patent license 54 55You need to read, understand, and agree to the [AV1 patents license](doc/PATENTS), before committing. 56 57