-
-
Notifications
You must be signed in to change notification settings - Fork 7.6k
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
NVENC Refactor #10536
base: master
Are you sure you want to change the base?
NVENC Refactor #10536
Conversation
e546c7a
to
af3ab45
Compare
Updated with some cleanup and included a53e4b1 to see if Flatpak will work. |
c23552d
to
981d3a9
Compare
Somehow this never uses the texture encoder in my testing so far
This always prints when I start recording. Note that I do use NV12, also tried different settings, nothing helped Also the Lossless mode is broken
which is easy to fix but would be nice if OBS could automatically disable (& hide if possible) the adaptive quantization option if lossless is selected but even after disabling that it does error out with
|
Please see #10567. |
I should be able to fix the lossless thing relatively easily. And as Ryan mentioned texture encoders will need #10567 merged to work again, but that should be done soon™ so I can rebase this PR. |
Can confirm it works with this |
Linux texture encoding and lossless mode for H.264 should work again now. |
d6a4b06
to
de34c28
Compare
This code is beautiful |
* So don't blame me for that. */ | ||
|
||
#define APPLY_BIT_OPT(opt_name, bits) \ | ||
if (strcmp(opt->name, #opt_name) == 0) { \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why can't this be an inline function (per the comment above)? The macro is used quite often below which means that none of those steps can be debugged (except in raw assembly)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can't get a pointer to a specific value in a bitfield. Trying to do so is actually a compiler error: https://godbolt.org/z/or31z8saW
I'm also not really concerned about the debugability of setting a value on a struct member. This is a trivial macro to save some boilerplate that exists in the same file and doesn't do any recursion. It can be easily expaned in-place by your IDE if you really need to step through it.
1c96fbf
to
06be1b9
Compare
I checked the operation of B-frames as Reference via Elecard StramEye. For H.264 and HEVC everything works correctly. Disabled/middle/each modes disableBadapt=1 disabled adaptive b-frames for P6,7 presets for H.264. Thank you! I think people may have difficulty where to take the arguments. Maybe add information in the manuals? |
Being able to set it to 0 is valid, and it should set it to 0 in the NVENC configuration as well. NVIDIA limits the bitrate in target quality mode even with max bitrate set to 0, this limit is based on the level. Seems for HEVC this ends up being much lower than H.264. It's one of the reasons we kept CQP around. |
3262366
to
7252f2b
Compare
Description
Note
This pull request is targeted for the next major version as it breaks some backwards compatibility (mainly Kepler GPUs).
obs-nvenc
moduleFeatures
obs-nvenc-test[.exe]
now works on both Linux and Windows* Current selection of options is mostly for experimentation, it will probably be cut down to only a few that are sensible but don't warrant their own UI elements.
Motivation and Context
How Has This Been Tested?
Note
This plugin is only compatible with the current cmake revision (3.0) on Linux and Windows, and will not work with legacy cmake.
Types of changes
Checklist: