Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

obs-ffmpeg: Add native non-texture NVENC encoder #10122

Merged
merged 3 commits into from
Mar 31, 2024

Conversation

derrod
Copy link
Member

@derrod derrod commented Jan 21, 2024

Description

Replaces the FFmpeg fallback in the "new" NVENC encoder with a native non-texture encoder.

Also adds support for the non-texture encoder on Linux.

Superseedes/Closes #8794

Motivation and Context

The FFmpeg fallback sucks I hate it.

How Has This Been Tested?

Tested H.264 encoder on my 4090 with the latest driver on Windows and Linux.

Types of changes

  • New feature (non-breaking change which adds functionality)

Checklist:

  • My code has been run through clang-format.
  • I have read the contributing document.
  • My code is not on the master branch.
  • The code has been tested.
  • All commit messages are properly formatted and commits squashed where appropriate.
  • I have included updates to all appropriate documentation.

@derrod derrod added Seeking Testers Build artifacts on CI Windows Affects Windows labels Jan 21, 2024
@derrod derrod added the Linux Affects Linux label Jan 22, 2024
@derrod
Copy link
Member Author

derrod commented Jan 22, 2024

Added another commit to add support for Linux using the new non-texture encoder.

Tested on openSUSE Tumbleweed with NVIDIA 545.0 drivers.

@derrod derrod changed the title obs-ffmpeg: Replace NVENC FFmpeg fallback with native encoder obs-ffmpeg: Add native non-texture NVENC encoder Jan 22, 2024
@derrod derrod requested a review from Lain-B January 22, 2024 00:13
@derrod derrod force-pushed the nvenc-non-texture-encoder branch 2 times, most recently from abb1c14 to 298fec2 Compare January 22, 2024 00:37
@derrod derrod mentioned this pull request Jan 22, 2024
6 tasks
@derrod derrod force-pushed the nvenc-non-texture-encoder branch 2 times, most recently from c5bd3ce to 7662f9e Compare January 22, 2024 23:59
@derrod
Copy link
Member Author

derrod commented Jan 25, 2024

Updated to use a CUDA array, this variant does not have Linux support right now as I need time to re-test that.

@derrod derrod force-pushed the nvenc-non-texture-encoder branch 4 times, most recently from f488eb8 to 9197dfe Compare January 26, 2024 04:55
@derrod derrod removed the Linux Affects Linux label Jan 26, 2024
@derrod
Copy link
Member Author

derrod commented Jan 26, 2024

Linux support is back, now based on the changes I made to the texture encoder, hopefully it works.

@derrod derrod added the Linux Affects Linux label Jan 26, 2024
@derrod derrod force-pushed the nvenc-non-texture-encoder branch 2 times, most recently from 3ab4df1 to 110366f Compare January 27, 2024 03:03
@kkartaltepe
Copy link
Collaborator

kkartaltepe commented Jan 28, 2024

Looks good on my linux machine with a 1070 for hevc and h264

@derrod
Copy link
Member Author

derrod commented Feb 8, 2024

Updated to loosen the NVENC SDK version requirement to allow 12.0 and 12.1 as either version will work fine (no changes that affect OBS) and even some rolling release distros cough openSUSE cough do not seem to ship the latest headers for some reason.

@derrod derrod force-pushed the nvenc-non-texture-encoder branch 3 times, most recently from c62f6a2 to 38560bc Compare February 8, 2024 21:32
@tt2468
Copy link
Member

tt2468 commented Feb 11, 2024

Working very well in over a week worth of almost constant testing of 1 or more sessions.

System:

  • Ubuntu 22.04
  • NVIDIA 535.104.05
  • Latest nv-codec-headers from ffmpeg github
  • NVIDIA RTX 4000 Ada SFF

Tested this non-texture version and the texture version.

@derrod derrod force-pushed the nvenc-non-texture-encoder branch 2 times, most recently from 9a7a060 to b34340f Compare February 14, 2024 02:39
@derrod derrod force-pushed the nvenc-non-texture-encoder branch from 8d78c6c to 5aa37e9 Compare March 8, 2024 23:15
@derrod derrod force-pushed the nvenc-non-texture-encoder branch from 5aa37e9 to e0428e2 Compare March 9, 2024 16:51
@Lain-B Lain-B merged commit c1f0f89 into obsproject:master Mar 31, 2024
14 checks passed
@derrod derrod deleted the nvenc-non-texture-encoder branch March 31, 2024 09:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Linux Affects Linux Seeking Testers Build artifacts on CI Windows Affects Windows
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants