OBS Studio - Free from stubborn peops https://obsproject.com
Find a file
Doğukan Korkmaztürk c2b4823075 linux-pipewire: Add explicit sync support
It is possible for OBS to receive incomplete frames from the compositor
if the graphics drivers in use do not support implicit synchronization.
The compositors usually try to workaround this issue by waiting all
render operations to complete before sharing frames with OBS. However,
this has performance implications for the compositors. Similarly, OBS
should also make sure that all the rendering operations sourcing the
received buffer are complete before returning the respective pw_buffer
back to the compositor, or it would risk the image it is working on
getting overwritten without some type of synchronization.

This change leverages PipeWire's ability to share DRM syncobj fds to
implement an explicit synchronization solution to solve the problem
described above. The usage of these DRM syncobjs is negotiated with the
compositor that OBS is running on. So OBS can still work even if the
compositor does not support explicit synchronization.

Signed-off-by: Doğukan Korkmaztürk <dkorkmazturk@nvidia.com>
2025-02-05 16:20:15 -05:00
.github CI: Fix typo in setup-macos-codesigning action 2025-02-04 09:26:23 -05:00
additional_install_files Improve additional_install_files for debug/release 2014-07-18 22:41:11 -07:00
build-aux build-aux: Replace UI directory with frontend directory for formatters 2025-01-08 17:33:14 +01:00
cmake libobs: Rewrite macOS Hotkeys to use CGEventTap 2025-02-05 14:33:06 -05:00
deps deps/glad: Add EGL_ANDROID_native_fence_sync 2025-02-05 16:20:15 -05:00
docs/sphinx libobs,libobs-opengl: Add gs_sync_t 2025-02-05 16:20:15 -05:00
frontend frontend: Round up Resize Output (Source Size) 2025-02-05 15:50:56 -05:00
libobs libobs,libobs-opengl: Add gs_sync_t 2025-02-05 16:20:15 -05:00
libobs-d3d11 clang-format: Increase column limit from 80 to 120 2024-10-04 18:19:27 -04:00
libobs-opengl libobs,libobs-opengl: Add gs_sync_t 2025-02-05 16:20:15 -05:00
libobs-winrt clang-format: Increase column limit from 80 to 120 2024-10-04 18:19:27 -04:00
plugins linux-pipewire: Add explicit sync support 2025-02-05 16:20:15 -05:00
shared obs-scripting: Fix macOS Homebrew Python loading 2025-01-28 15:07:38 -05:00
test clang-format: Increase column limit from 80 to 120 2024-10-04 18:19:27 -04:00
.cirrus.yml CI: Enable WebRTC on FreeBSD 2024-10-22 16:11:08 -04:00
.clang-format clang-format: Increase column limit from 80 to 120 2024-10-04 18:19:27 -04:00
.editorconfig Add composable theme files spacing in editorconfig 2024-04-25 16:11:38 -04:00
.gersemirc CI: Add configuration file for gersemi CMake formatter 2024-08-14 12:07:47 -04:00
.git-blame-ignore-revs .git-blame-ignore-revs: Add change from column limit increase 2024-10-04 18:30:06 -04:00
.gitattributes CI: Add Crowdin Synchronization 2021-11-25 20:59:11 +11:00
.gitignore .gitignore: Remove UI exclusion 2025-01-27 17:06:18 -05:00
.gitmodules cmake: Update cross-platform build project management for Windows 2024-08-20 16:00:21 -04:00
.mailmap Update copyrights/names 2023-05-20 01:31:18 -07:00
.swift-format cmake: Add Xcode component to CMake build framework 3.0 2023-03-26 18:20:38 -04:00
AUTHORS Update translations from Crowdin 2024-12-06 23:21:55 +00:00
buildspec.json CI: Update deps to 2024-09-12 release 2024-09-26 13:14:53 -04:00
CMakeLists.txt cmake: Update main CMakeLists file to use refactored frontend 2025-01-08 17:33:13 +01:00
CMakePresets.json CI: Use Windows 11 SDK 10.0.22621.0 2024-09-13 19:08:22 -04:00
COC.rst Revert "docs: Rename Code of Conduct to fix GitHub detection" 2021-08-07 20:40:29 +10:00
COMMITMENT Add GPL Cooperation Commitment to base directory 2019-01-24 02:02:49 -05:00
CONTRIBUTING.rst CONTRIBUTING.rst: Update for 120 column limit 2024-10-16 13:29:47 -04:00
COPYING COPYING: Use license file from gnu.org 2021-10-24 00:35:27 -07:00
INSTALL Update INSTALL 2018-07-14 08:21:00 +01:00
README.rst README.rst: Add SAST Tools section 2024-06-04 18:37:44 -04:00

OBS Studio <https://obsproject.com>
===================================

.. image:: https://github.com/obsproject/obs-studio/actions/workflows/push.yaml/badge.svg?branch=master
   :alt: OBS Studio Build Status - GitHub Actions
   :target: https://github.com/obsproject/obs-studio/actions/workflows/push.yaml?query=branch%3Amaster

.. image:: https://badges.crowdin.net/obs-studio/localized.svg
   :alt: OBS Studio Translation Project Progress
   :target: https://crowdin.com/project/obs-studio

.. image:: https://img.shields.io/discord/348973006581923840.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2
   :alt: OBS Studio Discord Server
   :target: https://obsproject.com/discord

What is OBS Studio?
-------------------

OBS Studio is software designed for capturing, compositing, encoding,
recording, and streaming video content, efficiently.

It's distributed under the GNU General Public License v2 (or any later
version) - see the accompanying COPYING file for more details.

Quick Links
-----------

- Website: https://obsproject.com

- Help/Documentation/Guides: https://github.com/obsproject/obs-studio/wiki

- Forums: https://obsproject.com/forum/

- Build Instructions: https://github.com/obsproject/obs-studio/wiki/Install-Instructions

- Developer/API Documentation: https://obsproject.com/docs

- Donating/backing/sponsoring: https://obsproject.com/contribute

- Bug Tracker: https://github.com/obsproject/obs-studio/issues

Contributing
------------

- If you would like to help fund or sponsor the project, you can do so
  via `Patreon <https://www.patreon.com/obsproject>`_, `OpenCollective
  <https://opencollective.com/obsproject>`_, or `PayPal
  <https://www.paypal.me/obsproject>`_.  See our `contribute page
  <https://obsproject.com/contribute>`_ for more information.

- If you wish to contribute code to the project, please make sure to
  read the coding and commit guidelines:
  https://github.com/obsproject/obs-studio/blob/master/CONTRIBUTING.rst

- Developer/API documentation can be found here:
  https://obsproject.com/docs

- If you wish to contribute translations, do not submit pull requests.
  Instead, please use Crowdin.  For more information read this page:
  https://obsproject.com/wiki/How-To-Contribute-Translations-For-OBS

- Other ways to contribute are by helping people out with support on
  our forums or in our community chat.  Please limit support to topics
  you fully understand -- bad advice is worse than no advice.  When it
  comes to something that you don't fully know or understand, please
  defer to the official help or official channels.


SAST Tools
----------

`PVS-Studio <https://pvs-studio.com/pvs-studio/?utm_source=website&utm_medium=github&utm_campaign=open_source>`_ - static analyzer for C, C++, C#, and Java code.