diff --git a/src/config.cpp b/src/config.cpp index c320ed6dc..175f70300 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -40,11 +40,10 @@ namespace fs = std::filesystem; using namespace std::literals; -#define CA_DIR "credentials" -#define PRIVATE_KEY_FILE CA_DIR "/cakey.pem" -#define CERTIFICATE_FILE CA_DIR "/cacert.pem" - -#define APPS_JSON_PATH platf::appdata().string() + "/apps.json" +constexpr auto CA_DIR = "credentials"; +const std::string PRIVATE_KEY_FILE = std::string(CA_DIR) + "/cakey.pem"; +const std::string CERTIFICATE_FILE = std::string(CA_DIR) + "/cacert.pem"; +const std::string APPS_JSON_PATH = platf::appdata().string() + "/apps.json"; namespace config { @@ -68,46 +67,46 @@ namespace config { namespace amd { #if !defined(_WIN32) || defined(DOXYGEN) - // values accurate as of 27/12/2022, but aren't strictly necessary for MacOS build - #define AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_SPEED 100 - #define AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_QUALITY 30 - #define AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_BALANCED 70 - #define AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED 10 - #define AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY 0 - #define AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED 5 - #define AMF_VIDEO_ENCODER_QUALITY_PRESET_SPEED 1 - #define AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY 2 - #define AMF_VIDEO_ENCODER_QUALITY_PRESET_BALANCED 0 - #define AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_CONSTANT_QP 0 - #define AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_CBR 3 - #define AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR 2 - #define AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR 1 - #define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CONSTANT_QP 0 - #define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR 3 - #define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR 2 - #define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR 1 - #define AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CONSTANT_QP 0 - #define AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CBR 1 - #define AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR 2 - #define AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR 3 - #define AMF_VIDEO_ENCODER_AV1_USAGE_TRANSCODING 0 - #define AMF_VIDEO_ENCODER_AV1_USAGE_LOW_LATENCY 1 - #define AMF_VIDEO_ENCODER_AV1_USAGE_ULTRA_LOW_LATENCY 2 - #define AMF_VIDEO_ENCODER_AV1_USAGE_WEBCAM 3 - #define AMF_VIDEO_ENCODER_AV1_USAGE_LOW_LATENCY_HIGH_QUALITY 5 - #define AMF_VIDEO_ENCODER_HEVC_USAGE_TRANSCODING 0 - #define AMF_VIDEO_ENCODER_HEVC_USAGE_ULTRA_LOW_LATENCY 1 - #define AMF_VIDEO_ENCODER_HEVC_USAGE_LOW_LATENCY 2 - #define AMF_VIDEO_ENCODER_HEVC_USAGE_WEBCAM 3 - #define AMF_VIDEO_ENCODER_HEVC_USAGE_LOW_LATENCY_HIGH_QUALITY 5 - #define AMF_VIDEO_ENCODER_USAGE_TRANSCODING 0 - #define AMF_VIDEO_ENCODER_USAGE_ULTRA_LOW_LATENCY 1 - #define AMF_VIDEO_ENCODER_USAGE_LOW_LATENCY 2 - #define AMF_VIDEO_ENCODER_USAGE_WEBCAM 3 - #define AMF_VIDEO_ENCODER_USAGE_LOW_LATENCY_HIGH_QUALITY 5 - #define AMF_VIDEO_ENCODER_UNDEFINED 0 - #define AMF_VIDEO_ENCODER_CABAC 1 - #define AMF_VIDEO_ENCODER_CALV 2 + // values accurate as of 27/12/2022, but aren't strictly necessary for MacOS build + constexpr int AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_SPEED = 100; + constexpr int AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_QUALITY = 30; + constexpr int AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_BALANCED = 70; + constexpr int AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED = 10; + constexpr int AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY = 0; + constexpr int AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED = 5; + constexpr int AMF_VIDEO_ENCODER_QUALITY_PRESET_SPEED = 1; + constexpr int AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY = 2; + constexpr int AMF_VIDEO_ENCODER_QUALITY_PRESET_BALANCED = 0; + constexpr int AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_CONSTANT_QP = 0; + constexpr int AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_CBR = 3; + constexpr int AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR = 2; + constexpr int AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR = 1; + constexpr int AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CONSTANT_QP = 0; + constexpr int AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR = 3; + constexpr int AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR = 2; + constexpr int AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR = 1; + constexpr int AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CONSTANT_QP = 0; + constexpr int AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CBR = 1; + constexpr int AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR = 2; + constexpr int AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR = 3; + constexpr int AMF_VIDEO_ENCODER_AV1_USAGE_TRANSCODING = 0; + constexpr int AMF_VIDEO_ENCODER_AV1_USAGE_LOW_LATENCY = 1; + constexpr int AMF_VIDEO_ENCODER_AV1_USAGE_ULTRA_LOW_LATENCY = 2; + constexpr int AMF_VIDEO_ENCODER_AV1_USAGE_WEBCAM = 3; + constexpr int AMF_VIDEO_ENCODER_AV1_USAGE_LOW_LATENCY_HIGH_QUALITY = 5; + constexpr int AMF_VIDEO_ENCODER_HEVC_USAGE_TRANSCODING = 0; + constexpr int AMF_VIDEO_ENCODER_HEVC_USAGE_ULTRA_LOW_LATENCY = 1; + constexpr int AMF_VIDEO_ENCODER_HEVC_USAGE_LOW_LATENCY = 2; + constexpr int AMF_VIDEO_ENCODER_HEVC_USAGE_WEBCAM = 3; + constexpr int AMF_VIDEO_ENCODER_HEVC_USAGE_LOW_LATENCY_HIGH_QUALITY = 5; + constexpr int AMF_VIDEO_ENCODER_USAGE_TRANSCODING = 0; + constexpr int AMF_VIDEO_ENCODER_USAGE_ULTRA_LOW_LATENCY = 1; + constexpr int AMF_VIDEO_ENCODER_USAGE_LOW_LATENCY = 2; + constexpr int AMF_VIDEO_ENCODER_USAGE_WEBCAM = 3; + constexpr int AMF_VIDEO_ENCODER_USAGE_LOW_LATENCY_HIGH_QUALITY = 5; + constexpr int AMF_VIDEO_ENCODER_UNDEFINED = 0; + constexpr int AMF_VIDEO_ENCODER_CABAC = 1; + constexpr int AMF_VIDEO_ENCODER_CALV = 2; #else #ifdef _GLIBCXX_USE_C99_INTTYPES #undef _GLIBCXX_USE_C99_INTTYPES diff --git a/src/entry_handler.cpp b/src/entry_handler.cpp index 8c7412731..02afcb061 100644 --- a/src/entry_handler.cpp +++ b/src/entry_handler.cpp @@ -223,7 +223,7 @@ namespace service_ctrl { } while (sc.query_service_status(status) && status.dwCurrentState == SERVICE_START_PENDING); if (status.dwCurrentState != SERVICE_RUNNING) { - BOOST_LOG(error) << SERVICE_NAME " failed to start: "sv << status.dwWin32ExitCode; + BOOST_LOG(error) << std::format("{} failed to start: {}"sv, platf::SERVICE_NAME, status.dwWin32ExitCode); return false; } diff --git a/src/input.cpp b/src/input.cpp index 3c861fb12..c3bca20ab 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -30,7 +30,7 @@ extern "C" { // Win32 WHEEL_DELTA constant #ifndef WHEEL_DELTA - #define WHEEL_DELTA 120 +constexpr int WHEEL_DELTA = 120; #endif using namespace std::literals; diff --git a/src/platform/common.h b/src/platform/common.h index 274bbbdc8..6d38c00da 100644 --- a/src/platform/common.h +++ b/src/platform/common.h @@ -834,8 +834,8 @@ namespace platf { */ platform_caps::caps_t get_capabilities(); -#define SERVICE_NAME "Sunshine" -#define SERVICE_TYPE "_nvstream._tcp" + constexpr auto SERVICE_NAME = "Sunshine"; + constexpr auto SERVICE_TYPE = "_nvstream._tcp"; namespace publish { [[nodiscard]] std::unique_ptr start(); diff --git a/src/platform/linux/publish.cpp b/src/platform/linux/publish.cpp index 4ea9a8bca..525da5839 100644 --- a/src/platform/linux/publish.cpp +++ b/src/platform/linux/publish.cpp @@ -345,7 +345,7 @@ namespace platf::publish { avahi::PROTO_UNSPEC, avahi::PublishFlags(0), name.get(), - SERVICE_TYPE, + platf::SERVICE_TYPE, nullptr, nullptr, net::map_port(nvhttp::PORT_HTTP), @@ -366,7 +366,7 @@ namespace platf::publish { return; } - BOOST_LOG(error) << "Failed to add "sv << SERVICE_TYPE << " service: "sv << avahi::strerror(ret); + BOOST_LOG(error) << "Failed to add "sv << platf::SERVICE_TYPE << " service: "sv << avahi::strerror(ret); return; } diff --git a/src/platform/macos/av_audio.h b/src/platform/macos/av_audio.h index 9ef1cca29..3fcf3027b 100644 --- a/src/platform/macos/av_audio.h +++ b/src/platform/macos/av_audio.h @@ -10,7 +10,7 @@ // lib includes #include "third-party/TPCircularBuffer/TPCircularBuffer.h" -#define kBufferLength 4096 +static const int kBufferLength = 4096; @interface AVAudio: NSObject { @public diff --git a/src/platform/macos/av_video.h b/src/platform/macos/av_video.h index 4ff24609f..b2fa5d4b2 100644 --- a/src/platform/macos/av_video.h +++ b/src/platform/macos/av_video.h @@ -13,9 +13,9 @@ struct CaptureSession { NSCondition *captureStopped; }; -@interface AVVideo: NSObject +static const int kMaxDisplays = 32; -#define kMaxDisplays 32 +@interface AVVideo: NSObject @property (nonatomic, assign) CGDirectDisplayID displayID; @property (nonatomic, assign) CMTime minFrameDuration; diff --git a/src/platform/macos/publish.cpp b/src/platform/macos/publish.cpp index b962b1d21..982515ede 100644 --- a/src/platform/macos/publish.cpp +++ b/src/platform/macos/publish.cpp @@ -108,7 +108,7 @@ namespace platf::publish { 0, // flags 0, // interfaceIndex nullptr, // name - SERVICE_TYPE, + platf::SERVICE_TYPE, nullptr, // domain nullptr, // host htons(net::map_port(nvhttp::PORT_HTTP)), diff --git a/src/platform/windows/audio.cpp b/src/platform/windows/audio.cpp index b26f91a81..aa7a1e04d 100644 --- a/src/platform/windows/audio.cpp +++ b/src/platform/windows/audio.cpp @@ -31,7 +31,7 @@ DEFINE_PROPERTYKEY(PKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0 DEFINE_PROPERTYKEY(PKEY_DeviceInterface_FriendlyName, 0x026e516e, 0xb814, 0x414b, 0x83, 0xcd, 0x85, 0x6d, 0x6f, 0xef, 0x48, 0x22, 2); #if defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) - #define STEAM_DRIVER_SUBDIR L"x64" +constexpr auto STEAM_DRIVER_SUBDIR = L"x64"; #endif namespace { diff --git a/src/platform/windows/publish.cpp b/src/platform/windows/publish.cpp index a96e14ca8..9635e520c 100644 --- a/src/platform/windows/publish.cpp +++ b/src/platform/windows/publish.cpp @@ -37,9 +37,8 @@ extern "C" { constexpr auto DNS_QUERY_RESULTS_VERSION1 = 0x1; #endif -#define SERVICE_DOMAIN "local" - - constexpr auto SERVICE_TYPE_DOMAIN = SV(SERVICE_TYPE "." SERVICE_DOMAIN); + constexpr auto SERVICE_DOMAIN = "local"; + const auto SERVICE_TYPE_DOMAIN = std::format("{}.{}"sv, platf::SERVICE_TYPE, SERVICE_DOMAIN); #ifndef __MINGW32__ typedef struct _DNS_SERVICE_INSTANCE { @@ -107,7 +106,7 @@ namespace platf::publish { static int service(bool enable, PDNS_SERVICE_INSTANCE &existing_instance) { auto alarm = safe::make_alarm(); - std::wstring domain {SERVICE_TYPE_DOMAIN.data(), SERVICE_TYPE_DOMAIN.size()}; + std::wstring domain = utf_utils::from_utf8(SERVICE_TYPE_DOMAIN); auto hostname = platf::get_host_name(); auto name = utf_utils::from_utf8(net::mdns_instance_name(hostname) + '.') + domain; diff --git a/src/stream.cpp b/src/stream.cpp index b92e579e7..b10307e99 100644 --- a/src/stream.cpp +++ b/src/stream.cpp @@ -34,21 +34,21 @@ extern "C" { #include "thread_safe.h" #include "utility.h" -#define IDX_START_A 0 -#define IDX_START_B 1 -#define IDX_INVALIDATE_REF_FRAMES 2 -#define IDX_LOSS_STATS 3 -#define IDX_INPUT_DATA 5 -#define IDX_RUMBLE_DATA 6 -#define IDX_TERMINATION 7 -#define IDX_PERIODIC_PING 8 -#define IDX_REQUEST_IDR_FRAME 9 -#define IDX_ENCRYPTED 10 -#define IDX_HDR_MODE 11 -#define IDX_RUMBLE_TRIGGER_DATA 12 -#define IDX_SET_MOTION_EVENT 13 -#define IDX_SET_RGB_LED 14 -#define IDX_SET_ADAPTIVE_TRIGGERS 15 +constexpr int IDX_START_A = 0; +constexpr int IDX_START_B = 1; +constexpr int IDX_INVALIDATE_REF_FRAMES = 2; +constexpr int IDX_LOSS_STATS = 3; +constexpr int IDX_INPUT_DATA = 5; +constexpr int IDX_RUMBLE_DATA = 6; +constexpr int IDX_TERMINATION = 7; +constexpr int IDX_PERIODIC_PING = 8; +constexpr int IDX_REQUEST_IDR_FRAME = 9; +constexpr int IDX_ENCRYPTED = 10; +constexpr int IDX_HDR_MODE = 11; +constexpr int IDX_RUMBLE_TRIGGER_DATA = 12; +constexpr int IDX_SET_MOTION_EVENT = 13; +constexpr int IDX_SET_RGB_LED = 14; +constexpr int IDX_SET_ADAPTIVE_TRIGGERS = 15; static const short packetTypes[] = { 0x0305, // Start A diff --git a/tools/sunshinesvc.cpp b/tools/sunshinesvc.cpp index 4f3b1a2f4..73d871b86 100644 --- a/tools/sunshinesvc.cpp +++ b/tools/sunshinesvc.cpp @@ -18,7 +18,7 @@ SERVICE_STATUS service_status; HANDLE stop_event; HANDLE session_change_event; -#define SERVICE_NAME "SunshineService" +constexpr auto SERVICE_NAME = "SunshineService"; DWORD WINAPI HandlerEx(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext) { switch (dwControl) {