Add Missing Encoder Check on Startup/Profile load - #11340
Conversation
67244b2 to
75b14b1
Compare
75b14b1 to
4a66a47
Compare
4a66a47 to
c25ecb2
Compare
e97f60f to
ecfc615
Compare
|
I'd like to adjust the formatting of this a little bit to group the errors with the encoder it's for There were errors with one or more encoders: obs_nvenc_hevc_texNVENC check failed with reason: Outdated driver (code: outdated_driver) obs_nvenc_anotherMiscellaneous probme (code: bad_nibbles) See the Knowledge Base Article for further information <li>
<h3></h3>
<code><code>
</li> |
5fbc505 to
042ffc6
Compare
|
Yeah the error string for NVENC originally included the code as well and I forgot to remove that. |
e176e85 to
f7603ef
Compare
f7603ef to
5fe1aa3
Compare
5fe1aa3 to
4f9732a
Compare
4f9732a to
53619d4
Compare
dda0e4e to
41708e6
Compare
|
This has a merge conflict. |
41708e6 to
9d88fdf
Compare
9d88fdf to
508fdd8
Compare
| static auto args_deleter = [](os_process_args_t *args) { | ||
| os_process_args_destroy(args); | ||
| }; |
There was a problem hiding this comment.
Why use a lambda instead of a simple function here?
| using CheckResult = std::optional<std::pair<QString, QString>>; | ||
|
|
||
| #ifndef __APPLE__ | ||
| static CheckResult CheckNVENCInternal(std::unordered_set<std::string_view> &missing_encoders) |
There was a problem hiding this comment.
static is superfluous for functions in an anonymous namespace (functions have no storage and the namespace gives them local visibility already).
| } | ||
| } | ||
|
|
||
| /* All other specific failures of the test binary */ |
There was a problem hiding this comment.
| /* All other specific failures of the test binary */ | |
| // All other specific failures of the test binary |
| /* Finally, if everything else looks good but the encoder missing is AV1, and AV1 is not supported on any GPUs, | ||
| * that's probably the issue the user is having (for example, when copying a profile from another machine). */ |
There was a problem hiding this comment.
| /* Finally, if everything else looks good but the encoder missing is AV1, and AV1 is not supported on any GPUs, | |
| * that's probably the issue the user is having (for example, when copying a profile from another machine). */ | |
| // Finally, if everything else looks good but the encoder missing is AV1, and AV1 is not supported on any GPUs, | |
| // that's probably the issue the user is having (for example, when copying a profile from another machine). |
| static CheckResult CheckX264() | ||
| { | ||
| static const bool module_loaded = obs_get_module("obs-x264") != nullptr; | ||
| /* This should be the only failure mode possible here. */ |
There was a problem hiding this comment.
| /* This should be the only failure mode possible here. */ | |
| // This should be the only failure mode possible here. |


Description
Adds additional checks to the nvenc test binary, and uses it to show a descriptive error message on startup if NVENC was selected and is now missing.
Example:

Motivation and Context
Want to make it more obvious to users why NVENC has gone missing, especially those with Kepler GPUs.
How Has This Been Tested?
Tested with modifications to the nvenc test binary to produce various error codes.
Types of changes
Checklist: