diff --git a/src/nvhttp.cpp b/src/nvhttp.cpp index 11c32bdd..94855109 100644 --- a/src/nvhttp.cpp +++ b/src/nvhttp.cpp @@ -341,7 +341,7 @@ namespace nvhttp { launch_session->gcmap = util::from_view(get_arg(args, "gcmap", "0")); launch_session->enable_hdr = util::from_view(get_arg(args, "hdrMode", "0")); launch_session->virtual_display = util::from_view(get_arg(args, "virtualDisplay", "0")); - launch_session->scale_factor = util::from_view(get_arg(args, "scale_factor", "100")); + launch_session->scale_factor = util::from_view(get_arg(args, "scaleFactor", "100")); // Encrypted RTSP is enabled with client reported corever >= 1 auto corever = util::from_view(get_arg(args, "corever", "0")); diff --git a/src/process.cpp b/src/process.cpp index a3fd89cc..54bcb050 100644 --- a/src/process.cpp +++ b/src/process.cpp @@ -178,10 +178,13 @@ namespace proc { uint32_t render_height = client_height; if (launch_session->scale_factor != 100) { + render_width *= ((float)launch_session->scale_factor / 100); + render_height *= ((float)launch_session->scale_factor / 100); + // Chop the last bit to ensure the scaled resolution is even numbered // Most odd resolution won't work well - render_width *= 100 / launch_session->scale_factor & ~1; - render_height *= 100 / launch_session->scale_factor & ~1; + render_width &= ~1; + render_height &= ~1; } // Add Stream-specific environment variables @@ -261,7 +264,7 @@ namespace proc { std::wstring currentPrimaryDisplayName = VDISPLAY::getPrimaryDisplay(); // Apply display settings - VDISPLAY::changeDisplaySettings(vdisplayName.c_str(), launch_session->width, launch_session->height, launch_session->fps); + VDISPLAY::changeDisplaySettings(vdisplayName.c_str(), render_width, render_height, launch_session->fps); // Determine if we need to set the virtual display as primary bool shouldSetPrimary = false;