Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 44 additions & 45 deletions src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/entry_handler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
2 changes: 1 addition & 1 deletion src/input.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions src/platform/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -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<deinit_t> start();
Expand Down
4 changes: 2 additions & 2 deletions src/platform/linux/publish.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand All @@ -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;
}

Expand Down
2 changes: 1 addition & 1 deletion src/platform/macos/av_audio.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
// lib includes
#include "third-party/TPCircularBuffer/TPCircularBuffer.h"

#define kBufferLength 4096
static const int kBufferLength = 4096;

@interface AVAudio: NSObject <AVCaptureAudioDataOutputSampleBufferDelegate> {
@public
Expand Down
4 changes: 2 additions & 2 deletions src/platform/macos/av_video.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ struct CaptureSession {
NSCondition *captureStopped;
};

@interface AVVideo: NSObject <AVCaptureVideoDataOutputSampleBufferDelegate>
static const int kMaxDisplays = 32;

#define kMaxDisplays 32
@interface AVVideo: NSObject <AVCaptureVideoDataOutputSampleBufferDelegate>

@property (nonatomic, assign) CGDirectDisplayID displayID;
@property (nonatomic, assign) CMTime minFrameDuration;
Expand Down
2 changes: 1 addition & 1 deletion src/platform/macos/publish.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)),
Expand Down
2 changes: 1 addition & 1 deletion src/platform/windows/audio.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
7 changes: 3 additions & 4 deletions src/platform/windows/publish.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -107,7 +106,7 @@ namespace platf::publish {
static int service(bool enable, PDNS_SERVICE_INSTANCE &existing_instance) {
auto alarm = safe::make_alarm<PDNS_SERVICE_INSTANCE>();

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;
Expand Down
30 changes: 15 additions & 15 deletions src/stream.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion tools/sunshinesvc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Loading