Sunshine0.0.5917
Sunshine 0.0.5917
Self-hosted game stream host for Moonlight.
Loading...
Searching...
No Matches
nvenc_version.h
Go to the documentation of this file.
1
5#pragma once
6
7// standard includes
8#include <cstdint>
9#include <utility>
10
11namespace nvenc {
12
16 enum class nvenc_sdk_version : std::uint32_t {
18 sdk_11_0 = 1100U,
19 sdk_12_0 = 1200U,
20 sdk_13_0 = 1300U,
21 sdk_13_1 = 1301U,
22 };
23
30 constexpr std::uint32_t decode_nvenc_driver_version(std::uint32_t version) {
31 return (version >> 4U) * 100U + (version & 0x0FU);
32 }
33
40 constexpr nvenc_sdk_version select_nvenc_sdk_version(std::uint32_t max_version) {
41 using enum nvenc_sdk_version;
42 if (max_version >= std::to_underlying(sdk_13_1)) {
43 return sdk_13_1;
44 }
45 if (max_version >= std::to_underlying(sdk_13_0)) {
46 return sdk_13_0;
47 }
48 if (max_version >= std::to_underlying(sdk_12_0)) {
49 return sdk_12_0;
50 }
51 if (max_version >= std::to_underlying(sdk_11_0)) {
52 return sdk_11_0;
53 }
54 return unsupported;
55 }
56
57} // namespace nvenc
Standalone NVENC encoder.
Definition nvenc_base.cpp:185
nvenc_sdk_version
NVENC SDK implementations compiled into Sunshine.
Definition nvenc_version.h:16
@ sdk_12_0
Video Codec SDK 12.0.
Definition nvenc_version.h:19
@ unsupported
No compatible SDK implementation is available.
Definition nvenc_version.h:17
@ sdk_13_0
Video Codec SDK 13.0.
Definition nvenc_version.h:20
@ sdk_13_1
Video Codec SDK 13.1.
Definition nvenc_version.h:21
@ sdk_11_0
Video Codec SDK 11.0.
Definition nvenc_version.h:18
constexpr std::uint32_t decode_nvenc_driver_version(std::uint32_t version)
Convert the packed driver API version to a comparable integer.
Definition nvenc_version.h:30
constexpr nvenc_sdk_version select_nvenc_sdk_version(std::uint32_t max_version)
Select the newest compiled SDK supported by the installed driver.
Definition nvenc_version.h:40