Contributing ============ Quick Links for Contributing ---------------------------- - Compiling and building OBS Studio: https://github.com/jp9000/obs-studio/wiki/Install-Instructions - Our bug tracker (linked to forum accounts): https://obsproject.com/mantis/ - Development IRC channel: #obs-dev on QuakeNet - Development forum: https://obsproject.com/forum/list/general-development.21/ - To contribute language translations, do not make pull requests. Instead, use crowdin. Read here for more information: https://obsproject.com/forum/threads/how-to-contribute-translations-for-obs.16327/ Coding Guidelines ----------------- - OBS Studio uses kernel normal form (linux variant), for more information, please read here: https://github.com/torvalds/linux/blob/master/Documentation/process/coding-style.rst - Avoid trailing spaces. To view trailing spaces before making a commit, use "git diff" on your changes. If colors are enabled for git in the command prompt, it will show you any whitespace issues marked with red. - Tabs for indentation, spaces for alignment. Tabs are treated as 8 columns wide. - 80 columns max Commit Guidlines ---------------- - OBS Studio uses the 50/72 standard for commits. 50 characters max for the title (excluding module prefix), an empty line, and then a full description of the commit, wrapped to 72 columns max. See this link for more information: http://chris.beams.io/posts/git-commit/ - Make sure commit titles are always in present tense, and are not followed by punctuation. - Prefix commit titles with the module name, followed by a colon and a space (unless modifying a file in the base directory). When modifying cmake modules, prefix with "cmake". So for example, if you are modifying the obs-ffmpeg plugin:: obs-ffmpeg: Fix bug with audio output Or for libobs:: libobs: Fix source not displaying - If you still need examples, please view the commit history. Headers ------- There's no formal documentation as of yet, so it's recommended to read the headers (which are heavily commented) to learn the API. Here are the most important headers to check out:: libobs/obs.h Main header libobs/obs-module.h Main header for plugin modules libobs/obs-source.h Creating video/audio sources libobs/obs-output.h Creating outputs libobs/obs-encoder.h Implementing encoders libobs/obs-service.h Implementing custom streaming services libobs/graphics/graphics.h Graphics API UI/obs-frontend-api/obs-frontend-api.h Front-end API If you would like to learn from example, examine the default plugins (in the subdirectory). All features of OBS Studio are implemented as plugins.