jpark37
9aacc99b3e
libobs: Separate textures for YUV output, fix chroma
The shaders to pack YUV information into the same texture were rather complicated and suffering precision issues. Breaking them up into separate textures makes the shaders much simpler and avoids having to compute large integer offsets. Unfortunately, the code to handle multiple textures is not as pleasant, but at least the NV12 rendering path is no longer separate. In addition, write chroma samples to "standard" offsets. For I444, there's no difference, but I420/NV12 formats now have chroma shifted to the left as 4:2:0 is shown in the H.264 specification. Intel GPA, SetStablePowerState, Intel HD Graphics 530 Expect speed incrase: I420: 844 us -> 493 us (254 us + 190 us + 274 us) I444: 837 us -> 747 us (258 us + 276 us + 272 us) NV12: 450 us -> 368 us (319 us + 168 us) Expect no change: NV12 (HW): 580 (481 us + 166 us) us -> 588 us (468 us + 247 us) RGB: 359 us -> 387 us Fixes https://obsproject.com/mantis/view.php?id=624 Fixes https://obsproject.com/mantis/view.php?id=1512
OBS Studio <https://obsproject.com> =================================== .. image:: https://travis-ci.org/obsproject/obs-studio.svg?branch=master :alt: OBS Studio Build Status - Travis CI :target: https://travis-ci.org/obsproject/obs-studio .. image:: https://ci.appveyor.com/api/projects/status/github/obsproject/obs-studio?branch=master&svg=true :alt: OBS Studio Build Status - AppVeyor CI :target: https://ci.appveyor.com/project/jp9000/obs-studio/branch/master .. image:: https://dev.azure.com/obsjim/obsjim/_apis/build/status/obsproject.obs-studio?branchName=master :alt: OBS Studio Build Status - Azure Pipelines :target: https://dev.azure.com/obsjim/obsjim/_build/latest?definitionId=1&branchName=master .. image:: https://discordapp.com/api/guilds/348973006581923840/widget.png?style=shield :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://obsproject.com/mantis/ (Note: The bug tracker is linked to forum accounts. To use the bug tracker, log in to a forum account) 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 thread: https://obsproject.com/forum/threads/how-to-contribute-translations-for-obs.16327/ - 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.
Description
Languages
C
56%
C++
36.8%
CMake
3%
Objective-C++
1.5%
Objective-C
1.3%
Other
1.4%