Skip to content

Latest commit

 

History

History
90 lines (59 loc) · 2.8 KB

CONTRIBUTING.rst

File metadata and controls

90 lines (59 loc) · 2.8 KB

Contributing

Quick Links for Contributing

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 <plugins> subdirectory). All features of OBS Studio are implemented as plugins.