Sunshine master
Self-hosted game stream host for Moonlight.
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 {
17 unsupported = 0U,
18 sdk_11_0 = 1100U,
19 sdk_12_0 = 1200U,
20 sdk_13_0 = 1300U,
21 };
22
29 constexpr std::uint32_t decode_nvenc_driver_version(std::uint32_t version) {
30 return (version >> 4U) * 100U + (version & 0x0FU);
31 }
32
39 constexpr nvenc_sdk_version select_nvenc_sdk_version(std::uint32_t max_version) {
40 using enum nvenc_sdk_version;
41 if (max_version >= std::to_underlying(sdk_13_0)) {
42 return sdk_13_0;
43 }
44 if (max_version >= std::to_underlying(sdk_12_0)) {
45 return sdk_12_0;
46 }
47 if (max_version >= std::to_underlying(sdk_11_0)) {
48 return sdk_11_0;
49 }
50 return unsupported;
51 }
52
53} // 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.
@ unsupported
No compatible SDK implementation is available.
@ sdk_13_0
Video Codec SDK 13.0.
@ sdk_11_0
Video Codec SDK 11.0.
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:29
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:39