From 116e59292af3a76e3d816f147da620e416968115 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Sun, 7 Apr 2024 22:23:32 -0400 Subject: [PATCH 01/35] build(deps): remove libavdevice (#2380) --- docker/clion-toolchain.dockerfile | 1 - docker/debian-bookworm.dockerfile | 1 - docker/debian-bullseye.dockerfile | 1 - docker/ubuntu-22.04.dockerfile | 1 - docs/source/building/linux.rst | 3 --- 5 files changed, 7 deletions(-) diff --git a/docker/clion-toolchain.dockerfile b/docker/clion-toolchain.dockerfile index 3af5dd4f45d..204450bf1c9 100644 --- a/docker/clion-toolchain.dockerfile +++ b/docker/clion-toolchain.dockerfile @@ -33,7 +33,6 @@ apt-get install -y --no-install-recommends \ git \ graphviz \ libayatana-appindicator3-dev \ - libavdevice-dev \ libboost-filesystem-dev=1.74.* \ libboost-locale-dev=1.74.* \ libboost-log-dev=1.74.* \ diff --git a/docker/debian-bookworm.dockerfile b/docker/debian-bookworm.dockerfile index 7f49bb1a493..34cf29bedc9 100644 --- a/docker/debian-bookworm.dockerfile +++ b/docker/debian-bookworm.dockerfile @@ -35,7 +35,6 @@ apt-get install -y --no-install-recommends \ doxygen \ git \ graphviz \ - libavdevice-dev \ libayatana-appindicator3-dev \ libboost-filesystem-dev=1.74.* \ libboost-locale-dev=1.74.* \ diff --git a/docker/debian-bullseye.dockerfile b/docker/debian-bullseye.dockerfile index 5e0667f0180..2a491559083 100644 --- a/docker/debian-bullseye.dockerfile +++ b/docker/debian-bullseye.dockerfile @@ -36,7 +36,6 @@ apt-get install -y --no-install-recommends \ doxygen \ git \ graphviz \ - libavdevice-dev \ libayatana-appindicator3-dev \ libboost-filesystem-dev=1.74.* \ libboost-locale-dev=1.74.* \ diff --git a/docker/ubuntu-22.04.dockerfile b/docker/ubuntu-22.04.dockerfile index f75fd1ee1e5..e02ca1eba91 100644 --- a/docker/ubuntu-22.04.dockerfile +++ b/docker/ubuntu-22.04.dockerfile @@ -36,7 +36,6 @@ apt-get install -y --no-install-recommends \ doxygen \ git \ graphviz \ - libavdevice-dev \ libayatana-appindicator3-dev \ libboost-filesystem-dev=1.74.* \ libboost-locale-dev=1.74.* \ diff --git a/docs/source/building/linux.rst b/docs/source/building/linux.rst index 7bf1af490a6..d263a7d07fd 100644 --- a/docs/source/building/linux.rst +++ b/docs/source/building/linux.rst @@ -15,7 +15,6 @@ Install Requirements sudo apt update && sudo apt install \ build-essential \ cmake \ - libavdevice-dev \ libayatana-appindicator3-dev \ libboost-filesystem-dev \ libboost-locale-dev \ @@ -98,7 +97,6 @@ Install Requirements build-essential \ cmake \ libappindicator3-dev \ - libavdevice-dev \ libboost-filesystem-dev \ libboost-locale-dev \ libboost-log-dev \ @@ -140,7 +138,6 @@ Install Requirements gcc-11 \ g++-11 \ libappindicator3-dev \ - libavdevice-dev \ libboost-filesystem-dev \ libboost-locale-dev \ libboost-log-dev \ From 7e26d2fd3064c6adf3e7a52a275046dd0cf194be Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Mon, 8 Apr 2024 19:17:19 -0400 Subject: [PATCH 02/35] build(tests): ensure tests can be disabled during build (#2386) --- cmake/targets/common.cmake | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/cmake/targets/common.cmake b/cmake/targets/common.cmake index ec7c7cbcf98..094bbca7c20 100644 --- a/cmake/targets/common.cmake +++ b/cmake/targets/common.cmake @@ -56,14 +56,20 @@ endif() # custom compile flags, must be after adding tests +if (NOT BUILD_TESTS) + set(TEST_DIR "") +else() + set(TEST_DIR "${CMAKE_SOURCE_DIR}/tests") +endif() + # src/upnp set_source_files_properties("${CMAKE_SOURCE_DIR}/src/upnp.cpp" - DIRECTORY "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/tests" + DIRECTORY "${CMAKE_SOURCE_DIR}" "${TEST_DIR}" PROPERTIES COMPILE_FLAGS -Wno-pedantic) # third-party/nanors set_source_files_properties("${CMAKE_SOURCE_DIR}/third-party/nanors/rs.c" - DIRECTORY "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/tests" + DIRECTORY "${CMAKE_SOURCE_DIR}" "${TEST_DIR}" PROPERTIES COMPILE_FLAGS "-include deps/obl/autoshim.h -ftree-vectorize") # third-party/ViGEmClient @@ -74,7 +80,7 @@ string(APPEND VIGEM_COMPILE_FLAGS "-Wno-class-memaccess ") string(APPEND VIGEM_COMPILE_FLAGS "-Wno-unused-function ") string(APPEND VIGEM_COMPILE_FLAGS "-Wno-unused-variable ") set_source_files_properties("${CMAKE_SOURCE_DIR}/third-party/ViGEmClient/src/ViGEmClient.cpp" - DIRECTORY "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/tests" + DIRECTORY "${CMAKE_SOURCE_DIR}" "${TEST_DIR}" PROPERTIES COMPILE_DEFINITIONS "UNICODE=1;ERROR_INVALID_DEVICE_OBJECT_PARAMETER=650" COMPILE_FLAGS ${VIGEM_COMPILE_FLAGS}) From 7602fa110c4f7a38bb8f51dbb0c31b3fa63e4fb2 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Tue, 9 Apr 2024 21:40:31 -0400 Subject: [PATCH 03/35] fix(ltray): re-order tray dep search (#2397) --- cmake/compile_definitions/linux.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/compile_definitions/linux.cmake b/cmake/compile_definitions/linux.cmake index 0b545590054..5647dc6b3ea 100644 --- a/cmake/compile_definitions/linux.cmake +++ b/cmake/compile_definitions/linux.cmake @@ -199,13 +199,13 @@ endif() # tray icon if(${SUNSHINE_ENABLE_TRAY}) - pkg_check_modules(APPINDICATOR appindicator3-0.1) + pkg_check_modules(APPINDICATOR ayatana-appindicator3-0.1) if(APPINDICATOR_FOUND) - list(APPEND SUNSHINE_DEFINITIONS TRAY_LEGACY_APPINDICATOR=1) + list(APPEND SUNSHINE_DEFINITIONS TRAY_AYATANA_APPINDICATOR=1) else() - pkg_check_modules(APPINDICATOR ayatana-appindicator3-0.1) + pkg_check_modules(APPINDICATOR appindicator3-0.1) if(APPINDICATOR_FOUND) - list(APPEND SUNSHINE_DEFINITIONS TRAY_AYATANA_APPINDICATOR=1) + list(APPEND SUNSHINE_DEFINITIONS TRAY_LEGACY_APPINDICATOR=1) endif () endif() pkg_check_modules(LIBNOTIFY libnotify) From ad5b816261b3208267b3a0884dcaaf39ec4c2a20 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Wed, 10 Apr 2024 18:12:03 -0400 Subject: [PATCH 04/35] fix(linux): use correct setap command in logs (#2400) --- src/platform/linux/kmsgrab.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/linux/kmsgrab.cpp b/src/platform/linux/kmsgrab.cpp index b742e9edc63..e553f0beb9f 100644 --- a/src/platform/linux/kmsgrab.cpp +++ b/src/platform/linux/kmsgrab.cpp @@ -1675,7 +1675,7 @@ namespace platf { if (!fb->handles[0]) { BOOST_LOG(error) << "Couldn't get handle for DRM Framebuffer ["sv << plane->fb_id << "]: Probably not permitted"sv; BOOST_LOG((window_system != window_system_e::X11 || config::video.capture == "kms") ? fatal : error) - << "You must run [sudo setcap cap_sys_admin+p $(readlink -f sunshine)] for KMS display capture to work!"sv; + << "You must run [sudo setcap cap_sys_admin+p $(readlink -f $(which sunshine))] for KMS display capture to work!"sv; break; } From ad66fcb2433ff3dd4d0c56b00f17db20d1a796e9 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Wed, 10 Apr 2024 19:59:11 -0400 Subject: [PATCH 05/35] build(linux): fix ubuntu 24.04 build (#2402) --- docker/ubuntu-24.04.dockerfile | 4 ++-- docs/requirements.txt | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/ubuntu-24.04.dockerfile b/docker/ubuntu-24.04.dockerfile index 97008d9597d..7ef83bfba39 100644 --- a/docker/ubuntu-24.04.dockerfile +++ b/docker/ubuntu-24.04.dockerfile @@ -63,8 +63,8 @@ apt-get install -y --no-install-recommends \ libxfixes-dev \ libxrandr-dev \ libxtst-dev \ - python3.11 \ - python3.11-venv \ + python3.12 \ + python3.12-venv \ udev \ wget \ x11-xserver-utils \ diff --git a/docs/requirements.txt b/docs/requirements.txt index f7104d627c8..46e47734df9 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -3,6 +3,7 @@ furo==2024.1.29 m2r2==0.3.3.post2 rstcheck[sphinx]==6.2.1 rstfmt==0.0.14 +setuptools # required by m2r2, Ubuntu 24.04 doesn't include this Sphinx==7.2.6 sphinx-copybutton==0.5.2 sphinx_inline_tabs==2023.4.21 From 6a01e58f61517187ad53cb7e778a7a628f6f3404 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Wed, 10 Apr 2024 22:28:23 -0400 Subject: [PATCH 06/35] build(deps): use token for codecov/codecov-action (#2404) --- .github/workflows/CI.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e4a6419418a..330d8f8d6ff 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -510,8 +510,10 @@ jobs: if: always() && (steps.test_report.outcome == 'success') uses: codecov/codecov-action@v3 with: + fail_ci_if_error: true files: ./build/coverage.xml flags: ${{ runner.os }} + token: ${{ secrets.CODECOV_TOKEN }} - name: Create/Update GitHub Release if: ${{ needs.setup_release.outputs.create_release == 'true' }} @@ -833,8 +835,10 @@ jobs: if: always() && (steps.test_report.outcome == 'success') uses: codecov/codecov-action@v3 with: + fail_ci_if_error: true files: ./build/coverage.xml flags: ${{ runner.os }}-${{ matrix.os_version }} + token: ${{ secrets.CODECOV_TOKEN }} - name: Create/Update GitHub Release if: ${{ needs.setup_release.outputs.create_release == 'true' && matrix.release }} @@ -1069,8 +1073,10 @@ jobs: if: always() && (steps.test_report.outcome == 'success') uses: codecov/codecov-action@v3 with: + fail_ci_if_error: true files: ./build/coverage.xml flags: ${{ runner.os }} + token: ${{ secrets.CODECOV_TOKEN }} - name: Package Windows Debug Info working-directory: build From d14323244e183975937892e98a64db0cc5abc153 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Apr 2024 20:49:52 -0400 Subject: [PATCH 07/35] build(deps): bump codecov/codecov-action from 3 to 4 (#2297) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 330d8f8d6ff..67ca6488321 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -508,7 +508,7 @@ jobs: - name: Upload coverage # any except canceled or skipped if: always() && (steps.test_report.outcome == 'success') - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: fail_ci_if_error: true files: ./build/coverage.xml @@ -833,9 +833,9 @@ jobs: - name: Upload coverage # any except canceled or skipped if: always() && (steps.test_report.outcome == 'success') - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: - fail_ci_if_error: true + fail_ci_if_error: false # todo: re-enable this when action is fixed files: ./build/coverage.xml flags: ${{ runner.os }}-${{ matrix.os_version }} token: ${{ secrets.CODECOV_TOKEN }} @@ -1071,7 +1071,7 @@ jobs: - name: Upload coverage # any except canceled or skipped if: always() && (steps.test_report.outcome == 'success') - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: fail_ci_if_error: true files: ./build/coverage.xml From 5c1bad71553db2deb9e2e475e9aba5b00ce437d8 Mon Sep 17 00:00:00 2001 From: hdL6c <107304850+istori1@users.noreply.github.com> Date: Thu, 11 Apr 2024 23:34:26 -0400 Subject: [PATCH 08/35] Musl Linux fixes (#2401) --- cmake/targets/unix.cmake | 2 +- src/main.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/targets/unix.cmake b/cmake/targets/unix.cmake index 2ce0378fdfa..5527a9874fa 100644 --- a/cmake/targets/unix.cmake +++ b/cmake/targets/unix.cmake @@ -5,4 +5,4 @@ add_custom_target(web-ui ALL WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" COMMENT "Installing NPM Dependencies and Building the Web UI" - COMMAND bash -c \"npm install && SUNSHINE_BUILD_HOMEBREW=${NPM_BUILD_HOMEBREW} SUNSHINE_SOURCE_ASSETS_DIR=${NPM_SOURCE_ASSETS_DIR} SUNSHINE_ASSETS_DIR=${NPM_ASSETS_DIR} npm run build\") # cmake-lint: disable=C0301 + COMMAND sh -c \"npm install && SUNSHINE_BUILD_HOMEBREW=${NPM_BUILD_HOMEBREW} SUNSHINE_SOURCE_ASSETS_DIR=${NPM_SOURCE_ASSETS_DIR} SUNSHINE_ASSETS_DIR=${NPM_ASSETS_DIR} npm run build\") # cmake-lint: disable=C0301 diff --git a/src/main.cpp b/src/main.cpp index 22d9e4c4beb..208951d48fc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,6 +4,7 @@ */ // standard includes +#include #include #include #include From fcd4c07bd0e049696413d1157d2a308455fc1722 Mon Sep 17 00:00:00 2001 From: Gilles Schintgen Date: Sat, 13 Apr 2024 01:36:56 +0200 Subject: [PATCH 09/35] Improve frametiming for linux capture (#2333) --- src/platform/common.h | 20 ++++++++++++++++++ src/platform/linux/cuda.cpp | 15 +++++++++----- src/platform/linux/kmsgrab.cpp | 30 ++++++++++++++++++--------- src/platform/linux/wlgrab.cpp | 28 ++++++++++++++++++------- src/platform/linux/x11grab.cpp | 30 ++++++++++++++++++--------- src/platform/windows/display_base.cpp | 14 +++---------- 6 files changed, 93 insertions(+), 44 deletions(-) diff --git a/src/platform/common.h b/src/platform/common.h index 7a4102ad5ba..007f7ece61b 100644 --- a/src/platform/common.h +++ b/src/platform/common.h @@ -10,7 +10,9 @@ #include #include +#include "src/config.h" #include "src/logging.h" +#include "src/stat_trackers.h" #include "src/thread_safe.h" #include "src/utility.h" #include "src/video_colorspace.h" @@ -19,6 +21,8 @@ extern "C" { #include } +using namespace std::literals; + struct sockaddr; struct AVFrame; struct AVBufferRef; @@ -499,6 +503,22 @@ namespace platf { int env_width, env_height; int width, height; + + protected: + // collect capture timing data (at loglevel debug) + stat_trackers::min_max_avg_tracker sleep_overshoot_tracker; + void + log_sleep_overshoot(std::chrono::nanoseconds overshoot_ns) { + if (config::sunshine.min_log_level <= 1) { + // Print sleep overshoot stats to debug log every 20 seconds + auto print_info = [&](double min_overshoot, double max_overshoot, double avg_overshoot) { + auto f = stat_trackers::one_digit_after_decimal(); + BOOST_LOG(debug) << "Sleep overshoot (min/max/avg): " << f % min_overshoot << "ms/" << f % max_overshoot << "ms/" << f % avg_overshoot << "ms"; + }; + // std::chrono::nanoseconds overshoot_ns = std::chrono::steady_clock::now() - next_frame; + sleep_overshoot_tracker.collect_and_callback_on_interval(overshoot_ns.count() / 1000000., print_info, 20s); + } + } }; class mic_t { diff --git a/src/platform/linux/cuda.cpp b/src/platform/linux/cuda.cpp index 33c939243f2..ee535d21d2a 100644 --- a/src/platform/linux/cuda.cpp +++ b/src/platform/linux/cuda.cpp @@ -800,16 +800,21 @@ namespace cuda { handle.reset(); }); + sleep_overshoot_tracker.reset(); + while (true) { auto now = std::chrono::steady_clock::now(); if (next_frame > now) { - std::this_thread::sleep_for((next_frame - now) / 3 * 2); + std::this_thread::sleep_for(next_frame - now); } - while (next_frame > now) { - std::this_thread::sleep_for(1ns); - now = std::chrono::steady_clock::now(); + now = std::chrono::steady_clock::now(); + std::chrono::nanoseconds overshoot_ns = now - next_frame; + log_sleep_overshoot(overshoot_ns); + + next_frame += delay; + if (next_frame < now) { // some major slowdown happened; we couldn't keep up + next_frame = now + delay; } - next_frame = now + delay; std::shared_ptr img_out; auto status = snapshot(pull_free_image_cb, img_out, 150ms, *cursor); diff --git a/src/platform/linux/kmsgrab.cpp b/src/platform/linux/kmsgrab.cpp index e553f0beb9f..30a2470f2d3 100644 --- a/src/platform/linux/kmsgrab.cpp +++ b/src/platform/linux/kmsgrab.cpp @@ -1193,17 +1193,22 @@ namespace platf { capture(const push_captured_image_cb_t &push_captured_image_cb, const pull_free_image_cb_t &pull_free_image_cb, bool *cursor) override { auto next_frame = std::chrono::steady_clock::now(); + sleep_overshoot_tracker.reset(); + while (true) { auto now = std::chrono::steady_clock::now(); if (next_frame > now) { - std::this_thread::sleep_for((next_frame - now) / 3 * 2); + std::this_thread::sleep_for(next_frame - now); } - while (next_frame > now) { - std::this_thread::sleep_for(1ns); - now = std::chrono::steady_clock::now(); + now = std::chrono::steady_clock::now(); + std::chrono::nanoseconds overshoot_ns = now - next_frame; + log_sleep_overshoot(overshoot_ns); + + next_frame += delay; + if (next_frame < now) { // some major slowdown happened; we couldn't keep up + next_frame = now + delay; } - next_frame = now + delay; std::shared_ptr img_out; auto status = snapshot(pull_free_image_cb, img_out, 1000ms, *cursor); @@ -1412,17 +1417,22 @@ namespace platf { capture(const push_captured_image_cb_t &push_captured_image_cb, const pull_free_image_cb_t &pull_free_image_cb, bool *cursor) { auto next_frame = std::chrono::steady_clock::now(); + sleep_overshoot_tracker.reset(); + while (true) { auto now = std::chrono::steady_clock::now(); if (next_frame > now) { - std::this_thread::sleep_for((next_frame - now) / 3 * 2); + std::this_thread::sleep_for(next_frame - now); } - while (next_frame > now) { - std::this_thread::sleep_for(1ns); - now = std::chrono::steady_clock::now(); + now = std::chrono::steady_clock::now(); + std::chrono::nanoseconds overshoot_ns = now - next_frame; + log_sleep_overshoot(overshoot_ns); + + next_frame += delay; + if (next_frame < now) { // some major slowdown happened; we couldn't keep up + next_frame = now + delay; } - next_frame = now + delay; std::shared_ptr img_out; auto status = snapshot(pull_free_image_cb, img_out, 1000ms, *cursor); diff --git a/src/platform/linux/wlgrab.cpp b/src/platform/linux/wlgrab.cpp index 2ea15359fc3..a6ac4adbb96 100644 --- a/src/platform/linux/wlgrab.cpp +++ b/src/platform/linux/wlgrab.cpp @@ -129,16 +129,22 @@ namespace wl { capture(const push_captured_image_cb_t &push_captured_image_cb, const pull_free_image_cb_t &pull_free_image_cb, bool *cursor) override { auto next_frame = std::chrono::steady_clock::now(); + sleep_overshoot_tracker.reset(); + while (true) { auto now = std::chrono::steady_clock::now(); if (next_frame > now) { - std::this_thread::sleep_for((next_frame - now) / 3 * 2); + std::this_thread::sleep_for(next_frame - now); } - while (next_frame > now) { - now = std::chrono::steady_clock::now(); + now = std::chrono::steady_clock::now(); + std::chrono::nanoseconds overshoot_ns = now - next_frame; + log_sleep_overshoot(overshoot_ns); + + next_frame += delay; + if (next_frame < now) { // some major slowdown happened; we couldn't keep up + next_frame = now + delay; } - next_frame = now + delay; std::shared_ptr img_out; auto status = snapshot(pull_free_image_cb, img_out, 1000ms, *cursor); @@ -259,16 +265,22 @@ namespace wl { capture(const push_captured_image_cb_t &push_captured_image_cb, const pull_free_image_cb_t &pull_free_image_cb, bool *cursor) override { auto next_frame = std::chrono::steady_clock::now(); + sleep_overshoot_tracker.reset(); + while (true) { auto now = std::chrono::steady_clock::now(); if (next_frame > now) { - std::this_thread::sleep_for((next_frame - now) / 3 * 2); + std::this_thread::sleep_for(next_frame - now); } - while (next_frame > now) { - now = std::chrono::steady_clock::now(); + now = std::chrono::steady_clock::now(); + std::chrono::nanoseconds overshoot_ns = now - next_frame; + log_sleep_overshoot(overshoot_ns); + + next_frame += delay; + if (next_frame < now) { // some major slowdown happened; we couldn't keep up + next_frame = now + delay; } - next_frame = now + delay; std::shared_ptr img_out; auto status = snapshot(pull_free_image_cb, img_out, 1000ms, *cursor); diff --git a/src/platform/linux/x11grab.cpp b/src/platform/linux/x11grab.cpp index 0a639b9cc2b..0d4c3d38c30 100644 --- a/src/platform/linux/x11grab.cpp +++ b/src/platform/linux/x11grab.cpp @@ -481,17 +481,22 @@ namespace platf { capture(const push_captured_image_cb_t &push_captured_image_cb, const pull_free_image_cb_t &pull_free_image_cb, bool *cursor) override { auto next_frame = std::chrono::steady_clock::now(); + sleep_overshoot_tracker.reset(); + while (true) { auto now = std::chrono::steady_clock::now(); if (next_frame > now) { - std::this_thread::sleep_for((next_frame - now) / 3 * 2); + std::this_thread::sleep_for(next_frame - now); } - while (next_frame > now) { - std::this_thread::sleep_for(1ns); - now = std::chrono::steady_clock::now(); + now = std::chrono::steady_clock::now(); + std::chrono::nanoseconds overshoot_ns = now - next_frame; + log_sleep_overshoot(overshoot_ns); + + next_frame += delay; + if (next_frame < now) { // some major slowdown happened; we couldn't keep up + next_frame = now + delay; } - next_frame = now + delay; std::shared_ptr img_out; auto status = snapshot(pull_free_image_cb, img_out, 1000ms, *cursor); @@ -622,17 +627,22 @@ namespace platf { capture(const push_captured_image_cb_t &push_captured_image_cb, const pull_free_image_cb_t &pull_free_image_cb, bool *cursor) override { auto next_frame = std::chrono::steady_clock::now(); + sleep_overshoot_tracker.reset(); + while (true) { auto now = std::chrono::steady_clock::now(); if (next_frame > now) { - std::this_thread::sleep_for((next_frame - now) / 3 * 2); + std::this_thread::sleep_for(next_frame - now); } - while (next_frame > now) { - std::this_thread::sleep_for(1ns); - now = std::chrono::steady_clock::now(); + now = std::chrono::steady_clock::now(); + std::chrono::nanoseconds overshoot_ns = now - next_frame; + log_sleep_overshoot(overshoot_ns); + + next_frame += delay; + if (next_frame < now) { // some major slowdown happened; we couldn't keep up + next_frame = now + delay; } - next_frame = now + delay; std::shared_ptr img_out; auto status = snapshot(pull_free_image_cb, img_out, 1000ms, *cursor); diff --git a/src/platform/windows/display_base.cpp b/src/platform/windows/display_base.cpp index b258690e10e..227efe7628f 100644 --- a/src/platform/windows/display_base.cpp +++ b/src/platform/windows/display_base.cpp @@ -154,7 +154,7 @@ namespace platf::dxgi { SetThreadExecutionState(ES_CONTINUOUS); }); - stat_trackers::min_max_avg_tracker sleep_overshoot_tracker; + sleep_overshoot_tracker.reset(); while (true) { // This will return false if the HDR state changes or for any number of other @@ -184,16 +184,8 @@ namespace platf::dxgi { } else { high_precision_sleep(sleep_period); - - if (config::sunshine.min_log_level <= 1) { - // Print sleep overshoot stats to debug log every 20 seconds - auto print_info = [&](double min_overshoot, double max_overshoot, double avg_overshoot) { - auto f = stat_trackers::one_digit_after_decimal(); - BOOST_LOG(debug) << "Sleep overshoot (min/max/avg): " << f % min_overshoot << "ms/" << f % max_overshoot << "ms/" << f % avg_overshoot << "ms"; - }; - std::chrono::nanoseconds overshoot_ns = std::chrono::steady_clock::now() - sleep_target; - sleep_overshoot_tracker.collect_and_callback_on_interval(overshoot_ns.count() / 1000000., print_info, 20s); - } + std::chrono::nanoseconds overshoot_ns = std::chrono::steady_clock::now() - sleep_target; + log_sleep_overshoot(overshoot_ns); status = snapshot(pull_free_image_cb, img_out, 0ms, *cursor); From f87bc86b4af87714fc70dbeba99eb0c27189d475 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Apr 2024 20:52:00 -0400 Subject: [PATCH 10/35] build(deps): bump LizardByte/homebrew-release-action from 2024.314.134529 to 2024.409.24405 (#2394) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 67ca6488321..3c97376c758 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -615,7 +615,7 @@ jobs: echo "publish=${PUBLISH}" >> $GITHUB_OUTPUT - name: Validate and Publish Homebrew Formula - uses: LizardByte/homebrew-release-action@v2024.314.134529 + uses: LizardByte/homebrew-release-action@v2024.409.24405 with: formula_file: ${{ github.workspace }}/homebrew/sunshine.rb git_email: ${{ secrets.GH_BOT_EMAIL }} From a4d9ee3fa4630bc0e7fdff230e923829c1d06015 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 11 Apr 2024 23:35:08 -0500 Subject: [PATCH 11/35] Fix crash when receiving abs input events prior to the display touchport --- src/input.cpp | 37 +++++++++++++++++++++++++------------ src/input.h | 5 +++++ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/input.cpp b/src/input.cpp index 89f7291f11a..2e26d5b00a8 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -469,15 +469,19 @@ namespace input { * @param input The input context. * @param val The cartesian coordinate pair to convert. * @param size The size of the client's surface containing the value. - * @return The host-relative coordinate pair. + * @return The host-relative coordinate pair if a touchport is available. */ - std::pair + std::optional> client_to_touchport(std::shared_ptr &input, const std::pair &val, const std::pair &size) { auto &touch_port_event = input->touch_port_event; auto &touch_port = input->touch_port; if (touch_port_event->peek()) { touch_port = *touch_port_event->pop(); } + if (!touch_port) { + BOOST_LOG(verbose) << "Ignoring early absolute input without a touch port"sv; + return std::nullopt; + } auto scalarX = touch_port.width / size.first; auto scalarY = touch_port.height / size.second; @@ -491,7 +495,7 @@ namespace input { x = std::clamp(x, offsetX, (size.first * scalarX) - offsetX); y = std::clamp(y, offsetY, (size.second * scalarY) - offsetY); - return { (x - offsetX) * touch_port.scalar_inv, (y - offsetY) * touch_port.scalar_inv }; + return std::pair { (x - offsetX) * touch_port.scalar_inv, (y - offsetY) * touch_port.scalar_inv }; } /** @@ -561,6 +565,9 @@ namespace input { auto height = (float) util::endian::big(packet->height); auto tpcoords = client_to_touchport(input, { x, y }, { width, height }); + if (!tpcoords) { + return; + } auto &touch_port = input->touch_port; platf::touch_port_t abs_port { @@ -568,7 +575,7 @@ namespace input { touch_port.env_width, touch_port.env_height }; - platf::abs_mouse(platf_input, abs_port, tpcoords.first, tpcoords.second); + platf::abs_mouse(platf_input, abs_port, tpcoords->first, tpcoords->second); } void @@ -918,6 +925,9 @@ namespace input { { from_clamped_netfloat(packet->x, 0.0f, 1.0f) * 65535.f, from_clamped_netfloat(packet->y, 0.0f, 1.0f) * 65535.f }, { 65535.f, 65535.f }); + if (!coords) { + return; + } auto &touch_port = input->touch_port; platf::touch_port_t abs_port { @@ -926,8 +936,8 @@ namespace input { }; // Renormalize the coordinates - coords.first /= abs_port.width; - coords.second /= abs_port.height; + coords->first /= abs_port.width; + coords->second /= abs_port.height; // Normalize rotation value to 0-359 degree range auto rotation = util::endian::little(packet->rotation); @@ -946,8 +956,8 @@ namespace input { packet->eventType, rotation, util::endian::little(packet->pointerId), - coords.first, - coords.second, + coords->first, + coords->second, from_clamped_netfloat(packet->pressureOrDistance, 0.0f, 1.0f), contact_area.first, contact_area.second, @@ -972,6 +982,9 @@ namespace input { { from_clamped_netfloat(packet->x, 0.0f, 1.0f) * 65535.f, from_clamped_netfloat(packet->y, 0.0f, 1.0f) * 65535.f }, { 65535.f, 65535.f }); + if (!coords) { + return; + } auto &touch_port = input->touch_port; platf::touch_port_t abs_port { @@ -980,8 +993,8 @@ namespace input { }; // Renormalize the coordinates - coords.first /= abs_port.width; - coords.second /= abs_port.height; + coords->first /= abs_port.width; + coords->second /= abs_port.height; // Normalize rotation value to 0-359 degree range auto rotation = util::endian::little(packet->rotation); @@ -1002,8 +1015,8 @@ namespace input { packet->penButtons, packet->tilt, rotation, - coords.first, - coords.second, + coords->first, + coords->second, from_clamped_netfloat(packet->pressureOrDistance, 0.0f, 1.0f), contact_area.first, contact_area.second, diff --git a/src/input.h b/src/input.h index bc9fea8479f..33a9ee42741 100644 --- a/src/input.h +++ b/src/input.h @@ -32,6 +32,11 @@ namespace input { float client_offsetX, client_offsetY; float scalar_inv; + + explicit + operator bool() const { + return width != 0 && height != 0 && env_width != 0 && env_height != 0; + } }; std::pair From 25d8e2b478ebb3291a6422d8e6ea0b54a312fcc0 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 11 Apr 2024 23:38:49 -0500 Subject: [PATCH 12/35] Fix discarded std::clamp() result compiler warning --- src/platform/linux/input.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform/linux/input.cpp b/src/platform/linux/input.cpp index 42e239980d8..74d683048f8 100644 --- a/src/platform/linux/input.cpp +++ b/src/platform/linux/input.cpp @@ -587,8 +587,8 @@ namespace platf { weak_strong += data.rumble(tp); } - std::clamp(weak_strong.first, 0, 0xFFFF); - std::clamp(weak_strong.second, 0, 0xFFFF); + weak_strong.first = std::clamp(weak_strong.first, 0, 0xFFFF); + weak_strong.second = std::clamp(weak_strong.second, 0, 0xFFFF); old_rumble = weak_strong * gain / 0xFFFF; return old_rumble; From 358bb30c3c9bf59a3cb6b9bcc7fbd8ad89a7580d Mon Sep 17 00:00:00 2001 From: Gilles Schintgen Date: Sun, 7 Apr 2024 13:31:57 +0200 Subject: [PATCH 13/35] debug: fix codec debugging code --- src/video.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video.h b/src/video.h index eb8eabc358d..ba80474669f 100644 --- a/src/video.h +++ b/src/video.h @@ -95,7 +95,7 @@ namespace video { from_flag(flag_e flag) { #define _CONVERT(x) \ case flag_e::x: \ - std::string_view(#x) + return std::string_view(#x) switch (flag) { _CONVERT(PASSED); _CONVERT(REF_FRAMES_RESTRICT); From fb4d4f50ec9bbf8d42c765243da15ba170e45905 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Sun, 14 Apr 2024 09:34:22 -0400 Subject: [PATCH 14/35] fix(ui): fix quicksync locale strings (#2418) --- src_assets/common/assets/web/public/assets/locale/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src_assets/common/assets/web/public/assets/locale/en.json b/src_assets/common/assets/web/public/assets/locale/en.json index 6fa1f3a04c4..f36b984c24e 100644 --- a/src_assets/common/assets/web/public/assets/locale/en.json +++ b/src_assets/common/assets/web/public/assets/locale/en.json @@ -258,8 +258,8 @@ "qp_desc": "Some devices may not support Constant Bit Rate. For those devices, QP is used instead. Higher value means more compression, but less quality.", "qsv_coder": "QuickSync Coder (H264)", "qsv_preset": "QuickSync Preset", - "qsv_preset_fast": "faster (lower quality)", - "qsv_preset_faster": "fastest (lowest quality)", + "qsv_preset_fast": "fast (low quality)", + "qsv_preset_faster": "faster (lower quality)", "qsv_preset_medium": "medium (default)", "qsv_preset_slow": "slow (good quality)", "qsv_preset_slower": "slower (better quality)", From 76d08eb88380968a61cc3db60fe12c729f5d8c69 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Sun, 14 Apr 2024 13:38:01 -0400 Subject: [PATCH 15/35] ci: fix coverage ignore directories (#2420) --- .github/workflows/CI.yml | 12 ++++++------ codecov.yml | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 3c97376c758..b442fd746a5 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -500,8 +500,8 @@ jobs: run: | ${{ steps.python.outputs.python-path }} -m pip install gcovr ${{ steps.python.outputs.python-path }} -m gcovr -r .. \ - --exclude ../tests/ \ - --exclude ../third-party/ \ + --exclude '.*tests/.*' \ + --exclude '.*tests/.*' \ --xml-pretty \ -o coverage.xml @@ -823,8 +823,8 @@ jobs: cd ${build_dir} ${{ steps.python.outputs.python-path }} -m pip install gcovr sudo ${{ steps.python.outputs.python-path }} -m gcovr -r ../${dir} \ - --exclude ../${dir}/tests/ \ - --exclude ../${dir}/third-party/ \ + --exclude '.*${dir}/tests/.*' \ + --exclude '.*${dir}/third-party/.*' \ --gcov-object-directory $(pwd) \ --verbose \ --xml-pretty \ @@ -1063,8 +1063,8 @@ jobs: run: | ${{ steps.python-path.outputs.python-path }} -m pip install gcovr ${{ steps.python-path.outputs.python-path }} -m gcovr -r .. \ - --exclude ../tests/ \ - --exclude ../third-party/ \ + --exclude '.*tests/.*' \ + --exclude '.*tests/.*' \ --xml-pretty \ -o coverage.xml diff --git a/codecov.yml b/codecov.yml index 59209e46432..b50701c758b 100644 --- a/codecov.yml +++ b/codecov.yml @@ -13,3 +13,7 @@ comment: layout: "diff, flags, files" behavior: default require_changes: false # if true: only post the comment if coverage changes + +ignore: + - "tests" + - "third-party" From 5db8af8a3fd3f49ebb7b3d2d92d7b2b079881124 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Tue, 16 Apr 2024 17:41:56 -0400 Subject: [PATCH 16/35] ci: update codeql to handle multiple OSes (#2425) --- ...ld-cpp.sh => .codeql-prebuild-cpp-Linux.sh | 9 ++++ .codeql-prebuild-cpp-Windows.sh | 34 +++++++++++++ .codeql-prebuild-cpp-macOS.sh | 19 +++++++ .github/workflows/codeql.yml | 51 +++++++++++++++---- 4 files changed, 103 insertions(+), 10 deletions(-) rename .codeql-prebuild-cpp.sh => .codeql-prebuild-cpp-Linux.sh (89%) create mode 100644 .codeql-prebuild-cpp-Windows.sh create mode 100644 .codeql-prebuild-cpp-macOS.sh diff --git a/.codeql-prebuild-cpp.sh b/.codeql-prebuild-cpp-Linux.sh similarity index 89% rename from .codeql-prebuild-cpp.sh rename to .codeql-prebuild-cpp-Linux.sh index c3e09d84e1a..1ed7de55b6d 100644 --- a/.codeql-prebuild-cpp.sh +++ b/.codeql-prebuild-cpp-Linux.sh @@ -54,3 +54,12 @@ sudo wget \ sudo chmod a+x /root/cuda.run sudo /root/cuda.run --silent --toolkit --toolkitpath=/usr --no-opengl-libs --no-man-page --no-drm sudo rm /root/cuda.run + +# build +mkdir -p build +cd build || exit 1 +cmake -G "Unix Makefiles" .. +mingw32-make -j"$(nproc)" + +# skip autobuild +echo "skip_autobuild=true" >> "$GITHUB_OUTPUT" diff --git a/.codeql-prebuild-cpp-Windows.sh b/.codeql-prebuild-cpp-Windows.sh new file mode 100644 index 00000000000..04a7cc90645 --- /dev/null +++ b/.codeql-prebuild-cpp-Windows.sh @@ -0,0 +1,34 @@ +# install dependencies for C++ analysis + +# update pacman +pacman --noconfirm -Suy + +# install dependencies +pacman --noconfirm -S \ + base-devel \ + cmake \ + diffutils \ + gcc \ + git \ + make \ + mingw-w64-x86_64-binutils \ + mingw-w64-x86_64-boost \ + mingw-w64-x86_64-cmake \ + mingw-w64-x86_64-curl \ + mingw-w64-x86_64-miniupnpc \ + mingw-w64-x86_64-nlohmann-json \ + mingw-w64-x86_64-nodejs \ + mingw-w64-x86_64-onevpl \ + mingw-w64-x86_64-openssl \ + mingw-w64-x86_64-opus \ + mingw-w64-x86_64-rust \ + mingw-w64-x86_64-toolchain + +# build +mkdir -p build +cd build || exit 1 +cmake -G "MinGW Makefiles" .. +mingw32-make -j"$(nproc)" + +# skip autobuild +echo "skip_autobuild=true" >> "$GITHUB_OUTPUT" diff --git a/.codeql-prebuild-cpp-macOS.sh b/.codeql-prebuild-cpp-macOS.sh new file mode 100644 index 00000000000..6c09330040a --- /dev/null +++ b/.codeql-prebuild-cpp-macOS.sh @@ -0,0 +1,19 @@ +# install dependencies for C++ analysis + +# install dependencies +brew install \ + boost \ + cmake \ + miniupnpc \ + node \ + opus \ + pkg-config + +# build +mkdir -p build +cd build || exit 1 +cmake -G "Unix Makefiles" .. +mingw32-make -j"$(sysctl -n hw.logicalcpu)" + +# skip autobuild +echo "skip_autobuild=true" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index ae5248763ec..ff12034f0c6 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -16,7 +16,7 @@ on: - cron: '00 12 * * 0' # every Sunday at 12:00 UTC concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: "${{ github.workflow }}-${{ github.ref }}" cancel-in-progress: true jobs: @@ -57,10 +57,25 @@ jobs: console.log(`Remapping language: ${key} to ${remap_languages[key.toLowerCase()]}`) key = remap_languages[key.toLowerCase()] } - if (supported_languages.includes(key.toLowerCase()) && - !matrix['include'].includes({"language": key.toLowerCase()})) { + if (supported_languages.includes(key.toLowerCase())) { console.log(`Found supported language: ${key}`) - matrix['include'].push({"language": key.toLowerCase()}) + let osList = ['ubuntu-latest']; + if (key.toLowerCase() === 'swift') { + osList = ['macos-latest']; + } else if (key.toLowerCase() === 'cpp') { + osList = ['macos-latest', 'ubuntu-latest', 'windows-latest']; + } + for (let os of osList) { + // set name for matrix + if (osList.length == 1) { + name = key.toLowerCase() + } else { + name = `${key.toLowerCase()}, ${os}` + } + + // add to matrix + matrix['include'].push({"language": key.toLowerCase(), "os": os, "name": name}) + } } } @@ -84,10 +99,15 @@ jobs: } analyze: - name: Analyze + name: Analyze (${{ matrix.name }}) if: ${{ needs.languages.outputs.continue == 'true' }} + defaults: + run: + shell: ${{ matrix.os == 'windows-latest' && 'msys2 {0}' || 'bash' }} + env: + GITHUB_CODEQL_BUILD: true needs: [languages] - runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + runs-on: ${{ matrix.os || 'ubuntu-latest' }} timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} permissions: actions: read @@ -100,6 +120,7 @@ jobs: steps: - name: Maximize build space + if: runner.os == 'Linux' uses: easimon/maximize-build-space@v8 with: root-reserve-mb: 20480 @@ -114,6 +135,12 @@ jobs: with: submodules: recursive + - name: Setup msys2 + if: runner.os == 'Windows' + uses: msys2/setup-msys2@v2 + with: + update: true + # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v3 @@ -129,16 +156,20 @@ jobs: # Pre autobuild # create a file named .codeql-prebuild-${{ matrix.language }}.sh in the root of your repository + # create a file named .codeql-build-${{ matrix.language }}.sh in the root of your repository - name: Prebuild + id: prebuild run: | - # check if .qodeql-prebuild-${{ matrix.language }}.sh exists - if [ -f "./.codeql-prebuild-${{ matrix.language }}.sh" ]; then - echo "Running .codeql-prebuild-${{ matrix.language }}.sh" - ./.codeql-prebuild-${{ matrix.language }}.sh + # check if prebuild script exists + filename=".codeql-prebuild-${{ matrix.language }}-${{ runner.os }}.sh" + if [ -f "./${filename}" ]; then + echo "Running prebuild script: ${filename}" + ./${filename} fi # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). - name: Autobuild + if: steps.prebuild.outputs.skip_autobuild != 'true' uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis From ec8170cb40956501929983ee439e40b608583b1f Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Tue, 16 Apr 2024 23:00:10 -0400 Subject: [PATCH 17/35] ci: fix codeql prebuild steps for unix OSes (#2431) --- .codeql-prebuild-cpp-Linux.sh | 3 ++- .codeql-prebuild-cpp-Windows.sh | 2 +- .codeql-prebuild-cpp-macOS.sh | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.codeql-prebuild-cpp-Linux.sh b/.codeql-prebuild-cpp-Linux.sh index 1ed7de55b6d..d00c671ec2c 100644 --- a/.codeql-prebuild-cpp-Linux.sh +++ b/.codeql-prebuild-cpp-Linux.sh @@ -1,4 +1,5 @@ # install dependencies for C++ analysis +set -e sudo apt-get update -y sudo apt-get install -y \ @@ -59,7 +60,7 @@ sudo rm /root/cuda.run mkdir -p build cd build || exit 1 cmake -G "Unix Makefiles" .. -mingw32-make -j"$(nproc)" +make -j"$(nproc)" # skip autobuild echo "skip_autobuild=true" >> "$GITHUB_OUTPUT" diff --git a/.codeql-prebuild-cpp-Windows.sh b/.codeql-prebuild-cpp-Windows.sh index 04a7cc90645..034f07a8918 100644 --- a/.codeql-prebuild-cpp-Windows.sh +++ b/.codeql-prebuild-cpp-Windows.sh @@ -1,4 +1,5 @@ # install dependencies for C++ analysis +set -e # update pacman pacman --noconfirm -Suy @@ -6,7 +7,6 @@ pacman --noconfirm -Suy # install dependencies pacman --noconfirm -S \ base-devel \ - cmake \ diffutils \ gcc \ git \ diff --git a/.codeql-prebuild-cpp-macOS.sh b/.codeql-prebuild-cpp-macOS.sh index 6c09330040a..4e74c8599e5 100644 --- a/.codeql-prebuild-cpp-macOS.sh +++ b/.codeql-prebuild-cpp-macOS.sh @@ -1,4 +1,5 @@ # install dependencies for C++ analysis +set -e # install dependencies brew install \ @@ -13,7 +14,7 @@ brew install \ mkdir -p build cd build || exit 1 cmake -G "Unix Makefiles" .. -mingw32-make -j"$(sysctl -n hw.logicalcpu)" +make -j"$(sysctl -n hw.logicalcpu)" # skip autobuild echo "skip_autobuild=true" >> "$GITHUB_OUTPUT" From c896dabb82eb7206fd69d5871b1c18c04054acda Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Wed, 17 Apr 2024 18:50:23 -0400 Subject: [PATCH 18/35] ci: skip coverage upload if not in LizardByte org (#2436) --- .github/workflows/CI.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b442fd746a5..3ffef6a615b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -507,7 +507,10 @@ jobs: - name: Upload coverage # any except canceled or skipped - if: always() && (steps.test_report.outcome == 'success') + if: >- + always() && + (steps.test_report.outcome == 'success') && + startsWith(github.repository, 'LizardByte/') uses: codecov/codecov-action@v4 with: fail_ci_if_error: true @@ -832,7 +835,10 @@ jobs: - name: Upload coverage # any except canceled or skipped - if: always() && (steps.test_report.outcome == 'success') + if: >- + always() && + (steps.test_report.outcome == 'success') && + startsWith(github.repository, 'LizardByte/') uses: codecov/codecov-action@v4 with: fail_ci_if_error: false # todo: re-enable this when action is fixed @@ -1070,7 +1076,10 @@ jobs: - name: Upload coverage # any except canceled or skipped - if: always() && (steps.test_report.outcome == 'success') + if: >- + always() && + (steps.test_report.outcome == 'success') && + startsWith(github.repository, 'LizardByte/') uses: codecov/codecov-action@v4 with: fail_ci_if_error: true From 69191cafe968535a3cfac5862ce63e91e0308108 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Thu, 18 Apr 2024 15:35:49 -0400 Subject: [PATCH 19/35] fix: make version update check more robust (#2437) --- .github/workflows/CI.yml | 15 +++++++++++++-- .../linux/flatpak/dev.lizardbyte.sunshine.yml | 3 +++ packaging/macos/Portfile | 4 ++++ packaging/macos/sunshine.rb | 4 ++++ src_assets/common/assets/web/index.html | 12 +++++++++--- 5 files changed, 33 insertions(+), 5 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 3ffef6a615b..47972fa9207 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -211,6 +211,7 @@ jobs: then echo "This is a PUSH event" branch=${{ github.ref_name }} + build_version=${{ needs.check_changelog.outputs.next_version }} commit=${{ github.sha }} clone_url=${{ github.event.repository.clone_url }} else @@ -227,6 +228,7 @@ jobs: cd build cmake -DGITHUB_CLONE_URL=${clone_url} \ + -DBUILD_VERSION=${build_version} \ -DGITHUB_BRANCH=${branch} \ -DGITHUB_COMMIT=${commit} \ -DSUNSHINE_CONFIGURE_FLATPAK_MAN=ON \ @@ -377,7 +379,7 @@ jobs: - name: Build Linux env: BRANCH: ${{ github.head_ref || github.ref_name }} - BUILD_VERSION: ${{ needs.check_changelog.outputs.next_version_bare }} + BUILD_VERSION: ${{ needs.check_changelog.outputs.next_version }} COMMIT: ${{ github.event.pull_request.head.sha || github.sha }} timeout-minutes: 5 run: | @@ -565,13 +567,16 @@ jobs: if [ -z "$branch" ] then echo "This is a PUSH event" + build_version=${{ needs.check_changelog.outputs.next_version }} clone_url=${{ github.event.repository.clone_url }} branch="${{ github.ref_name }}" + commit=${{ github.sha }} default_branch="${{ github.event.repository.default_branch }}" else echo "This is a PR event" clone_url=${{ github.event.pull_request.head.repo.clone_url }} branch="${{ github.event.pull_request.head.ref }}" + commit=${{ github.event.pull_request.head.sha }} default_branch="${{ github.event.pull_request.head.repo.default_branch }}" fi echo "Branch: ${branch}" @@ -580,7 +585,9 @@ jobs: mkdir build cd build cmake \ + -DBUILD_VERSION="${build_version}" \ -DGITHUB_BRANCH="${branch}" \ + -DGITHUB_COMMIT="${commit}" \ -DGITHUB_CLONE_URL="${clone_url}" \ -DGITHUB_DEFAULT_BRANCH="${default_branch}" \ -DSUNSHINE_CONFIGURE_HOMEBREW=ON \ @@ -678,6 +685,8 @@ jobs: if [ -z "$branch" ] then echo "This is a PUSH event" + branch="${{ github.ref_name }}" + build_version=${{ needs.check_changelog.outputs.next_version }} commit=${{ github.sha }} clone_url=${{ github.event.repository.clone_url }} else @@ -691,6 +700,8 @@ jobs: mkdir build cd build cmake \ + -DBUILD_VERSION=${build_version} \ + -DGITHUB_BRANCH=${branch} \ -DGITHUB_COMMIT=${commit} \ -DGITHUB_CLONE_URL=${clone_url} \ -DSUNSHINE_CONFIGURE_PORTFILE=ON \ @@ -1024,7 +1035,7 @@ jobs: shell: msys2 {0} env: BRANCH: ${{ github.head_ref || github.ref_name }} - BUILD_VERSION: ${{ needs.check_changelog.outputs.next_version_bare }} + BUILD_VERSION: ${{ needs.check_changelog.outputs.next_version }} COMMIT: ${{ github.event.pull_request.head.sha || github.sha }} run: | mkdir build diff --git a/packaging/linux/flatpak/dev.lizardbyte.sunshine.yml b/packaging/linux/flatpak/dev.lizardbyte.sunshine.yml index 0e891dacf0e..cba627807c3 100644 --- a/packaging/linux/flatpak/dev.lizardbyte.sunshine.yml +++ b/packaging/linux/flatpak/dev.lizardbyte.sunshine.yml @@ -329,6 +329,9 @@ modules: build-args: - --share=network env: + BUILD_VERSION: "@BUILD_VERSION@" + BRANCH: "@GITHUB_BRANCH@" + COMMIT: "@GITHUB_COMMIT@" npm_config_nodedir: /usr/lib/sdk/node18 NPM_CONFIG_LOGLEVEL: info config-opts: diff --git a/packaging/macos/Portfile b/packaging/macos/Portfile index aacc3209fff..e0cc9ef34f6 100644 --- a/packaging/macos/Portfile +++ b/packaging/macos/Portfile @@ -51,6 +51,10 @@ configure.args -DBUILD_WERROR=ON \ -DCMAKE_INSTALL_PREFIX=${prefix} \ -DSUNSHINE_ASSETS_DIR=etc/sunshine/assets +configure.env-append BRANCH=@GITHUB_BRANCH@ +configure.env-append BUILD_VERSION=@BUILD_VERSION@ +configure.env-append COMMIT=@GITHUB_COMMIT@ + startupitem.create yes startupitem.executable "${prefix}/bin/{$name}" startupitem.location LaunchDaemons diff --git a/packaging/macos/sunshine.rb b/packaging/macos/sunshine.rb index 1853c0c8c75..e119d1df1a7 100644 --- a/packaging/macos/sunshine.rb +++ b/packaging/macos/sunshine.rb @@ -19,6 +19,10 @@ class @PROJECT_NAME@ < Formula depends_on "opus" def install + ENV["BRANCH"] = "@GITHUB_BRANCH@" + ENV["BUILD_VERSION"] = "@BUILD_VERSION@" + ENV["COMMIT"] = "@GITHUB_COMMIT@" + args = %W[ -DBUILD_WERROR=ON -DCMAKE_INSTALL_PREFIX=#{prefix} diff --git a/src_assets/common/assets/web/index.html b/src_assets/common/assets/web/index.html index 12199711422..16dff05b921 100644 --- a/src_assets/common/assets/web/index.html +++ b/src_assets/common/assets/web/index.html @@ -112,10 +112,16 @@

{{githubVersion.name}}

stableBuildAvailable() { // If we can't get versions, return false if (!this.githubVersion || !this.version) return false; + // Get the GitHub version tag - let v = this.githubVersion.name; + let v_github = this.githubVersion.name; + // If the version starts with a v, remove it + if (v_github.indexOf("v") === 0) v_github = v_github.substring(1); + + // Get the current version + let v_this = this.version; // If the version starts with a v, remove it - if (v.indexOf("v") === 0) v = v.substring(1); + if (v_this.indexOf("v") === 0) v_this = v_this.substring(1); // if nightly or dirty, we do an additional check to make sure it's an actual upgrade. if (this.buildVersionIsNightly || this.buildVersionIsDirty) { @@ -124,7 +130,7 @@

{{githubVersion.name}}

} // return true if the version is different, otherwise false - return v !== this.version; + return v_github !== v_this; }, nightlyBuildAvailable() { // Verify nightly data is available and the build version is not stable From 50a02dbce532c99fc6cf2926070b8b116c584de1 Mon Sep 17 00:00:00 2001 From: LizardByte-bot <108553330+LizardByte-bot@users.noreply.github.com> Date: Thu, 18 Apr 2024 15:35:56 -0400 Subject: [PATCH 20/35] chore: update global workflows (#2446) --- .github/workflows/automerge.yml | 4 ++-- .github/workflows/cpp-lint.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml index 733b4de8521..04c9f1acfbc 100644 --- a/.github/workflows/automerge.yml +++ b/.github/workflows/automerge.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Autoapproving - uses: hmarr/auto-approve-action@v3 + uses: hmarr/auto-approve-action@v4 with: github-token: "${{ secrets.GITHUB_TOKEN }}" @@ -49,7 +49,7 @@ jobs: steps: - name: Automerging - uses: pascalgn/automerge-action@v0.15.6 + uses: pascalgn/automerge-action@v0.16.3 env: BASE_BRANCHES: nightly GITHUB_TOKEN: ${{ secrets.GH_BOT_TOKEN }} diff --git a/.github/workflows/cpp-lint.yml b/.github/workflows/cpp-lint.yml index 921641c593e..9565befb20d 100644 --- a/.github/workflows/cpp-lint.yml +++ b/.github/workflows/cpp-lint.yml @@ -55,7 +55,7 @@ jobs: - name: Clang format lint if: ${{ steps.find_files.outputs.found_files }} - uses: DoozyX/clang-format-lint-action@v0.16.2 + uses: DoozyX/clang-format-lint-action@v0.17 with: source: ${{ steps.find_files.outputs.found_files }} extensions: 'cpp,h,m,mm' From 9e0182be9c5e04b6ad6dea5040d98dfc84b7927b Mon Sep 17 00:00:00 2001 From: Rick <53553229+RickAndTired@users.noreply.github.com> Date: Thu, 18 Apr 2024 20:06:20 -0700 Subject: [PATCH 21/35] docs(linux): add guide for discord audio (#2447) Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> --- .../about/guides/linux/discord_calls.rst | 30 ++++++++++++++++++ docs/source/images/discord_calls_01.png | Bin 0 -> 28055 bytes docs/source/images/discord_calls_02.png | Bin 0 -> 39673 bytes docs/source/images/discord_calls_03.png | Bin 0 -> 28099 bytes docs/source/images/discord_calls_04.png | Bin 0 -> 96727 bytes docs/source/images/discord_calls_05.png | Bin 0 -> 97212 bytes 6 files changed, 30 insertions(+) create mode 100644 docs/source/about/guides/linux/discord_calls.rst create mode 100644 docs/source/images/discord_calls_01.png create mode 100644 docs/source/images/discord_calls_02.png create mode 100644 docs/source/images/discord_calls_03.png create mode 100644 docs/source/images/discord_calls_04.png create mode 100644 docs/source/images/discord_calls_05.png diff --git a/docs/source/about/guides/linux/discord_calls.rst b/docs/source/about/guides/linux/discord_calls.rst new file mode 100644 index 00000000000..34b5920a3cb --- /dev/null +++ b/docs/source/about/guides/linux/discord_calls.rst @@ -0,0 +1,30 @@ +How to not stream Discord call audio +==================================== + +#. Set your normal `Sound Output` volume to 100% + + .. image:: ../../../images/discord_calls_01.png + +#. Start Sunshine + +#. Set `Sound Output` to `sink-sunshine-stereo` (if it isn't automatic) + + .. image:: ../../../images/discord_calls_02.png + +#. In Discord - `Right Click` - `Deafen` - Select your normal `Output Device` + + This is also where you will need to adjust output volume for Discord calls + + .. image:: ../../../images/discord_calls_03.png + +#. Open `qpwgraph` + + .. image:: ../../../images/discord_calls_04.png + +#. Connect `sunshine [sunshine-record]` to your normal `Output Device` + + * Drag `monitor_FL` to `playback_FL` + + * Drag `monitor_FR` to `playback_FR` + + .. image:: ../../../images/discord_calls_05.png diff --git a/docs/source/images/discord_calls_01.png b/docs/source/images/discord_calls_01.png new file mode 100644 index 0000000000000000000000000000000000000000..d26e62a811eeda20da7c97c176b9a33b764b3ef4 GIT binary patch literal 28055 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 literal 0 HcmV?d00001 diff --git a/docs/source/images/discord_calls_02.png b/docs/source/images/discord_calls_02.png new file mode 100644 index 0000000000000000000000000000000000000000..6a739be788b824d669cb07014b97bd9d01c467c0 GIT binary patch literal 39673 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 literal 0 HcmV?d00001 diff --git a/docs/source/images/discord_calls_03.png b/docs/source/images/discord_calls_03.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd345002335a336add6a610b7715742ffc0fce0 GIT binary patch literal 28099 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
    bDuA<9bh1@^u1Qv_v3nwgM{ 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

    9-JF4k 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 Date: Fri, 19 Apr 2024 13:31:56 +0100 Subject: [PATCH 22/35] fix(windows/amf): Revert RC/HRD defaults; improve documentation & config parsing (#2419) --- docs/source/about/advanced_usage.rst | 114 ++++++++----- src/config.cpp | 66 ++++---- src/config.h | 14 +- src_assets/common/assets/web/config.html | 151 +++++++++++------- .../assets/web/public/assets/locale/en.json | 15 +- 5 files changed, 219 insertions(+), 141 deletions(-) diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst index 1c3a0f64c56..6aa33feee43 100644 --- a/docs/source/about/advanced_usage.rst +++ b/docs/source/about/advanced_usage.rst @@ -1471,34 +1471,42 @@ keybindings `AMD AMF Encoder `__ --------------------------------------------------------------------- -`amd_quality `__ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +`amd_usage `__ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Description** - The encoder preset to use. + The encoder usage profile is used to set the base set of encoding + parameters. .. note:: This option only applies when using amdvce `encoder`_. + .. note:: The other AMF options that follow will override a subset + of the settings applied by your usage profile, but there are + hidden parameters set in usage profiles that cannot be + overridden elsewhere. + **Choices** .. table:: :widths: auto - ========== =========== - Value Description - ========== =========== - speed prefer speed - balanced balanced - quality prefer quality - ========== =========== + ======================= =========== + Value Description + ======================= =========== + transcoding transcoding (slowest) + webcam webcam (slow) + lowlatency_high_quality low latency, high quality (fast) + lowlatency low latency (faster) + ultralowlatency ultra low latency (fastest) + ======================= =========== **Default** - ``balanced`` + ``ultralowlatency`` **Example** .. code-block:: text - amd_quality = balanced + amd_usage = ultralowlatency `amd_rc `__ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1508,6 +1516,11 @@ keybindings .. note:: This option only applies when using amdvce `encoder`_. + .. warning:: The 'vbr_latency' option generally works best, but + some bitrate overshoots may still occur. Enabling HRD allows + all bitrate based rate controls to better constrain peak bitrate, + but may result in encoding artifacts depending on your card. + **Choices** .. table:: @@ -1523,81 +1536,98 @@ keybindings =========== =========== **Default** - ``cbr`` + ``vbr_latency`` **Example** .. code-block:: text - amd_rc = cbr + amd_rc = vbr_latency -`amd_usage `__ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +`amd_enforce_hrd `__ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Description** - The encoder usage profile, used to balance latency with encoding quality. + Enable Hypothetical Reference Decoder (HRD) enforcement to help constrain the target bitrate. .. note:: This option only applies when using amdvce `encoder`_. + .. warning:: HRD is known to cause encoding artifacts or negatively affect + encoding quality on certain cards. + **Choices** .. table:: :widths: auto - ======================= =========== - Value Description - ======================= =========== - transcoding transcoding (slowest) - webcam webcam (slow) - lowlatency_high_quality low latency, high quality (fast) - lowlatency low latency (faster) - ultralowlatency ultra low latency (fastest) - ======================= =========== + ======== =========== + Value Description + ======== =========== + enabled enable HRD + disabled disable HRD + ======== =========== **Default** - ``ultralowlatency`` + ``disabled`` **Example** .. code-block:: text - amd_usage = ultralowlatency + amd_enforce_hrd = disabled -`amd_preanalysis `__ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +`amd_quality `__ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Description** - Preanalysis can increase encoding quality at the cost of latency. + The quality profile controls the tradeoff between + speed and quality of encoding. .. note:: This option only applies when using amdvce `encoder`_. +**Choices** + +.. table:: + :widths: auto + + ========== =========== + Value Description + ========== =========== + speed prefer speed + balanced balanced + quality prefer quality + ========== =========== + **Default** - ``disabled`` + ``balanced`` **Example** .. code-block:: text - amd_preanalysis = disabled + amd_quality = balanced -`amd_vbaq `__ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +`amd_preanalysis `__ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Description** - Variance Based Adaptive Quantization (VBAQ) can increase subjective visual quality. + Preanalysis can increase encoding quality at the cost of latency. .. note:: This option only applies when using amdvce `encoder`_. **Default** - ``enabled`` + ``disabled`` **Example** .. code-block:: text - amd_vbaq = enabled + amd_preanalysis = disabled -`amd_enforce_hrd `__ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +`amd_vbaq `__ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Description** - Enable Hypothetical Reference Decoder (HRD) enforcement to help constrain the target bitrate. + Variance Based Adaptive Quantization (VBAQ) can increase subjective + visual quality by prioritizing allocation of more bits to smooth + areas compared to more textured areas. .. note:: This option only applies when using amdvce `encoder`_. @@ -1607,7 +1637,7 @@ keybindings **Example** .. code-block:: text - amd_enforce_hrd = enabled + amd_vbaq = enabled `amd_coder `__ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/config.cpp b/src/config.cpp index ab6dbfb5c37..40f8d065a81 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -124,24 +124,24 @@ namespace config { }; enum class rc_av1_e : int { + cbr = AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_CBR, cqp = AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_CONSTANT_QP, vbr_latency = AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR, - vbr_peak = AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR, - cbr = AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_CBR + vbr_peak = AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR }; enum class rc_hevc_e : int { + cbr = AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR, cqp = AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CONSTANT_QP, vbr_latency = AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR, - vbr_peak = AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR, - cbr = AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR + vbr_peak = AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR }; enum class rc_h264_e : int { + cbr = AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CBR, cqp = AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CONSTANT_QP, vbr_latency = AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR, - vbr_peak = AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR, - cbr = AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CBR + vbr_peak = AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR }; enum class usage_av1_e : int { @@ -176,41 +176,41 @@ namespace config { template std::optional - quality_from_view(const std::string_view &quality_type) { + quality_from_view(const std::string_view &quality_type, const std::optional(&original)) { #define _CONVERT_(x) \ if (quality_type == #x##sv) return (int) T::x + _CONVERT_(balanced); _CONVERT_(quality); _CONVERT_(speed); - _CONVERT_(balanced); #undef _CONVERT_ - return std::nullopt; + return original; } template std::optional - rc_from_view(const std::string_view &rc) { + rc_from_view(const std::string_view &rc, const std::optional(&original)) { #define _CONVERT_(x) \ if (rc == #x##sv) return (int) T::x + _CONVERT_(cbr); _CONVERT_(cqp); _CONVERT_(vbr_latency); _CONVERT_(vbr_peak); - _CONVERT_(cbr); #undef _CONVERT_ - return std::nullopt; + return original; } template std::optional - usage_from_view(const std::string_view &usage) { + usage_from_view(const std::string_view &usage, const std::optional(&original)) { #define _CONVERT_(x) \ if (usage == #x##sv) return (int) T::x - _CONVERT_(transcoding); - _CONVERT_(webcam); _CONVERT_(lowlatency); _CONVERT_(lowlatency_high_quality); + _CONVERT_(transcoding); _CONVERT_(ultralowlatency); + _CONVERT_(webcam); #undef _CONVERT_ - return std::nullopt; + return original; } int @@ -219,7 +219,7 @@ namespace config { if (coder == "cabac"sv || coder == "ac"sv) return cabac; if (coder == "cavlc"sv || coder == "vlc"sv) return cavlc; - return -1; + return _auto; } } // namespace amd @@ -350,18 +350,18 @@ namespace config { }, // qsv { - (int) amd::quality_h264_e::balanced, // quality (h264) - (int) amd::quality_hevc_e::balanced, // quality (hevc) - (int) amd::quality_av1_e::balanced, // quality (av1) - (int) amd::rc_h264_e::cbr, // rate control (h264) - (int) amd::rc_hevc_e::cbr, // rate control (hevc) - (int) amd::rc_av1_e::cbr, // rate control (av1) (int) amd::usage_h264_e::ultralowlatency, // usage (h264) (int) amd::usage_hevc_e::ultralowlatency, // usage (hevc) (int) amd::usage_av1_e::ultralowlatency, // usage (av1) + (int) amd::rc_h264_e::vbr_latency, // rate control (h264) + (int) amd::rc_hevc_e::vbr_latency, // rate control (hevc) + (int) amd::rc_av1_e::vbr_latency, // rate control (av1) + 0, // enforce_hrd + (int) amd::quality_h264_e::balanced, // quality (h264) + (int) amd::quality_hevc_e::balanced, // quality (hevc) + (int) amd::quality_av1_e::balanced, // quality (av1) 0, // preanalysis 1, // vbaq - 1, // enforce_hrd (int) amd::coder_e::_auto, // coder }, // amd @@ -982,26 +982,26 @@ namespace config { std::string quality; string_f(vars, "amd_quality", quality); if (!quality.empty()) { - video.amd.amd_quality_h264 = amd::quality_from_view(quality); - video.amd.amd_quality_hevc = amd::quality_from_view(quality); - video.amd.amd_quality_av1 = amd::quality_from_view(quality); + video.amd.amd_quality_h264 = amd::quality_from_view(quality, video.amd.amd_quality_h264); + video.amd.amd_quality_hevc = amd::quality_from_view(quality, video.amd.amd_quality_hevc); + video.amd.amd_quality_av1 = amd::quality_from_view(quality, video.amd.amd_quality_av1); } std::string rc; string_f(vars, "amd_rc", rc); int_f(vars, "amd_coder", video.amd.amd_coder, amd::coder_from_view); if (!rc.empty()) { - video.amd.amd_rc_h264 = amd::rc_from_view(rc); - video.amd.amd_rc_hevc = amd::rc_from_view(rc); - video.amd.amd_rc_av1 = amd::rc_from_view(rc); + video.amd.amd_rc_h264 = amd::rc_from_view(rc, video.amd.amd_rc_h264); + video.amd.amd_rc_hevc = amd::rc_from_view(rc, video.amd.amd_rc_hevc); + video.amd.amd_rc_av1 = amd::rc_from_view(rc, video.amd.amd_rc_av1); } std::string usage; string_f(vars, "amd_usage", usage); if (!usage.empty()) { - video.amd.amd_usage_h264 = amd::usage_from_view(usage); - video.amd.amd_usage_hevc = amd::usage_from_view(usage); - video.amd.amd_usage_av1 = amd::usage_from_view(usage); + video.amd.amd_usage_h264 = amd::usage_from_view(usage, video.amd.amd_usage_h264); + video.amd.amd_usage_hevc = amd::usage_from_view(usage, video.amd.amd_usage_hevc); + video.amd.amd_usage_av1 = amd::usage_from_view(usage, video.amd.amd_usage_av1); } bool_f(vars, "amd_preanalysis", (bool &) video.amd.amd_preanalysis); diff --git a/src/config.h b/src/config.h index 2c85096bac6..55098c0c5a1 100644 --- a/src/config.h +++ b/src/config.h @@ -48,18 +48,18 @@ namespace config { } qsv; struct { - std::optional amd_quality_h264; - std::optional amd_quality_hevc; - std::optional amd_quality_av1; - std::optional amd_rc_h264; - std::optional amd_rc_hevc; - std::optional amd_rc_av1; std::optional amd_usage_h264; std::optional amd_usage_hevc; std::optional amd_usage_av1; + std::optional amd_rc_h264; + std::optional amd_rc_hevc; + std::optional amd_rc_av1; + std::optional amd_enforce_hrd; + std::optional amd_quality_h264; + std::optional amd_quality_hevc; + std::optional amd_quality_av1; std::optional amd_preanalysis; std::optional amd_vbaq; - std::optional amd_enforce_hrd; int amd_coder; } amd; diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html index a48e4a41404..869b2417846 100644 --- a/src_assets/common/assets/web/config.html +++ b/src_assets/common/assets/web/config.html @@ -875,74 +875,113 @@

    - -
    - - -
    - - -
    - - -
    -
    +
    {{ $t('config.amd_usage_desc') }}
    - -
    - - -
    + +
    +
    +

    + +

    +
    +
    + +
    + + +
    {{ $t('config.amd_rc_desc') }}
    +
    - -
    - - + +
    + + +
    {{ $t('config.amd_enforce_hrd_desc') }}
    +
    +
    +
    +
    - -
    - - -
    + +
    +
    +

    + +

    +
    +
    + +
    + + +
    {{ $t('config.amd_quality_desc') }}
    +
    - -
    - - + +
    + + +
    {{ $t('config.amd_preanalysis_desc') }}
    +
    + + +
    + + +
    {{ $t('config.amd_vbaq_desc') }}
    +
    + + +
    + + +
    {{ $t('config.amd_coder_desc') }}
    +
    +
    +
    +
    @@ -1156,12 +1195,12 @@

    id: "amd", name: "AMD AMF Encoder", options: { - "amd_quality": "balanced", - "amd_rc": "cbr", "amd_usage": "ultralowlatency", + "amd_rc": "vbr_latency", + "amd_enforce_hrd": "disabled", + "amd_quality": "balanced", "amd_preanalysis": "disabled", "amd_vbaq": "enabled", - "amd_enforce_hrd": "enabled", "amd_coder": "auto", }, }, diff --git a/src_assets/common/assets/web/public/assets/locale/en.json b/src_assets/common/assets/web/public/assets/locale/en.json index f36b984c24e..4a56b2d659a 100644 --- a/src_assets/common/assets/web/public/assets/locale/en.json +++ b/src_assets/common/assets/web/public/assets/locale/en.json @@ -92,24 +92,33 @@ "always_send_scancodes": "Always Send Scancodes", "always_send_scancodes_desc": "Sending scancodes enhances compatibility with games and apps but may result in incorrect keyboard input from certain clients that aren't using a US English keyboard layout. Enable if keyboard input is not working at all in certain applications. Disable if keys on the client are generating the wrong input on the host.", "amd_coder": "AMF Coder (H264)", + "amd_coder_desc": "Allows you to select the entropy encoding to prioritize quality or encoding speed. H.264 only.", "amd_enforce_hrd": "AMF Hypothetical Reference Decoder (HRD) Enforcement", + "amd_enforce_hrd_desc": "Increases the constraints on rate control to meet HRD model requirements. This greatly reduces bitrate overflows, but may cause encoding artifacts or reduced quality on certain cards.", "amd_preanalysis": "AMF Preanalysis", + "amd_preanalysis_desc": "This enables rate-control preanalysis, which may increase quality at the expense of increased encoding latency.", "amd_quality": "AMF Quality", "amd_quality_balanced": "balanced -- balanced (default)", + "amd_quality_desc": "This controls the balance between encoding speed and quality.", + "amd_quality_group" : "AMF Quality Settings", "amd_quality_quality": "quality -- prefer quality", "amd_quality_speed": "speed -- prefer speed", "amd_rc": "AMF Rate Control", - "amd_rc_cbr": "cbr -- constant bitrate (default)", + "amd_rc_cbr": "cbr -- constant bitrate (recommended if HRD is enabled)", "amd_rc_cqp": "cqp -- constant qp mode", - "amd_rc_vbr_latency": "vbr_latency -- latency constrained variable bitrate", + "amd_rc_desc": "This controls the rate control method to ensure we are not exceeding the client bitrate target. 'cqp' is not suitable for bitrate targeting, and other options besides 'vbr_latency' depend on HRD Enforcement to help constrain bitrate overflows.", + "amd_rc_group" : "AMF Rate Control Settings", + "amd_rc_vbr_latency": "vbr_latency -- latency constrained variable bitrate (recommended if HRD is disabled; default)", "amd_rc_vbr_peak": "vbr_peak -- peak constrained variable bitrate", "amd_usage": "AMF Usage", + "amd_usage_desc": "This sets the base encoding profile. All options presented below will override a subset of the usage profile, but there are additional hidden settings applied that cannot be configured elsewhere.", "amd_usage_lowlatency": "lowlatency - low latency (fastest)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - low latency, high quality (fast)", "amd_usage_transcoding": "transcoding -- transcoding (slowest)", - "amd_usage_ultralowlatency": "ultralowlatency - ultra low latency (fastest)", + "amd_usage_ultralowlatency": "ultralowlatency - ultra low latency (fastest; default)", "amd_usage_webcam": "webcam -- webcam (slow)", "amd_vbaq": "AMF Variance Based Adaptive Quantization (VBAQ)", + "amd_vbaq_desc": "The human visual system is typically less sensitive to artifacts in highly textured areas. In VBAQ mode, pixel variance is used to indicate the complexity of spatial textures, allowing the encoder to allocate more bits to smoother areas. Enabling this feature leads to improvements in subjective visual quality with some content.", "apply_note": "Click 'Apply' to restart Sunshine and apply changes. This will terminate any running sessions.", "audio_sink": "Audio Sink", "audio_sink_desc_linux": "The name of the audio sink used for Audio Loopback. If you do not specify this variable, pulseaudio will select the default monitor device. You can find the name of the audio sink using either command:", From ad2483416dae40532d0071a2316257161f097950 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 15:00:44 -0400 Subject: [PATCH 23/35] build(deps): bump packaging/linux/flatpak/deps/org.flatpak.Builder.BaseApp from `6e295e6` to `5532d43` (#2444) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packaging/linux/flatpak/deps/org.flatpak.Builder.BaseApp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/linux/flatpak/deps/org.flatpak.Builder.BaseApp b/packaging/linux/flatpak/deps/org.flatpak.Builder.BaseApp index 6e295e63074..5532d4354e0 160000 --- a/packaging/linux/flatpak/deps/org.flatpak.Builder.BaseApp +++ b/packaging/linux/flatpak/deps/org.flatpak.Builder.BaseApp @@ -1 +1 @@ -Subproject commit 6e295e630740ae8ef82c6291724e709b36477042 +Subproject commit 5532d4354e05ccfc3421e670fcb4e7fa5512ab39 From abe256144add1980a0bd1d6377bacf3b10d15b21 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 16:03:37 -0400 Subject: [PATCH 24/35] build(deps): bump actions-js/push from 1.4 to 1.5 (#2440) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-pages.yml b/.github/workflows/update-pages.yml index 5fb435d1602..fff2dea1d3d 100644 --- a/.github/workflows/update-pages.yml +++ b/.github/workflows/update-pages.yml @@ -51,7 +51,7 @@ jobs: if: >- (github.event_name == 'push' && github.ref == 'refs/heads/master') || (github.event_name == 'workflow_dispatch') - uses: actions-js/push@v1.4 + uses: actions-js/push@v1.5 with: github_token: ${{ secrets.GH_BOT_TOKEN }} author_email: ${{ secrets.GH_BOT_EMAIL }} From 75fce2176102411274d7bc50a4eaddb27eb1b754 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 17:26:14 -0400 Subject: [PATCH 25/35] build(deps): bump packaging/linux/flatpak/deps/shared-modules from `d022995` to `ec91811` (#2428) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- packaging/linux/flatpak/deps/shared-modules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/linux/flatpak/deps/shared-modules b/packaging/linux/flatpak/deps/shared-modules index d0229951ac2..ec91811777c 160000 --- a/packaging/linux/flatpak/deps/shared-modules +++ b/packaging/linux/flatpak/deps/shared-modules @@ -1 +1 @@ -Subproject commit d0229951ac23967c4f5697bd7b5c1bd7e641b8c3 +Subproject commit ec91811777c655b6a3091d60f1eadd79e0fbc957 From 38fa794009bc90d67a32c67d56d46246102bd5bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 18:28:01 -0400 Subject: [PATCH 26/35] build(deps): bump third-party/wlr-protocols from `4264185` to `2b8d433` (#2067) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- third-party/wlr-protocols | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third-party/wlr-protocols b/third-party/wlr-protocols index 4264185db3b..2b8d43325b7 160000 --- a/third-party/wlr-protocols +++ b/third-party/wlr-protocols @@ -1 +1 @@ -Subproject commit 4264185db3b7e961e7f157e1cc4fd0ab75137568 +Subproject commit 2b8d43325b7012cc3f9b55c08d26e50e42beac7d From 15386f386a9dd43fc3ddf47ac829516d979b3b1e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 19:33:17 -0400 Subject: [PATCH 27/35] build(deps): bump third-party/wayland-protocols from `46f201b` to `08d1c72` (#2443) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- third-party/wayland-protocols | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third-party/wayland-protocols b/third-party/wayland-protocols index 46f201bd7b3..08d1c7276d4 160000 --- a/third-party/wayland-protocols +++ b/third-party/wayland-protocols @@ -1 +1 @@ -Subproject commit 46f201bd7b328ab5ac531231c030ca5c4090b1da +Subproject commit 08d1c7276d41379acfea353b5c739b72d51827e2 From 05416bb9c275ec07c77a3a68d739269739c05486 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 20:34:41 -0400 Subject: [PATCH 28/35] build(deps): bump LizardByte/homebrew-release-action from 2024.409.24405 to 2024.417.220943 (#2441) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 47972fa9207..872ccc384ef 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -625,7 +625,7 @@ jobs: echo "publish=${PUBLISH}" >> $GITHUB_OUTPUT - name: Validate and Publish Homebrew Formula - uses: LizardByte/homebrew-release-action@v2024.409.24405 + uses: LizardByte/homebrew-release-action@v2024.417.220943 with: formula_file: ${{ github.workspace }}/homebrew/sunshine.rb git_email: ${{ secrets.GH_BOT_EMAIL }} From 24597178c7a26d616358e8db5972c8ffbc0dc7af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 21:41:18 -0400 Subject: [PATCH 29/35] build(deps): bump vue-i18n from 9.11.0 to 9.13.0 (#2442) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index db309cb7ec9..174c35b6b3d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,6 @@ "vite": "4.5.2", "vite-plugin-ejs": "1.6.4", "vue": "3.4.5", - "vue-i18n": "9.11.0" + "vue-i18n": "9.13.0" } } From b4e6873649882ab0b9cd8b88e7d45e04f212cba6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 19 Apr 2024 23:05:44 -0400 Subject: [PATCH 30/35] build(deps): bump vue from 3.4.5 to 3.4.23 (#2434) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 174c35b6b3d..08b860c6285 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "bootstrap": "5.3.3", "vite": "4.5.2", "vite-plugin-ejs": "1.6.4", - "vue": "3.4.5", + "vue": "3.4.23", "vue-i18n": "9.13.0" } } From 6c0b01737f331cc7539482cb6b4e6026888e0e55 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Sat, 20 Apr 2024 11:36:40 -0400 Subject: [PATCH 31/35] ci(codecov): skip search (#2430) --- .github/workflows/CI.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 872ccc384ef..e847ea362e2 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -515,6 +515,7 @@ jobs: startsWith(github.repository, 'LizardByte/') uses: codecov/codecov-action@v4 with: + disable_search: true fail_ci_if_error: true files: ./build/coverage.xml flags: ${{ runner.os }} @@ -852,6 +853,7 @@ jobs: startsWith(github.repository, 'LizardByte/') uses: codecov/codecov-action@v4 with: + disable_search: true fail_ci_if_error: false # todo: re-enable this when action is fixed files: ./build/coverage.xml flags: ${{ runner.os }}-${{ matrix.os_version }} @@ -1093,6 +1095,7 @@ jobs: startsWith(github.repository, 'LizardByte/') uses: codecov/codecov-action@v4 with: + disable_search: true fail_ci_if_error: true files: ./build/coverage.xml flags: ${{ runner.os }} From 8eead6597e5e17725a39fe47b53b6740751b6a51 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Sat, 20 Apr 2024 12:49:15 -0400 Subject: [PATCH 32/35] chore: repo updates (#2416) --- .gitignore | 52 ++++++++++++++++++++++++++++++++-------- scripts/requirements.txt | 1 + 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index c3a04d9652d..502fc372577 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,45 @@ -build -cmake-build* -.DS_Store -.vscode -.vs -*.swp -*.kdev4 - -.cache -.idea +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# JetBrains IDE +.idea/ + +# VSCode IDE +.vscode/ + +# build directories +build/ +cmake-*/ # npm node_modules/ diff --git a/scripts/requirements.txt b/scripts/requirements.txt index c65a1d30930..dc931f2df29 100644 --- a/scripts/requirements.txt +++ b/scripts/requirements.txt @@ -1 +1,2 @@ Babel==2.14.0 +clang-format From dc22e2474474268d49838ec77980883aebcac090 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sun, 7 Apr 2024 19:15:35 +0200 Subject: [PATCH 33/35] Autofocus PIN input on Web UI pin page This makes it faster to input the PIN after clicking on the PIN notification on the desktop, since you no longer need to click the PIN input or focus on it by pressing Tab many times. --- src_assets/common/assets/web/pin.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src_assets/common/assets/web/pin.html b/src_assets/common/assets/web/pin.html index 530ab44b199..056bd6e20db 100644 --- a/src_assets/common/assets/web/pin.html +++ b/src_assets/common/assets/web/pin.html @@ -11,7 +11,7 @@

    {{ $t('pin.pin_pairing') }}

    - +
    From 68c0f53bfcc734f203fdb032cc43ffb1fa899950 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Sat, 20 Apr 2024 16:38:27 -0400 Subject: [PATCH 34/35] New Crowdin updates (#2392) --- docs/source/about/advanced_usage.rst | 2 + scripts/_locale.py | 1 + src/config.cpp | 1 + src_assets/common/assets/web/config.html | 1 + .../assets/web/public/assets/locale/de.json | 9 + .../assets/web/public/assets/locale/en.json | 4 +- .../web/public/assets/locale/en_GB.json | 9 + .../web/public/assets/locale/en_US.json | 19 +- .../assets/web/public/assets/locale/es.json | 13 +- .../assets/web/public/assets/locale/fr.json | 17 +- .../assets/web/public/assets/locale/it.json | 9 + .../assets/web/public/assets/locale/ja.json | 91 ++-- .../assets/web/public/assets/locale/pt.json | 389 ++++++++++++++++++ .../assets/web/public/assets/locale/ru.json | 9 + .../assets/web/public/assets/locale/sv.json | 9 + .../assets/web/public/assets/locale/zh.json | 69 ++-- 16 files changed, 568 insertions(+), 84 deletions(-) create mode 100644 src_assets/common/assets/web/public/assets/locale/pt.json diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst index 6aa33feee43..b2e64c0140f 100644 --- a/docs/source/about/advanced_usage.rst +++ b/docs/source/about/advanced_usage.rst @@ -68,6 +68,8 @@ editing the `conf` file in a text editor. Use the examples as reference. es Spanish fr French it Italian + ja Japanese + pt Portuguese ru Russian sv Swedish zh Chinese (Simplified) diff --git a/scripts/_locale.py b/scripts/_locale.py index 884805702e5..d035414917d 100644 --- a/scripts/_locale.py +++ b/scripts/_locale.py @@ -32,6 +32,7 @@ 'fr', # French 'it', # Italian 'ja', # Japanese + 'pt', # Portuguese 'ru', # Russian 'sv', # Swedish 'zh', # Chinese diff --git a/src/config.cpp b/src/config.cpp index 40f8d065a81..6a9e1cecb76 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -1120,6 +1120,7 @@ namespace config { "fr"sv, // French "it"sv, // Italian "ja"sv, // Japanese + "pt"sv, // Portuguese "ru"sv, // Russian "sv"sv, // Swedish "zh"sv, // Chinese diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html index 869b2417846..859954ac24e 100644 --- a/src_assets/common/assets/web/config.html +++ b/src_assets/common/assets/web/config.html @@ -49,6 +49,7 @@

    {{ $t('config.configuration') }}

    + diff --git a/src_assets/common/assets/web/public/assets/locale/de.json b/src_assets/common/assets/web/public/assets/locale/de.json index d3967262401..5ad6efbbaa7 100644 --- a/src_assets/common/assets/web/public/assets/locale/de.json +++ b/src_assets/common/assets/web/public/assets/locale/de.json @@ -92,24 +92,33 @@ "always_send_scancodes": "Scancodes immer senden", "always_send_scancodes_desc": "Das Senden von Scancodes verbessert die Kompatibilität mit Spielen und Apps, kann aber zu falschen Tastatureingaben von bestimmten Clients führen, die kein amerikanisches Tastaturlayout verwenden. Aktivieren, wenn die Eingabe der Tastatur in bestimmten Anwendungen überhaupt nicht funktioniert. Deaktivieren, wenn Schlüssel auf dem Client die falsche Eingabe auf dem Host generieren.", "amd_coder": "AMF Coder (H264)", + "amd_coder_desc": "Erlaubt es Ihnen, die Entropy-Kodierung auszuwählen, um die Qualität oder die Kodierungsgeschwindigkeit zu priorisieren. H.264 nur.", "amd_enforce_hrd": "Hypothetische Referenz-Decodierer (HRD) durchsetzen", + "amd_enforce_hrd_desc": "Steigern Sie die Einschränkungen bei der Ratensteuerung, um die Anforderungen des HRD-Modells zu erfüllen. Dies reduziert die Bitratenüberläufe erheblich, kann jedoch zu Kodierungsartefakten oder zu geringerer Qualität auf bestimmten Karten führen.", "amd_preanalysis": "AMF-Voranalyse", + "amd_preanalysis_desc": "Dies ermöglicht die Vorabanalyse der Rate, wodurch die Qualität auf Kosten einer erhöhten Encoding-Latenz erhöht werden kann.", "amd_quality": "AMF-Qualität", "amd_quality_balanced": "ausgewogen -- Ausgewogen (Standard)", + "amd_quality_desc": "Dies steuert die Balance zwischen Kodierungsgeschwindigkeit und Qualität.", + "amd_quality_group": "AMF Qualitätseinstellungen", "amd_quality_quality": "Qualität -- Qualität bevorzugen", "amd_quality_speed": "speed -- bevorzuge Geschwindigkeit", "amd_rc": "AMF-Ratensteuerung", "amd_rc_cbr": "cbr – Konstante Bitrate", "amd_rc_cqp": "cqp -- Konstanter qp-Modus", + "amd_rc_desc": "Diese steuert die Methode der Ratensteuerung, um sicherzustellen, dass wir nicht das Client-Bitrate Ziel überschreiten. 'cqp' ist nicht geeignet für Bitraten-Targeting, und andere Optionen außer 'vbr_latency' hängen von der Durchsetzung von HRD ab, um Bitraten-Überläufe einzuschränken.", + "amd_rc_group": "AMF Rate Control Einstellungen", "amd_rc_vbr_latency": "vbr_latency -- latenzeingeschränkte Bitrate (Standard)", "amd_rc_vbr_peak": "vbr_peak – eingeschränkte Variablen-Bitrate spitzen", "amd_usage": "AMF-Nutzung", + "amd_usage_desc": "Dies legt das Basiscodierungsprofil fest. Alle unten dargestellten Optionen werden eine Teilmenge des Nutzungsprofils überschreiben. Es werden jedoch zusätzliche versteckte Einstellungen angewendet, die an anderer Stelle nicht konfiguriert werden können.", "amd_usage_lowlatency": "niedrige Latenz - niedrige Latenz (schnell)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - niedrige Latenz, hohe Qualität (schnell)", "amd_usage_transcoding": "transcoding -- Umkodierung (langsamste)", "amd_usage_ultralowlatency": "ultralowlatenz - extrem niedrige Latenz (schnellste)", "amd_usage_webcam": "webcam -- Webcam (langsam)", "amd_vbaq": "AMF-Varianz-basierte Adaptive Quantisierung (VBAQ)", + "amd_vbaq_desc": "Das menschliche visuelle System ist in der Regel weniger empfindlich auf Artefakte in stark strukturierten Bereichen. Im VBAQ-Modus wird die Pixelvarianz verwendet, um die Komplexität der räumlichen Texturen anzuzeigen, so dass der Encoder mehr Bits für glättende Bereiche zuweisen kann. Die Aktivierung dieser Funktion führt zu Verbesserungen der subjektiven visuellen Qualität mit einigen Inhalten.", "apply_note": "Klicken Sie auf 'Anwenden', um Sunshine neu zu starten und Änderungen anzuwenden. Dies wird alle laufenden Sitzungen beenden.", "audio_sink": "Audio Sink", "audio_sink_desc_linux": "Der Name des Audio-Spüls, der für Audio Loopback verwendet wird. Wenn Sie diese Variable nicht angeben, wählt pulseaudio das Standard-Monitorgerät. Sie können den Namen des Audiospülers mit einem Befehl finden:", diff --git a/src_assets/common/assets/web/public/assets/locale/en.json b/src_assets/common/assets/web/public/assets/locale/en.json index 4a56b2d659a..37e0b41ee61 100644 --- a/src_assets/common/assets/web/public/assets/locale/en.json +++ b/src_assets/common/assets/web/public/assets/locale/en.json @@ -100,14 +100,14 @@ "amd_quality": "AMF Quality", "amd_quality_balanced": "balanced -- balanced (default)", "amd_quality_desc": "This controls the balance between encoding speed and quality.", - "amd_quality_group" : "AMF Quality Settings", + "amd_quality_group": "AMF Quality Settings", "amd_quality_quality": "quality -- prefer quality", "amd_quality_speed": "speed -- prefer speed", "amd_rc": "AMF Rate Control", "amd_rc_cbr": "cbr -- constant bitrate (recommended if HRD is enabled)", "amd_rc_cqp": "cqp -- constant qp mode", "amd_rc_desc": "This controls the rate control method to ensure we are not exceeding the client bitrate target. 'cqp' is not suitable for bitrate targeting, and other options besides 'vbr_latency' depend on HRD Enforcement to help constrain bitrate overflows.", - "amd_rc_group" : "AMF Rate Control Settings", + "amd_rc_group": "AMF Rate Control Settings", "amd_rc_vbr_latency": "vbr_latency -- latency constrained variable bitrate (recommended if HRD is disabled; default)", "amd_rc_vbr_peak": "vbr_peak -- peak constrained variable bitrate", "amd_usage": "AMF Usage", diff --git a/src_assets/common/assets/web/public/assets/locale/en_GB.json b/src_assets/common/assets/web/public/assets/locale/en_GB.json index bc10222217e..89f9d8e9ac4 100644 --- a/src_assets/common/assets/web/public/assets/locale/en_GB.json +++ b/src_assets/common/assets/web/public/assets/locale/en_GB.json @@ -92,24 +92,33 @@ "always_send_scancodes": "Always Send Scancodes", "always_send_scancodes_desc": "Sending scancodes enhances compatibility with games and apps but may result in incorrect keyboard input from certain clients that aren't using a US English keyboard layout. Enable if keyboard input is not working at all in certain applications. Disable if keys on the client are generating the wrong input on the host.", "amd_coder": "AMF Coder (H264)", + "amd_coder_desc": "Allows you to select the entropy encoding to prioritize quality or encoding speed. H.264 only.", "amd_enforce_hrd": "AMF Hypothetical Reference Decoder (HRD) Enforcement", + "amd_enforce_hrd_desc": "Increases the constraints on rate control to meet HRD model requirements. This greatly reduces bitrate overflows, but may cause encoding artifacts or reduced quality on certain cards.", "amd_preanalysis": "AMF Preanalysis", + "amd_preanalysis_desc": "This enables rate-control preanalysis, which may increase quality at the expense of increased encoding latency.", "amd_quality": "AMF Quality", "amd_quality_balanced": "balanced -- balanced (default)", + "amd_quality_desc": "This controls the balance between encoding speed and quality.", + "amd_quality_group": "AMF Quality Settings", "amd_quality_quality": "quality -- prefer quality", "amd_quality_speed": "speed -- prefer speed", "amd_rc": "AMF Rate Control", "amd_rc_cbr": "cbr -- constant bitrate", "amd_rc_cqp": "cqp -- constant qp mode", + "amd_rc_desc": "This controls the rate control method to ensure we are not exceeding the client bitrate target. 'cqp' is not suitable for bitrate targeting, and other options besides 'vbr_latency' depend on HRD Enforcement to help constrain bitrate overflows.", + "amd_rc_group": "AMF Rate Control Settings", "amd_rc_vbr_latency": "vbr_latency -- latency constrained variable bitrate (default)", "amd_rc_vbr_peak": "vbr_peak -- peak constrained variable bitrate", "amd_usage": "AMF Usage", + "amd_usage_desc": "This sets the base encoding profile. All options presented below will override a subset of the usage profile, but there are additional hidden settings applied that cannot be configured elsewhere.", "amd_usage_lowlatency": "lowlatency - low latency (fast)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - low latency, high quality (fast)", "amd_usage_transcoding": "transcoding -- transcoding (slowest)", "amd_usage_ultralowlatency": "ultralowlatency - ultra low latency (fastest)", "amd_usage_webcam": "webcam -- webcam (slow)", "amd_vbaq": "AMF Variance Based Adaptive Quantization (VBAQ)", + "amd_vbaq_desc": "The human visual system is typically less sensitive to artifacts in highly textured areas. In VBAQ mode, pixel variance is used to indicate the complexity of spatial textures, allowing the encoder to allocate more bits to smoother areas. Enabling this feature leads to improvements in subjective visual quality with some content.", "apply_note": "Click 'Apply' to restart Sunshine and apply changes. This will terminate any running sessions.", "audio_sink": "Audio Sink", "audio_sink_desc_linux": "The name of the audio sink used for Audio Loopback. If you do not specify this variable, pulseaudio will select the default monitor device. You can find the name of the audio sink using either command:", diff --git a/src_assets/common/assets/web/public/assets/locale/en_US.json b/src_assets/common/assets/web/public/assets/locale/en_US.json index 6fa1f3a04c4..37e0b41ee61 100644 --- a/src_assets/common/assets/web/public/assets/locale/en_US.json +++ b/src_assets/common/assets/web/public/assets/locale/en_US.json @@ -92,24 +92,33 @@ "always_send_scancodes": "Always Send Scancodes", "always_send_scancodes_desc": "Sending scancodes enhances compatibility with games and apps but may result in incorrect keyboard input from certain clients that aren't using a US English keyboard layout. Enable if keyboard input is not working at all in certain applications. Disable if keys on the client are generating the wrong input on the host.", "amd_coder": "AMF Coder (H264)", + "amd_coder_desc": "Allows you to select the entropy encoding to prioritize quality or encoding speed. H.264 only.", "amd_enforce_hrd": "AMF Hypothetical Reference Decoder (HRD) Enforcement", + "amd_enforce_hrd_desc": "Increases the constraints on rate control to meet HRD model requirements. This greatly reduces bitrate overflows, but may cause encoding artifacts or reduced quality on certain cards.", "amd_preanalysis": "AMF Preanalysis", + "amd_preanalysis_desc": "This enables rate-control preanalysis, which may increase quality at the expense of increased encoding latency.", "amd_quality": "AMF Quality", "amd_quality_balanced": "balanced -- balanced (default)", + "amd_quality_desc": "This controls the balance between encoding speed and quality.", + "amd_quality_group": "AMF Quality Settings", "amd_quality_quality": "quality -- prefer quality", "amd_quality_speed": "speed -- prefer speed", "amd_rc": "AMF Rate Control", - "amd_rc_cbr": "cbr -- constant bitrate (default)", + "amd_rc_cbr": "cbr -- constant bitrate (recommended if HRD is enabled)", "amd_rc_cqp": "cqp -- constant qp mode", - "amd_rc_vbr_latency": "vbr_latency -- latency constrained variable bitrate", + "amd_rc_desc": "This controls the rate control method to ensure we are not exceeding the client bitrate target. 'cqp' is not suitable for bitrate targeting, and other options besides 'vbr_latency' depend on HRD Enforcement to help constrain bitrate overflows.", + "amd_rc_group": "AMF Rate Control Settings", + "amd_rc_vbr_latency": "vbr_latency -- latency constrained variable bitrate (recommended if HRD is disabled; default)", "amd_rc_vbr_peak": "vbr_peak -- peak constrained variable bitrate", "amd_usage": "AMF Usage", + "amd_usage_desc": "This sets the base encoding profile. All options presented below will override a subset of the usage profile, but there are additional hidden settings applied that cannot be configured elsewhere.", "amd_usage_lowlatency": "lowlatency - low latency (fastest)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - low latency, high quality (fast)", "amd_usage_transcoding": "transcoding -- transcoding (slowest)", - "amd_usage_ultralowlatency": "ultralowlatency - ultra low latency (fastest)", + "amd_usage_ultralowlatency": "ultralowlatency - ultra low latency (fastest; default)", "amd_usage_webcam": "webcam -- webcam (slow)", "amd_vbaq": "AMF Variance Based Adaptive Quantization (VBAQ)", + "amd_vbaq_desc": "The human visual system is typically less sensitive to artifacts in highly textured areas. In VBAQ mode, pixel variance is used to indicate the complexity of spatial textures, allowing the encoder to allocate more bits to smoother areas. Enabling this feature leads to improvements in subjective visual quality with some content.", "apply_note": "Click 'Apply' to restart Sunshine and apply changes. This will terminate any running sessions.", "audio_sink": "Audio Sink", "audio_sink_desc_linux": "The name of the audio sink used for Audio Loopback. If you do not specify this variable, pulseaudio will select the default monitor device. You can find the name of the audio sink using either command:", @@ -258,8 +267,8 @@ "qp_desc": "Some devices may not support Constant Bit Rate. For those devices, QP is used instead. Higher value means more compression, but less quality.", "qsv_coder": "QuickSync Coder (H264)", "qsv_preset": "QuickSync Preset", - "qsv_preset_fast": "faster (lower quality)", - "qsv_preset_faster": "fastest (lowest quality)", + "qsv_preset_fast": "fast (low quality)", + "qsv_preset_faster": "faster (lower quality)", "qsv_preset_medium": "medium (default)", "qsv_preset_slow": "slow (good quality)", "qsv_preset_slower": "slower (better quality)", diff --git a/src_assets/common/assets/web/public/assets/locale/es.json b/src_assets/common/assets/web/public/assets/locale/es.json index 5b119a97972..731fc4b4998 100644 --- a/src_assets/common/assets/web/public/assets/locale/es.json +++ b/src_assets/common/assets/web/public/assets/locale/es.json @@ -92,24 +92,33 @@ "always_send_scancodes": "Enviar siempre códigos de escaneo", "always_send_scancodes_desc": "Enviar códigos de escaneo mejora la compatibilidad con juegos y aplicaciones, pero puede resultar en una entrada de teclado incorrecta de ciertos clientes que no están usando una disposición de teclado en inglés de los Estados Unidos. Activar si la entrada de teclado no funciona en absoluto en ciertas aplicaciones. Desactivar si las claves del cliente están generando una entrada incorrecta en el host.", "amd_coder": "Codificador AMF (H264)", + "amd_coder_desc": "Le permite seleccionar la codificación entropía para priorizar la calidad o la velocidad de codificación. H.264 solamente.", "amd_enforce_hrd": "Aplicación del decodificador de referencia hipotético (HRD) AMF", + "amd_enforce_hrd_desc": "Aumenta las restricciones en el control de tasa para cumplir con los requisitos del modelo de HRD. Esto reduce en gran medida los desbordamientos de bitrate pero puede causar artefactos de codificación o menor calidad en ciertas tarjetas.", "amd_preanalysis": "Análisis previo de AMF", + "amd_preanalysis_desc": "Esto permite preanálisis de control de tarifas que puede aumentar la calidad a expensas de una mayor latencia de codificación.", "amd_quality": "Calidad AMF", "amd_quality_balanced": "balanceada -- balanceado (por defecto)", + "amd_quality_desc": "Controla el equilibrio entre la velocidad de codificación y la calidad.", + "amd_quality_group": "Ajustes de calidad AMF", "amd_quality_quality": "calidad -- Preferir calidad", "amd_quality_speed": "velocidad -- preferir velocidad", "amd_rc": "Control de tasa AMF", "amd_rc_cbr": "cbr -- velocidad de bits constante", "amd_rc_cqp": "cqp -- modo qp constante", + "amd_rc_desc": "Esto controla el método de control de tasa para asegurarse de que no estamos excediendo el objetivo de bitrate del cliente. 'cqp' no es apto para targeting, y otras opciones además de 'vbr_latency' dependen de HRD para ayudar a restringir los desbordamientos de bitrate .", + "amd_rc_group": "Ajustes de control de tasa AMF", "amd_rc_vbr_latency": "vbr_latency -- tasa de bits variable restringida por latencia (por defecto)", "amd_rc_vbr_peak": "vbr_peak -- tasa de bits variable restringida máxima", "amd_usage": "Uso de AMF", + "amd_usage_desc": "Establece el perfil de codificación base. Todas las opciones presentadas a continuación anularán un subconjunto del perfil de uso, pero hay opciones ocultas adicionales que no se pueden configurar en otros lugares.", "amd_usage_lowlatency": "baja latencia - baja latencia (la más rápida)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - baja latencia, alta calidad (rápido)", "amd_usage_transcoding": "transcodificación -- transcodificación (más lenta)", "amd_usage_ultralowlatency": "latencia ultra baja - latencia ultra baja (más rápida)", "amd_usage_webcam": "cámara web -- cámara web (lento)", "amd_vbaq": "Cuantización adaptativa basada en la varianza AMF (VBAQ)", + "amd_vbaq_desc": "El sistema visual humano normalmente es menos sensible a los artefactos en áreas altamente texturizadas. En modo VBAQ, la variación de píxeles se utiliza para indicar la complejidad de las texturas espaciales, permitiendo al codificador asignar más bits a áreas más suaves. Activar esta función conduce a mejoras en la calidad visual objetiva con algunos contenidos.", "apply_note": "Haga clic en 'Aplicar' para reiniciar Sunshine y aplicar los cambios. Esto terminará cualquier sesión en ejecución.", "audio_sink": "Salida de audio", "audio_sink_desc_linux": "El nombre de la salida de audio usado para Audio Loopback. Si no especifica esta variable, pulseaudio seleccionará el dispositivo de monitor predeterminado. Puede encontrar el nombre de la salida de audio usando cualquiera de los comandos:", @@ -258,7 +267,7 @@ "qp_desc": "Algunos dispositivos pueden no soportar tasa de bits constante. Para esos dispositivos, se utiliza QP en su lugar. Un valor más alto significa más compresión, pero menos calidad.", "qsv_coder": "Codificador QuickSync (H264)", "qsv_preset": "Preajuste QuickSync", - "qsv_preset_fast": "más rápido (menor calidad)", + "qsv_preset_fast": "rápido (baja calidad)", "qsv_preset_faster": "más rápido (menor calidad)", "qsv_preset_medium": "medio (por defecto)", "qsv_preset_slow": "lento (buena calidad)", @@ -324,7 +333,7 @@ "configuration": "Configuración", "home": "Inicio", "password": "Cambiar contraseña", - "pin": "Fijar", + "pin": "Pin", "troubleshoot": "Resolución de problemas" }, "password": { diff --git a/src_assets/common/assets/web/public/assets/locale/fr.json b/src_assets/common/assets/web/public/assets/locale/fr.json index 9d1559e32a5..bdd8ad0c6d6 100644 --- a/src_assets/common/assets/web/public/assets/locale/fr.json +++ b/src_assets/common/assets/web/public/assets/locale/fr.json @@ -1,6 +1,6 @@ { "_common": { - "apply": "Applique", + "apply": "Appliquer", "auto": "Automatique", "autodetect": "Détection automatique (recommandé)", "cancel": "Annuler", @@ -24,7 +24,7 @@ "apps": { "actions": "Actions", "add_cmds": "Ajouter des commandes", - "add_new": "Ajouter une nouvelle", + "add_new": "Ajouter une autre", "app_name": "Nom de l'application", "app_name_desc": "Nom de l'application, affiché dans Moonlight", "applications_desc": "Les applications ne sont actualisées qu'au redémarrage du client", @@ -92,24 +92,33 @@ "always_send_scancodes": "Toujours envoyer les codes de balayage", "always_send_scancodes_desc": "L'envoi de codes de numérisation améliore la compatibilité avec les jeux et les applications, mais peut entraîner une saisie incorrecte du clavier de certains clients qui n'utilisent pas de disposition de clavier anglais américain. Activer si l'entrée du clavier ne fonctionne pas du tout dans certaines applications. Désactiver si les clés du client génèrent la mauvaise entrée sur l'hôte.", "amd_coder": "Codeur AMF (H264)", + "amd_coder_desc": "Permet de sélectionner l'encodage de l'entropie pour prioriser la qualité ou la vitesse d'encodage. H.264 seulement.", "amd_enforce_hrd": "Enforcement du Décodeur Hypothetical Reference Decoder (HRD) de l'AMF", + "amd_enforce_hrd_desc": "Augmente les contraintes sur le contrôle du débit pour répondre aux exigences du modèle HRD. Cela réduit considérablement les débordements de débit, mais peut causer des artefacts d'encodage ou une qualité réduite sur certaines cartes.", "amd_preanalysis": "Pré-analyse AMF", + "amd_preanalysis_desc": "Cela permet une préanalyse de contrôle de débit, ce qui peut augmenter la qualité au détriment d'une latence d'encodage accrue.", "amd_quality": "Qualité AMF", "amd_quality_balanced": "balanced -- équilibré (par défaut)", + "amd_quality_desc": "Ceci contrôle l'équilibre entre la vitesse d'encodage et la qualité.", + "amd_quality_group": "Paramètres de qualité AMF", "amd_quality_quality": "qualité -- préférer la qualité", "amd_quality_speed": "Vitesse -- Préférez la vitesse", "amd_rc": "Contrôle du débit AMF", "amd_rc_cbr": "cbr -- débit constant", "amd_rc_cqp": "cqp -- mode constant qp", + "amd_rc_desc": "Ceci contrôle la méthode de contrôle du débit pour s'assurer que nous ne dépassons pas la cible du bitrate client. 'cqp' n'est pas adapté pour le ciblage de débit, et d'autres options en plus de 'vbr_latency' dépendent de HRD Enforcement pour aider à limiter les débordements de débit.", + "amd_rc_group": "Réglages de contrôle du débit AMF", "amd_rc_vbr_latency": "vbr_latency -- Débit variable limité de latence (par défaut)", "amd_rc_vbr_peak": "vbr_peak -- Débit variable contraint par le pic", "amd_usage": "Utilisation de l'AMF", + "amd_usage_desc": "Définit le profil d'encodage de base. Toutes les options présentées ci-dessous remplaceront un sous-ensemble du profil d'utilisation, mais il y a d'autres paramètres cachés qui ne peuvent pas être configurés ailleurs.", "amd_usage_lowlatency": "lowlatency - faible latence (rapide)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - faible latence, haute qualité (rapide)", "amd_usage_transcoding": "transcoding -- transcodage (plus lent)", "amd_usage_ultralowlatency": "ultralowlatency - latence ultra basse (plus rapide)", "amd_usage_webcam": "webcam -- webcam (lent)", "amd_vbaq": "Quantification adaptative basée sur la variance AMF (VBAQ)", + "amd_vbaq_desc": "Le système visuel humain est généralement moins sensible aux artefacts dans les zones hautement texturées. En mode VBAQ, la variance de pixels est utilisée pour indiquer la complexité des textures spatiales, ce qui permet à l'encodeur d'allouer plus de bits à des zones plus lisses. L'activation de cette fonctionnalité conduit à des améliorations de la qualité visuelle subjective avec un certain contenu.", "apply_note": "Cliquez sur \"Appliquer\" pour redémarrer Sunshine et appliquer les modifications. Cela mettra fin à toutes les sessions en cours.", "audio_sink": "Sink audio", "audio_sink_desc_linux": "Le nom du dissipateur audio utilisé pour la boucle audio. Si vous ne spécifiez pas cette variable, pulseaudio sélectionnera le périphérique de moniteur par défaut. Vous pouvez trouver le nom du dissipateur audio en utilisant l'une des commandes:", @@ -255,7 +264,7 @@ "port_warning": "Exposer l'interface Web à Internet est un risque de sécurité ! Procédez à vos propres risques !", "port_web_ui": "Interface Web", "qp": "Paramètre de quantification", - "qp_desc": "Certains périphériques peuvent ne pas prendre en charge le taux de bits constant. Pour ces périphériques, QP est utilisé à la place. Une valeur plus élevée signifie plus de compression, mais moins de qualité.", + "qp_desc": "Certains appareils peuvent ne pas prendre en charge un taux de bits constant. Pour ceux-ci, QP est utilisé à la place. Une valeur plus élevée signifie plus de compression, mais moins de qualité.", "qsv_coder": "Codeur QuickSync (H264)", "qsv_preset": "QuickSync Preset", "qsv_preset_fast": "plus rapide (qualité inférieure)", @@ -337,7 +346,7 @@ }, "pin": { "pair_failure": "Échec de l'appairage : Vérifiez si le code PIN est correctement saisi", - "pair_success": "Succès ! Veuillez vérifier la lumière de lune pour continuer", + "pair_success": "Succès ! Veuillez vérifier Moonlight pour continuer", "pin_pairing": "Appairage par code PIN", "send": "Envoyer", "warning_msg": "Assurez-vous que vous avez accès au client avec lequel vous appariez. Ce logiciel peut donner un contrôle total à votre ordinateur, alors soyez prudent !" diff --git a/src_assets/common/assets/web/public/assets/locale/it.json b/src_assets/common/assets/web/public/assets/locale/it.json index 25ee1c6bc26..de43dfbbd06 100644 --- a/src_assets/common/assets/web/public/assets/locale/it.json +++ b/src_assets/common/assets/web/public/assets/locale/it.json @@ -92,24 +92,33 @@ "always_send_scancodes": "Invia sempre Scancode", "always_send_scancodes_desc": "L'invio di scancode migliora la compatibilità con i giochi e le applicazioni, ma può risultare in input da tastiera errati da alcuni client che non utilizzano un layout di inglese statunitense. Abilita se l' input della tastiera non funziona affatto in certe applicazioni. Disabilita se le chiavi del client generano l'input errato sull'host.", "amd_coder": "Coder AMF (H264)", + "amd_coder_desc": "Consente di selezionare la codifica dell'entropia per dare la priorità alla qualità o alla velocità di codifica. Solo H.264.", "amd_enforce_hrd": "Applicazione Decoder di Riferimento Ipotetico AMF (HRD)", + "amd_enforce_hrd_desc": "Aumenta i vincoli in materia di controllo della velocità per soddisfare i requisiti del modello HRD. Questo riduce notevolmente il bitrate overflow, ma può causare artefatti di codifica o qualità ridotta su determinate schede.", "amd_preanalysis": "Preanalisi AMF", + "amd_preanalysis_desc": "Ciò consente la preanalisi del controllo della velocità, che può aumentare la qualità a scapito di una maggiore latenza di codifica.", "amd_quality": "Qualità AMF", "amd_quality_balanced": "bilanciato -- bilanciato (predefinito)", + "amd_quality_desc": "Questo controlla l'equilibrio tra velocità di codifica e qualità.", + "amd_quality_group": "Impostazioni Qualità AMF", "amd_quality_quality": "qualità -- preferisce la qualità", "amd_quality_speed": "velocità -- preferisci la velocità", "amd_rc": "Controllo della Velocità AMF", "amd_rc_cbr": "cbr -- bitrate costante", "amd_rc_cqp": "cqp -- modalità qp costante", + "amd_rc_desc": "Questo controlla il metodo di controllo della velocità per garantire che non stiamo superando il target di bitrate client. 'cqp' non è adatto per il target di bitrate e altre opzioni oltre 'vbr_latency' dipendono dall'esecuzione HRD per aiutare a limitare i overflow di bitrate.", + "amd_rc_group": "Impostazioni Di Controllo Frequenza Amf", "amd_rc_vbr_latency": "vbr_latency -- bitrate variabile con vincoli di latenza", "amd_rc_vbr_peak": "vbr_peak -- bitrate variabile con vincoli di picco", "amd_usage": "Utilizzo AMF", + "amd_usage_desc": "Questo imposta il profilo di codifica di base. Tutte le opzioni presentate di seguito sovrascriveranno un sottoinsieme del profilo di utilizzo, ma ci sono ulteriori impostazioni nascoste applicate che non possono essere configurate altrove.", "amd_usage_lowlatency": "lowlatency - bassa latenza (più veloce)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - bassa latenza, alta qualità (veloce)", "amd_usage_transcoding": "transcoding -- transcodifica (più lenta)", "amd_usage_ultralowlatency": "ultralowlatency - latenza ultra bassa (più veloce)", "amd_usage_webcam": "webcam -- webcam (lento)", "amd_vbaq": "Quantizzazione Adattiva Basata Sulla Varianza AMF (VBAQ)", + "amd_vbaq_desc": "Il sistema visivo umano è tipicamente meno sensibile agli artefatti in aree altamente strutturate. In modalità VBAQ, la varianza di pixel è utilizzata per indicare la complessità delle texture spaziali, consentendo al codificatore di allocare più bit ad aree più fluide. Abilitare questa funzione porta a migliorare la qualità visiva soggettiva con alcuni contenuti.", "apply_note": "Fare clic su 'Applica' per applicare le modifiche e riavviare Sunshine. Questo terminerà qualsiasi sessione in esecuzione.", "audio_sink": "Uscita Audio", "audio_sink_desc_linux": "Il nome dell'uscita audio è utilizzato per il Loopback audio. Se non si specifica questa variabile, pulseaudio selezionerà il dispositivo predefinito. È possibile trovare il nome del'uscita audio utilizzando entrambi i comandi:", diff --git a/src_assets/common/assets/web/public/assets/locale/ja.json b/src_assets/common/assets/web/public/assets/locale/ja.json index 8777b770c27..fdbbac100de 100644 --- a/src_assets/common/assets/web/public/assets/locale/ja.json +++ b/src_assets/common/assets/web/public/assets/locale/ja.json @@ -6,10 +6,10 @@ "cancel": "キャンセル", "disabled": "無効", "disabled_def": "無効 (デフォルト)", - "do_cmd": "Do Command", - "elevated": "上昇", + "do_cmd": "コマンド実行", + "elevated": "昇格", "enabled": "有効", - "enabled_def": "有効 (既定)", + "enabled_def": "有効 (デフォルト)", "error": "エラー!", "note": "メモ:", "password": "パスワード", @@ -26,17 +26,17 @@ "add_cmds": "コマンドを追加", "add_new": "新規追加", "app_name": "アプリケーション名", - "app_name_desc": "アプリケーション名(Moonlight に示すように)", - "applications_desc": "アプリケーションはクライアントの再起動時にのみ更新されます", - "applications_title": "アプリケーション", - "auto_detach": "アプリケーションがすぐに終了すると、ストリーミングを続行します", - "auto_detach_desc": "これにより、別のプログラムまたはインスタンスを起動した後にすぐに閉じられるランチャー型アプリを自動的に検出しようとします。 ランチャータイプのアプリが検出されると、切り離したアプリとして扱われます。", - "cmd": "(Command)", - "cmd_desc": "メインアプリケーションを起動します。空白の場合はアプリケーションは起動しません。", + "app_name_desc": "アプリケーション名(Moonlight に表示させるもの)", + "applications_desc": "アプリケーション一覧はクライアントの再起動時にのみ更新されます", + "applications_title": "アプリケーション一覧", + "auto_detach": "アプリケーションが一瞬終了してもストリーミングを続行します", + "auto_detach_desc": "これにより、別のプログラムまたは別インスタンスを起動してすぐ終了する、ランチャー型アプリを自動的に検出しようとします。 ランチャータイプのアプリが検出されると、切断されたアプリとして扱われます。", + "cmd": "コマンド", + "cmd_desc": "起動したいメインアプリケーション。空白の場合はアプリケーションは起動しません。", "cmd_note": "コマンド実行ファイルへのパスにスペースが含まれている場合は、引用符で囲む必要があります。", - "cmd_prep_desc": "このアプリケーションの前後に実行するコマンドのリストです。prep-commandsのいずれかに失敗した場合、アプリケーションの起動は中止されます。", + "cmd_prep_desc": "このアプリケーションの前/後に実行するコマンドのリストです。prep-commandsのいずれかに失敗した場合、アプリケーションの起動は中止されます。", "cmd_prep_name": "コマンドの準備", - "covers_found": "カバーが見つかりました", + "covers_found": "カバー画像が見つかりました", "delete": "削除", "detached_cmds": "切り離されたコマンド", "detached_cmds_add": "別のコマンドを追加", @@ -47,35 +47,35 @@ "env_app_name": "アプリ名", "env_client_audio_config": "クライアントから要求されたオーディオ設定 (2.0/5.1/7.1)", "env_client_enable_sops": "クライアントは最適なストリーミングのためにゲームを最適化するオプションを要求しています (true/false)", - "env_client_fps": "クライアントから要求された FPS (int)", + "env_client_fps": "クライアントから要求された FPS (整数)", "env_client_gcmap": "要求されたゲームパッドマスク、ビットセット/ビットフィールド形式 (int)", "env_client_hdr": "HDR はクライアントによって有効になっています (true/false)", - "env_client_height": "The Height requested by the client (int)", - "env_client_host_audio": "The client has requested host audio (true/false)", + "env_client_height": "クライアントから要求された高さ (int)", + "env_client_host_audio": "クライアントはホストオーディオを要求しています (true/false)", "env_client_width": "クライアントから要求された幅 (int)", - "env_displayplacer_example": "例 - 解像度自動化の表示プレースホルダ:", - "env_qres_example": "例 - 自動解像度のQR:", - "env_qres_path": "qres path", + "env_displayplacer_example": "例 - 解像度自動化のためのディスプレイ プレーサ:", + "env_qres_example": "例 - 自動解像度用のQRes:", + "env_qres_path": "qresのパス", "env_var_name": "変数名", "env_vars_about": "環境変数について", "env_vars_desc": "すべてのコマンドはデフォルトでこれらの環境変数を取得します:", "env_xrandr_example": "例 - 解像度自動化のための Xrandr:", - "exit_timeout": "タイムアウト終了", - "exit_timeout_desc": "終了要求時にすべてのアプリプロセスが正常に終了するまで待機する秒数。 設定されていない場合、デフォルトは5秒まで待機します。ゼロまたは負の値に設定されている場合、アプリは直ちに終了します。", + "exit_timeout": "終了タイムアウト", + "exit_timeout_desc": "終了要求時にすべてのアプリプロセスが正常に終了するまで待機する秒数。 設定されていない場合、デフォルトでは5秒まで待機します。ゼロまたはマイナス値に設定されている場合、アプリは直ちに終了します。", "find_cover": "カバーを見つける", - "global_prep_desc": "このアプリケーションの Global Prep コマンドの実行を有効または無効にします。", + "global_prep_desc": "このアプリケーションのグローバル準備コマンドの実行を有効/無効にする。", "global_prep_name": "グローバル準備コマンド", "image": "画像", "image_desc": "クライアントに送信されるアプリケーションアイコン/画像/画像パス。画像はPNGファイルである必要があります。設定されていない場合、Sunshineはデフォルトのボックス画像を送信します。", "loading": "読み込み中...", "name": "名前", - "output_desc": "コマンドの出力が保存されているファイルが指定されていない場合、出力は無視されます。", + "output_desc": "コマンドの出力を保存するファイル。指定されない場合、出力は無視されます。", "output_name": "出力", "run_as_desc": "これは、管理者権限を必要とするアプリケーションが正常に動作するために必要な場合があります。", "wait_all": "すべてのアプリプロセスが終了するまでストリーミングを続ける", "wait_all_desc": "これは、アプリによって開始されたすべてのプロセスが終了するまで、ストリーミングを続けます。 チェックを外すと、他のアプリプロセスがまだ実行中であっても、最初のアプリプロセスが終了するとストリーミングは停止します。", "working_dir": "作業ディレクトリ", - "working_dir_desc": "プロセスに渡される作業ディレクトリ。たとえば、アプリケーションによっては、作業ディレクトリを使用して設定ファイルを検索します。 設定されていない場合、Sunshineはデフォルトでコマンドの親ディレクトリになります" + "working_dir_desc": "プロセスに渡される作業ディレクトリ。たとえば、アプリケーションによっては、作業ディレクトリを使用して設定ファイルを検索します。 設定されていない場合、Sunshineはデフォルトでコマンドの親ディレクトリを使用します。" }, "config": { "adapter_name": "アダプター名", @@ -92,25 +92,34 @@ "always_send_scancodes": "常にスキャンコードを送信する", "always_send_scancodes_desc": "スキャンコードを送信すると、ゲームやアプリとの互換性が向上しますが、米国英語のキーボードレイアウトを使用していない特定のクライアントからのキーボード入力が誤っている可能性があります。 特定のアプリケーションでキーボード入力がまったく動作しない場合に有効にします。 クライアントのキーがホストに間違った入力を生成している場合は無効にします。", "amd_coder": "AMFコーダー(H264)", + "amd_coder_desc": "エントロピーエンコーディングを選択して品質やエンコーディング速度を優先することができます。H.264 のみ。", "amd_enforce_hrd": "AMF仮説リファレンスデコーダ(HRD) Enforcement", - "amd_preanalysis": "AMFプレ分析", + "amd_enforce_hrd_desc": "HRDモデル要件を満たすためのレート制御の制約を増やします。 これによりビットレートのオーバーフローが大幅に減少しますが、エンコードアーティファクトや特定のカードの品質が低下する可能性があります。", + "amd_preanalysis": "AMF事前解析", + "amd_preanalysis_desc": "これにより、レート制御の事前分析が可能になり、エンコード待ち時間の増加を犠牲にして品質が向上する可能性があります。", "amd_quality": "AMF品質", "amd_quality_balanced": "balance-- balance(デフォルト)", + "amd_quality_desc": "これにより、エンコード速度と品質のバランスを制御します。", + "amd_quality_group": "AMF品質設定", "amd_quality_quality": "品質 -- 品質を優先", "amd_quality_speed": "スピード -- 速度を優先", "amd_rc": "AMFレート制御", - "amd_rc_cbr": "cbr -- 一定ビットレート(デフォルト)", - "amd_rc_cqp": "cqp -- 定数qp モード", - "amd_rc_vbr_latency": "vbr_lathering -- lattened variable bitrate", + "amd_rc_cbr": "cbr -- 固定ビットレート(デフォルト)", + "amd_rc_cqp": "cqp -- 固定qp モード", + "amd_rc_desc": "これは、クライアントのビットレート目標を超えないようにするレート制御方法を制御します。 'cqp'はビットレートターゲティングには適していません。'vbr_latency'以外のオプションはHRDエンフォースメントに依存してビットレートオーバーフローを制限します。", + "amd_rc_group": "AMFレートコントロール設定", + "amd_rc_vbr_latency": "vbr_latency -- レイテンシ制約付き可変ビットレート", "amd_rc_vbr_peak": "vbr_peak -- ピーク制約可変ビットレート", "amd_usage": "AMF使用率", + "amd_usage_desc": "これにより、基本エンコーディングプロファイルが設定されます。 以下に表示されるすべてのオプションは、使用状況プロファイルのサブセットを上書きしますが、他の場所では設定できない追加の非表示設定が適用されます。", "amd_usage_lowlatency": "lowlaterity - 低レイテンシ(最速)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - 低レイテンシ、高品質 (高速)", "amd_usage_transcoding": "トランスコード-- トランスコード(最も遅い)", "amd_usage_ultralowlatency": "超低レイテンシー - 超低レイテンシ(最速)", "amd_usage_webcam": "ウェブカメラ -- ウェブカメラ (スロー)", "amd_vbaq": "AMF分散ベース適応型量子化(VBAQ)", - "apply_note": "「適用」をクリックしてSunshineを再起動し、変更を適用します。これは実行中のセッションを終了します。", + "amd_vbaq_desc": "人間の視覚システムは、高度なテクスチャ領域の人工物には通常、あまり敏感です。 VBAQモードでは、ピクセル分散を使用して空間テクスチャの複雑さを示し、エンコーダがより多くのビットを割り当て、領域をスムーズにすることができます。 この機能を有効にすると、一部のコンテンツで主観的なビジュアル品質が向上します。", + "apply_note": "'適用' をクリックして Sunshine を再起動し、変更を適用します。これにより、実行中のセッションはすべて終了します。", "audio_sink": "音声シンク", "audio_sink_desc_linux": "オーディオループバックに使用されるオーディオシンクの名前。この変数を指定しない場合、pulseaudio はデフォルトのモニターデバイスを選択します。 いずれかのコマンドを使用して、オーディオシンクの名前を見つけることができます。", "audio_sink_desc_macos": "Audio Loopback に使用されるオーディオシンクの名前。Sunshineはシステムの制限により、macOSのマイクにのみアクセスできます。 Soundflower または BlackHole を使用してシステムのオーディオをストリーミングする。", @@ -123,22 +132,22 @@ "av1_mode_2": "SunshineはAV1メイン8ビットプロファイルのサポートを宣伝します", "av1_mode_3": "SunshineはAV1メイン8ビットと10ビット(HDR)プロファイルのサポートを宣伝します。", "av1_mode_desc": "クライアントがAV1 Main 8ビットまたは10ビットのビデオストリームを要求できるようにします。 AV1はエンコードにCPU負荷がかかるため、ソフトウェアエンコーディングを使用する際のパフォーマンスが低下する可能性があります。", - "back_button_timeout": "ホーム/ガイドボタンエミュレーションタイムアウト", - "back_button_timeout_desc": "指定したミリ秒単位で戻る/選択ボタンを押し続けると、ホーム/ガイドボタンの押下がエミュレートされます。 値 < 0(デフォルト)に設定されている場合、format@@0/format@@1ボタンを押し続けると、format@@2ボタンはエミュレートされません。", + "back_button_timeout": "ホーム/ガイドボタンエミュレーションのタイムアウト", + "back_button_timeout_desc": "Back/Selectボタンが指定されたミリ秒の間押し続けられると、Home/Guideボタン押下がエミュレートされる。値<0(デフォルト)に設定すると、Back/Selectボタンを押し続けてもHome/Guideボタンはエミュレートされない。", "capture": "特定のキャプチャ方法を強制する", - "capture_desc": "自動モードでSunshineは動作する最初のものを使用します. NvFBCはパッチを当てる必要があります nvidiaドライバ.", + "capture_desc": "自動モードでSunshineは動作する最初のものを使用します. NvFBCはパッチ済み nvidiaドライバが必要です.", "cert": "証明書", "cert_desc": "Web UIとMoonlightクライアントのペアリングに使用される証明書。互換性を確保するためには、RSA-2048 公開鍵が必要です。", - "channels": "接続済みクライアントの最大数", + "channels": "最大接続クライアント数", "channels_desc_1": "Sunshineは、単一のストリーミングセッションを複数のクライアントと同時に共有することができます。", "channels_desc_2": "一部のハードウェアエンコーダには、複数のストリームでパフォーマンスを低下させる制限がある場合があります。", "coder_cabac": "cabac -- コンテキスト適応二進数演算符号化 - 高品質", "coder_cavlc": "cavlc -- コンテキスト適応型可変長符号化 - 高速デコード", "configuration": "設定", - "controller": "Enable Gamepad Input", + "controller": "ゲームパッド入力を有効にする", "controller_desc": "ゲストがゲームパッド/コントローラーでホストシステムを制御できるようにします", "credentials_file": "資格情報ファイル", - "credentials_file_desc": "Sunshineの状態ファイルとは別に、ユーザー名/パスワードを保存します。", + "credentials_file_desc": "ユーザー名/パスワードは、サンシャインのステートファイルとは別に保管してください。", "ds4_back_as_touchpad_click": "戻る/選択をタッチパッドにマップする", "ds4_back_as_touchpad_click_desc": "DS4エミュレーションを強制するときは、戻る/選択をタッチパッドにマップする", "encoder": "特定のエンコーダーを強制する", @@ -148,12 +157,12 @@ "external_ip_desc": "外部IPアドレスが指定されていない場合、Sunshineは自動的に外部IPを検出します。", "fec_percentage": "FECの割合", "fec_percentage_desc": "各ビデオフレーム内のデータ パケットあたりのパケットを修正するエラー率。 より高い値は、ネットワークパケットの損失を増やすことができますが、帯域幅の使用量を増加させることができます。", - "ffmpeg_auto": "auto -- ffmpegで決める (デフォルト)", + "ffmpeg_auto": "auto -- ffmpegで判断する (デフォルト)", "file_apps": "アプリファイル", "file_apps_desc": "Sunshineの現在のアプリが保存されているファイル。", "file_state": "状態ファイル", "file_state_desc": "サンシャインの現在の状態が保存されているファイル", - "fps": "広告のFPS", + "fps": "通知されたFPS", "gamepad": "エミュレートしたゲームパッドのタイプ", "gamepad_auto": "自動選択オプション", "gamepad_desc": "ホスト上でエミュレートするゲームパッドの種類を選択します", @@ -217,7 +226,7 @@ "nvenc_preset_7": "(最も遅い)", "nvenc_preset_desc": "数値が高いほど、符号化遅延の増加を犠牲にして圧縮(一定のビットレートでの品質)が向上します。 ネットワークまたはデコーダによって制限されている場合にのみ変更することをお勧めします, そうでなければ、ビットレートを増やすことによって、同様の効果を達成することができます.", "nvenc_realtime_hags": "ハードウェアアクセラレーションGPUスケジューリングでリアルタイム優先度を使用する", - "nvenc_realtime_hags_desc": "現在、NVIDIAドライバは、HAGSが有効になっている場合、エンコーダでフリーズすることがあり、リアルタイムの優先度が使用され、VRAMの使用率が最大に近い場合があります。 このオプションを無効にすると、GPUが大量にロードされた際のキャプチャパフォーマンスが低下するため、フリーズの優先度が高くなります。", + "nvenc_realtime_hags_desc": "現在、NVIDIAドライバは、HAGSが有効で、リアルタイムプライオリティが使用され、VRAM使用率が最大に近い場合、エンコーダでフリーズすることがあります。このオプションを無効にすると、優先順位が高に下がり、GPUに大きな負荷がかかったときのキャプチャパフォーマンスの低下と引き換えに、フリーズを回避できます。", "nvenc_spatial_aq": "Spatial AQ", "nvenc_spatial_aq_desc": "より高いQP値をビデオのフラットリージョンに割り当てます。低ビットレートでストリーミングする際に有効にすることをお勧めします。", "nvenc_spatial_aq_disabled": "無効 (高速、デフォルト)", @@ -239,7 +248,7 @@ "output_name_linux": "モニター番号", "output_name_win": "出力名", "ping_timeout": "Pingのタイムアウト", - "ping_timeout_desc": "月明かりからのデータがストリームをシャットダウンするまでのミリ秒単位で待機する期間", + "ping_timeout_desc": "Moonlightがデータが止まってからストリームをシャットダウンするまで待機時間をミリ秒で指定", "pkey": "プライベートキー", "pkey_desc": "ウェブ UI とMoonlight クライアントのペアリングに使用される秘密鍵。互換性を確保するためには、RSA-2048 秘密鍵を使用する必要があります。", "port": "ポート", @@ -324,7 +333,7 @@ "configuration": "設定", "home": "ホーム", "password": "パスワードの変更", - "pin": "ピン留めする", + "pin": "Pin", "troubleshoot": "トラブルシューティング" }, "password": { @@ -337,10 +346,10 @@ }, "pin": { "pair_failure": "ペアリングに失敗しました:PINが正しく入力されたかどうかを確認します", - "pair_success": "成功!ムーンライトを確認して続行してください", + "pair_success": "成功!Moonlight を確認して続行してください", "pin_pairing": "PIN Pairing", "send": "送信", - "warning_msg": "ペアリングしているクライアントへのアクセス権を持っていることを確認してください。このソフトウェアはコンピュータに完全な制御を与えることができます。注意してください!" + "warning_msg": "ペアリングするクライアントにアクセスできることを確認してください。このソフトウェアは、あなたのコンピュータを完全にコントロールすることができますので、注意してください!" }, "resource_card": { "github_discussions": "GitHub Discussions", diff --git a/src_assets/common/assets/web/public/assets/locale/pt.json b/src_assets/common/assets/web/public/assets/locale/pt.json new file mode 100644 index 00000000000..ee23a8933df --- /dev/null +++ b/src_assets/common/assets/web/public/assets/locale/pt.json @@ -0,0 +1,389 @@ +{ + "_common": { + "apply": "Aplicar", + "auto": "Automático", + "autodetect": "Autodetectar (recomendado)", + "cancel": "cancelar", + "disabled": "Desabilitado", + "disabled_def": "Desativado (padrão)", + "do_cmd": "Faça o Comando", + "elevated": "Elevado", + "enabled": "Ativado", + "enabled_def": "Ativado (padrão)", + "error": "Erro!", + "note": "Nota:", + "password": "Palavra-passe", + "run_as": "Executar como Administrador", + "save": "Guardar", + "see_more": "Ver mais", + "success": "Sucesso!", + "undo_cmd": "Desfazer Comando", + "username": "Usuário:", + "warning": "Aviso!" + }, + "apps": { + "actions": "Ações.", + "add_cmds": "Adicionar Comandos", + "add_new": "Adicionar novo", + "app_name": "Nome da aplicação", + "app_name_desc": "Nome do aplicativo, como mostrado no Moonlight", + "applications_desc": "Aplicações só são atualizadas quando o Cliente for reiniciado", + "applications_title": "Aplicações", + "auto_detach": "Continue transmitindo se o aplicativo fechar rapidamente", + "auto_detach_desc": "Isso tentará detectar automaticamente aplicativos de tipo launcher que fecham rapidamente após a inicialização de outro programa ou instância de si mesmos. Quando um aplicativo de tipo launcher é detectado, ele é tratado como um aplicativo destacado.", + "cmd": "Comando", + "cmd_desc": "O aplicativo principal a ser iniciado. Se em branco, nenhum aplicativo será iniciado.", + "cmd_note": "Se o caminho para o comando conter espaços, você deve colocá-lo entre aspas.", + "cmd_prep_desc": "Uma lista de comandos a serem executados antes / depois desta aplicação. Se algum dos comandos de predefinição falhar, iniciar o aplicativo é abortado.", + "cmd_prep_name": "Preparações do Comando", + "covers_found": "Capas encontradas", + "delete": "excluir", + "detached_cmds": "Comandos desanexados", + "detached_cmds_add": "Adicionar Comando Desanexado", + "detached_cmds_desc": "Uma lista de comandos a serem executados em segundo plano.", + "detached_cmds_note": "Se o caminho para o comando conter espaços, você deve colocá-lo entre aspas.", + "edit": "Alterar", + "env_app_id": "ID do aplicativo", + "env_app_name": "Nome do aplicativo", + "env_client_audio_config": "A configuração de áudio solicitada pelo cliente (2.0/5.1/7.1)", + "env_client_enable_sops": "O cliente solicitou a opção de otimizar o jogo para uma transmissão ideal (verdadeiro/falso)", + "env_client_fps": "O FPS solicitado pelo cliente (int)", + "env_client_gcmap": "A máscara de gamepad solicitada, em formato bitset/bitfield (int)", + "env_client_hdr": "O HDR está ativado pelo cliente (verdadeiro/falso)", + "env_client_height": "A altura solicitada pelo cliente (int)", + "env_client_host_audio": "O cliente solicitou áudio de host (verdadeiro/falso)", + "env_client_width": "A largura solicitada pelo cliente (int)", + "env_displayplacer_example": "Exemplo - displayplacer para Automação de Resolução:", + "env_qres_example": "Exemplo - QRes para Automação de Resolução:", + "env_qres_path": "Caminho das configurações rápidas", + "env_var_name": "Nome da Var", + "env_vars_about": "Sobre Variáveis de Ambiente", + "env_vars_desc": "Todos os comandos obtêm essas variáveis de ambiente por padrão:", + "env_xrandr_example": "Exemplo - Xrandr para Automação de Resolução:", + "exit_timeout": "Tempo Esgotado", + "exit_timeout_desc": "Número de segundos para esperar que todos os processos do aplicativo saiam graciosamente quando solicitado a sair. Se não definido, o padrão é esperar até 5 segundos. Se definido como zero ou negativo, o aplicativo será encerrado imediatamente.", + "find_cover": "Encontrar capa", + "global_prep_desc": "Ativar/desativar a execução de comandos de preparação global para este aplicativo.", + "global_prep_name": "Comandos de Preparação Global", + "image": "Imagem:", + "image_desc": "Caminho da aplicação icon/imagem/imagem que será enviado para o cliente. Imagem deve ser um arquivo PNG. Se não estiver definido, Sunshine irá enviar a imagem da caixa padrão.", + "loading": "Carregandochar@@0", + "name": "Nome:", + "output_desc": "O arquivo onde a saída do comando é armazenada, se não for especificado, a saída é ignorada", + "output_name": "Saída", + "run_as_desc": "Isto pode ser necessário para que alguns aplicativos que requerem permissões de administrador sejam executados corretamente.", + "wait_all": "Continue transmitindo até que todos os processos de app saiam", + "wait_all_desc": "Isso continuará transmitindo até que todos os processos iniciados pelo aplicativo tenham sido encerrados. Quando desmarcado, a transmissão será interrompida quando o processo inicial do aplicativo terminar, mesmo que outros processos de aplicativo ainda estejam em execução.", + "working_dir": "Diretório de trabalho", + "working_dir_desc": "O diretório de trabalho que deve ser passado para o processo. Por exemplo, alguns aplicativos usam o diretório de trabalho para procurar arquivos de configuração. Se não estiver definido, o Sunshine será o padrão para o diretório pai do comando" + }, + "config": { + "adapter_name": "Nome do adaptador", + "adapter_name_desc_linux_1": "Especifique manualmente uma GPU para usar na captura.", + "adapter_name_desc_linux_2": "para encontrar todos os dispositivos capazes do VAAPI", + "adapter_name_desc_linux_3": "Substitua ``renderD129`` pelo dispositivo de cima para listar o nome e os recursos do dispositivo. Para ser apoiado pelo Sol, ele precisa ter no mínimo:", + "adapter_name_desc_win": "Especifique manualmente uma GPU para usar na captura. Se não definido, a GPU é escolhida automaticamente. É altamente recomendável deixar este campo em branco para usar a seleção GPU automática! Nota: Esta GPU deve ter um display conectado e ligado. Os valores apropriados podem ser encontrados usando o seguinte comando:", + "adapter_name_placeholder_win": "Radeon série RX 580", + "add": "Adicionar", + "address_family": "Família de endereços", + "address_family_both": "IPv6 + IPv6", + "address_family_desc": "Definir a família de endereços usada pelo Sunshine", + "address_family_ipv4": "Apenas IPv4", + "always_send_scancodes": "Sempre enviar Scancodes", + "always_send_scancodes_desc": "O envio de códigos de verificação melhora a compatibilidade com jogos e aplicativos, mas pode resultar em uma entrada incorreta de teclado de certos clientes que não estão usando um layout de teclado inglês dos EUA. Habilitar se a entrada de teclado não estiver funcionando em certas aplicações. Desative se as chaves no cliente estão gerando a entrada errada no host.", + "amd_coder": "Codificador AMF (H264)", + "amd_coder_desc": "Permite que você selecione a codificação entropia para priorizar a qualidade ou a velocidade de codificação. Somente H.264.", + "amd_enforce_hrd": "Aplicação de Decodificador de Referência Hipotetica (HRD) AMF", + "amd_enforce_hrd_desc": "Aumenta as restrições de controle de taxa para atender aos requisitos do modelo de hash. Isso reduz consideravelmente os transbordos de bitrato, mas pode causar a codificação de artefatos ou uma redução de qualidade em certas cartas.", + "amd_preanalysis": "Pré-análise AMF", + "amd_preanalysis_desc": "Isto permite a pré-análise de controle, que pode aumentar a qualidade em detrimento de uma maior latência de codificação.", + "amd_quality": "Qualidade AMF", + "amd_quality_balanced": "Balanceado - balanceado (padrão)", + "amd_quality_desc": "Isto controla o equilíbrio entre a velocidade de codificação e a qualidade.", + "amd_quality_group": "Configurações de qualidade AMF", + "amd_quality_quality": "qualidade -- preferir qualidade", + "amd_quality_speed": "velocidade -- preferir velocidade", + "amd_rc": "Controle de Taxa AMF", + "amd_rc_cbr": "cbr -- taxa de bits constante (padrão)", + "amd_rc_cqp": "cqp -- modo qp constante", + "amd_rc_desc": "Isto controla o método de controle da taxa para garantir que não estamos a exceder o alvo da taxa de bits do cliente. 'cqp' não é adequado para segmentação de taxa de bits e outras opções além de 'vbr_latency' dependem da aplicação HRD para ajudar a restringir os fluxos de taxa de bits.", + "amd_rc_group": "Configurações de controle de taxa AMF", + "amd_rc_vbr_latency": "latência vbr_ency -- taxa de bits com restrição de latência", + "amd_rc_vbr_peak": "vbr_pico -- pico de taxa de bits variável restrita", + "amd_usage": "Uso do AMF", + "amd_usage_desc": "Isso define o perfil de codificação base. Todas as opções apresentadas abaixo substituirão um subconjunto do perfil de uso, mas há configurações ocultas adicionais aplicadas que não podem ser configuradas em outro lugar.", + "amd_usage_lowlatency": "baixa latência - baixa latência (mais rápido)", + "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - baixa latência, alta qualidade (rápido)", + "amd_usage_transcoding": "transcodificação -- transcodificando (mais lento)", + "amd_usage_ultralowlatency": "ultralowlatência - latência ultra baixa (mais rápida)", + "amd_usage_webcam": "webcam -- câmera (lenta)", + "amd_vbaq": "Variação da Variação Baseada na Quantização Adaptativa (VBAQ)", + "amd_vbaq_desc": "O sistema visual humano é tipicamente menos sensível a artefatos em áreas altamente texturadas. No modo VBAQ, a variação de pixel é usada para indicar a complexidade das texturas espaciais, permitindo que o codificador aloce mais bits em áreas mais suaves. Habilitar este recurso leva a melhorias na qualidade visual subjetiva com algum conteúdo.", + "apply_note": "Clique em 'Aplicar' para reiniciar o Sunshine e aplicar as alterações. Isto encerrará todas as sessões em execução.", + "audio_sink": "Pia de Áudio", + "audio_sink_desc_linux": "O nome do afundamento de áudio usado para o loop de áudio. Se você não especificar esta variável, o pulseaudio selecionará o dispositivo de monitor padrão. Você pode encontrar o nome do sumidouro de áudio usando qualquer comando:", + "audio_sink_desc_macos": "O nome do sumidouro de áudio usado para o loop de áudio. O Sunshine só pode acessar microfones no macOS devido a limitações do sistema. Para fazer streaming de áudio do sistema usando Soundflower ou BlackHole.", + "audio_sink_desc_win": "Especifique manualmente um dispositivo de áudio específico para capturar. Se não for definido, o dispositivo será escolhido automaticamente. Recomendamos fortemente deixar este campo em branco para usar a seleção automática de dispositivo! Se você tiver vários dispositivos de áudio com nomes idênticos, você pode obter o ID do dispositivo usando o seguinte comando:", + "audio_sink_placeholder_macos": "BlackHole 2ch", + "audio_sink_placeholder_win": "Alto-falantes (Dispositivo de Áudio de Alta Definição)", + "av1_mode": "Suporte AV1", + "av1_mode_0": "O Sunshine anunciará o suporte para a AV1 com base nos recursos do codificador (recomendado)", + "av1_mode_1": "O sol não anunciará o suporte para a AV1", + "av1_mode_2": "O Sunshine anunciará o suporte para o perfil AV1 de 8 bits", + "av1_mode_3": "A luz do sol anunciará o suporte para os perfis AV1 (8-bit principal) e de 10 bits (HDR)", + "av1_mode_desc": "Permite ao cliente solicitar fluxos de vídeo AV1 principal de 8 bits ou de 10 bits. AV1 usa mais CPU para codificar, então permite que isso reduza o desempenho ao usar a codificação do software.", + "back_button_timeout": "Tempo de Emulação do Botão Home/Guia", + "back_button_timeout_desc": "Se o botão Voltar / Selecionar for mantido pressionado para o número especificado de milissegundos, um botão Home/Guia será pressionado. Se definido como um valor < 0 (padrão), segurar o botão Voltar/Selecionar não irá simular o botão Home/Guia.", + "capture": "Forçar um Método de Captura Específica", + "capture_desc": "Modo automático Sunshine usará o primeiro que funciona. NvFBC requer drivers nvidia corrigidos.", + "cert": "Certificado", + "cert_desc": "O certificado usado para a interface do usuário da web e o pareamento do cliente Moonlight. Para a melhor compatibilidade, isso deve ter uma chave pública RSA-2048.", + "channels": "Máximo de Clientes Conectados", + "channels_desc_1": "Sunshine pode permitir que uma única sessão de streaming seja compartilhada com vários clientes simultaneamente.", + "channels_desc_2": "Alguns codificadores de hardware podem ter limitações que reduzem o desempenho com vários fluxos.", + "coder_cabac": "cabac -- contexto adaptável de programação aritmética binária - qualidade superior", + "coder_cavlc": "cavlc -- código adaptável de comprimento de variável de contexto - decodificação mais rápida", + "configuration": "Configuração", + "controller": "Enable Gamepad Input", + "controller_desc": "Permite que os convidados controlem o sistema de host com controle / controle do gamepad", + "credentials_file": "Arquivo de credenciais", + "credentials_file_desc": "Armazenar Usuário/Senha separadamente do arquivo de estado da Sunshine.", + "ds4_back_as_touchpad_click": "Mapear Voltar/Selecionar para o Touchpad Clique", + "ds4_back_as_touchpad_click_desc": "Ao forçar a emulação do DS4, selecione um Voltar/Selecione para o Touchpad Clique", + "encoder": "Forçar um Codificador Específico", + "encoder_desc": "Força um codificador específico, caso contrário, Sunshine selecionará a melhor opção disponível. Nota: Se você especificar um codificador de hardware no Windows, ele deve coincidir com a GPU onde a tela está conectada.", + "encoder_software": "Software", + "external_ip": "IP externo", + "external_ip_desc": "Se nenhum endereço IP externo for dado, Sunshine detectará automaticamente IP externo", + "fec_percentage": "Porcentagem FEC", + "fec_percentage_desc": "Porcentagem de erro corrigindo pacotes por pacote de dados em cada quadro de vídeo. Valores mais altos podem corrigir para mais perda de pacotes de rede, mas ao custo de aumentar o uso de largura de banda.", + "ffmpeg_auto": "auto -- let ffmpeg decide (padrão)", + "file_apps": "Arquivo de apps", + "file_apps_desc": "O arquivo onde os aplicativos atuais de Sunshine são armazenados.", + "file_state": "Arquivo de estado", + "file_state_desc": "O arquivo onde o estado atual de Sunshine é armazenado", + "fps": "FPS anunciado", + "gamepad": "Tipo de controle emulado", + "gamepad_auto": "Opções de seleção automáticas", + "gamepad_desc": "Escolha qual tipo de controle será emulado no host", + "gamepad_ds4": "DS4 (PS4)", + "gamepad_manual": "Opções de DS4 manual", + "gamepad_x360": "X360 (Xbox 360)", + "global_prep_cmd": "Preparações do Comando", + "global_prep_cmd_desc": "Configure uma lista de comandos a serem executados antes ou depois de executar qualquer aplicativo. Se algum dos comandos de preparação especificados falhar, o processo de lançamento do aplicativo será abortado.", + "hevc_mode": "Suporte ao HEVC", + "hevc_mode_0": "Sunshine anunciará suporte para o HEVC com base em recursos de codificador (recomendado)", + "hevc_mode_1": "O sol não anunciará o suporte ao HEVC", + "hevc_mode_2": "O sol anunciará o suporte para o perfil principal do HEVC", + "hevc_mode_3": "A luz do sol anunciará o suporte para os perfis HEVC Main e Main10 (HDR)", + "hevc_mode_desc": "Permite ao cliente solicitar fluxos de vídeo HEVC principal ou HEVC Main10. HEVC é mais intenso em CPU para codificar, então permitir que isso possa reduzir o desempenho ao usar a codificação do software.", + "high_resolution_scrolling": "Suporte a Alta Resolução", + "high_resolution_scrolling_desc": "Quando habilitado, o Sunshine irá passar através de eventos de rolagem de alta resolução a partir de clientes de luz Lunar. Isso pode ser útil para desativar para aplicativos mais antigos que rolam muito rápido com eventos de rolagem de alta resolução.", + "install_steam_audio_drivers": "Instalar drivers de áudio Steam", + "install_steam_audio_drivers_desc": "Se o Steam estiver instalado, isso irá instalar automaticamente o driver de Alto-falantes de Streaming do Steam para suportar o som Surround 5.1/7.1 e silenciar o áudio do host.", + "key_repeat_delay": "Atraso da repetição da chave", + "key_repeat_delay_desc": "Controla a rapidez com que as teclas se irão repetir. O atraso inicial em milissegundos antes de repetir as chaves.", + "key_repeat_frequency": "Frequência de repetição de chave", + "key_repeat_frequency_desc": "Com que frequência as chaves se repetem a cada segundo. Esta opção configurável suporta decimais.", + "key_rightalt_to_key_win": "Tecla Alt Right Map para a tecla Windows", + "key_rightalt_to_key_win_desc": "É possível que você não possa enviar diretamente a chave Windows do Moonlight. Nesses casos, pode ser útil fazer Sunshine pensar que a tecla Alt direita é a tecla Windows", + "keyboard": "Habilitar Entrada de Teclado", + "keyboard_desc": "Permite aos convidados controlar o sistema de host com o teclado", + "lan_encryption_mode": "Modo de Criptografia LAN", + "lan_encryption_mode_1": "Habilitado para clientes suportados", + "lan_encryption_mode_2": "Obrigatório para todos os clientes", + "lan_encryption_mode_desc": "Isso determina quando a criptografia será usada no streaming em sua rede local. A criptografia pode reduzir o desempenho do streaming, particularmente em hosts e clientes menos poderosos.", + "locale": "Localidade", + "locale_desc": "A localidade usada para a interface de usuário do Sunshine.", + "log_level": "Nível do Registro", + "log_level_0": "Verbose", + "log_level_1": "Debug", + "log_level_2": "Informações", + "log_level_3": "ATENÇÃO", + "log_level_4": "ERRO", + "log_level_5": "Fatal", + "log_level_6": "Nenhuma", + "log_level_desc": "O nível mínimo de log impresso no padrão", + "log_path": "Caminho do Logfile", + "log_path_desc": "O arquivo onde os logs atuais de Sunshine são armazenados.", + "min_threads": "Contagem mínima de tópicos da CPU", + "min_threads_desc": "Aumentar o valor reduz ligeiramente a eficiência da codificação, mas a troca geralmente vale a pena para ganhar o uso de mais núcleos da CPU para codificação. O valor ideal é o mais baixo que pode codificar, de forma confiável, as configurações de streaming desejadas no seu hardware.", + "misc": "Opções diversas", + "motion_as_ds4": "Emular um gamepad DS4 se o cliente reportar sensores de movimento estiverem presentes", + "motion_as_ds4_desc": "Se desativado, os sensores de movimento não serão tidos em conta durante a seleção de tipo gamepad", + "mouse": "Habilitar Entrada do Mouse", + "mouse_desc": "Permite aos convidados controlar o sistema de host com o mouse", + "native_pen_touch": "Suporte nativo para Pen/Toque", + "native_pen_touch_desc": "Quando ativado, o Sunshine irá passar por eventos nativos de caneta/toque de clientes de lua. Isto pode ser útil para desativar aplicações mais antigas sem o suporte nativo ao canal/toque.", + "nvenc_h264_cavlc": "Preferir CAVLC ao CABAC no H.264", + "nvenc_h264_cavlc_desc": "Forma simples de codificação de entrope. CAVLC precisa de cerca de 10% mais bitrate para a mesma qualidade. Somente relevante para dispositivos de decodificação realmente antigos.", + "nvenc_latency_over_power": "Prefere latência de codificação inferior sobre economia de energia", + "nvenc_latency_over_power_desc": "O Sunshine solicita o máximo de velocidade de relógio com GPU durante a transmissão, para reduzir a latência de codificação. Desativação não é recomendado, uma vez que isso pode levar a um aumento significativo da latência de codificação.", + "nvenc_opengl_vulkan_on_dxgi": "Apresentar OpenGL/Vulkan em cima de DXGI", + "nvenc_opengl_vulkan_on_dxgi_desc": "O Sunshine não pode capturar programas OpenGL e Vulkan de tela cheia a uma taxa de quadros completa, a menos que eles apresentem em cima do DXGI. Essa configuração é de todo o sistema que é revertida na saída sunshine do programa.", + "nvenc_preset": "Predefinição de desempenho", + "nvenc_preset_1": "(mais rápido, padrão)", + "nvenc_preset_7": "(mais lento)", + "nvenc_preset_desc": "Valores maiores melhoram a compressão (qualidade em taxa de bits dada) ao custo de maior latência de codificação. Recomendado para mudar apenas quando limitado por rede ou descodificador, caso contrário, o efeito semelhante pode ser alcançado aumentando a taxa de bits.", + "nvenc_realtime_hags": "Use prioridade em tempo real em agendamento de gpu acelerado por hardware", + "nvenc_realtime_hags_desc": "Atualmente os motoristas da NVIDIA podem congelar no codificador quando o HAGS estiver ativado, a prioridade em tempo real é usada e a utilização da VRAM está próxima do máximo. Desabilitar esta opção reduz a prioridade ao alto, contornando o congelamento ao custo de desempenho reduzido quando a GPU está fortemente carregada.", + "nvenc_spatial_aq": "Spatial AQ", + "nvenc_spatial_aq_desc": "Atribuir valores mais elevados de QP a regiões planas do vídeo. Recomendado para permitir o streaming em taxas de bits mais baixas.", + "nvenc_spatial_aq_disabled": "Desativado (mais rápido, padrão)", + "nvenc_spatial_aq_enabled": "Ativado (mais lento)", + "nvenc_twopass": "Modo de duas passagens", + "nvenc_twopass_desc": "Adiciona passe de codificação preliminar. Isso permite detectar mais vetores de movimento, distribuir melhor a taxa de bits pelo quadro e aderir de forma mais rigorosa aos limites de bits. Desabilitar não é recomendado uma vez que isso pode levar a uma superação de bits ocasional e a perda de pacotes subsequentes.", + "nvenc_twopass_disabled": "Desativado (mais rápido, não recomendado)", + "nvenc_twopass_full_res": "Resolução completa (mais lento)", + "nvenc_twopass_quarter_res": "Resolução de trimestre (mais rápido, padrão)", + "nvenc_vbv_increase": "Porcentagem de VBV/HRD de Um-frame", + "nvenc_vbv_increase_desc": "Por padrão, o sunshine usa um simples frame VBV/HRD, o que significa que qualquer tamanho de quadro de vídeo codificado não é esperado exceder a bitrate solicitada dividida pela taxa de quadros solicitada. Relaxar esta restrição pode ser benéfico e agir como taxa de bits variável de baixa latência, mas também pode levar à perda de pacotes se a rede não tiver espaço de armazenamento para manipular espinhos de taxa de bits. O valor máximo aceito é 400, o que corresponde a 5x de aumento no limite máximo do quadro de vídeo codificado.", + "origin_web_ui_allowed": "Interface de Origem Web Permitida", + "origin_web_ui_allowed_desc": "A origem do endereço do endpoint remoto que não é negado o acesso à Web UI", + "origin_web_ui_allowed_lan": "Somente aqueles em LAN podem acessar a interface Web", + "origin_web_ui_allowed_pc": "Somente localhost pode acessar a Web UI", + "origin_web_ui_allowed_wan": "Alguém pode acessar a interface web", + "output_name_desc_linux": "Durante a inicialização do sol, você deve ver a lista de monitores detectados. Você precisa usar o valor antes do dois-pontos na saída. Por exemplo:", + "output_name_desc_win": "Especifique manualmente um display a ser usado para captura. Se não for definido, o display primário é capturado. Nota: Se você especificou uma GPU acima, essa tela deve estar conectada à GPU. Os valores apropriados podem ser encontrados usando o seguinte comando:", + "output_name_linux": "Número de monitor", + "output_name_win": "Nome da saída", + "ping_timeout": "Tempo limite", + "ping_timeout_desc": "Quanto tempo esperar em milissegundos por dados do luar antes de desligar o fluxo", + "pkey": "Chave Privada", + "pkey_desc": "A chave privada usada para a interface do usuário da web e o pareamento do cliente Moonlight. Para a melhor compatibilidade, esta deve ser uma chave privada RSA-2048.", + "port": "Porta", + "port_alert_1": "O sol não pode usar portas abaixo de 1024!", + "port_alert_2": "Portas acima de 65535 não estão disponíveis!", + "port_desc": "Definir a família dos portos usados pelo Sunshine", + "port_http_port_note": "Use esta porta para conectar com o Luar.", + "port_note": "Observação", + "port_port": "Porta", + "port_protocol": "Protocol", + "port_tcp": "TCP", + "port_udp": "UDP", + "port_warning": "Expor a interface da web à internet é um risco de segurança! Proceda por sua própria conta e risco!", + "port_web_ui": "Web UI", + "qp": "Parâmetro de Quantização", + "qp_desc": "Alguns dispositivos podem não suportar Taxa de Bits Constante. Para esses dispositivos, QP é usado. Valores maiores significam mais compressão, mas menos qualidade.", + "qsv_coder": "Programador QuickSync (H264)", + "qsv_preset": "QuickSync Preset", + "qsv_preset_fast": "rápido (baixa qualidade)", + "qsv_preset_faster": "mais rápido (menor qualidade)", + "qsv_preset_medium": "médio (padrão)", + "qsv_preset_slow": "lento (boa qualidade)", + "qsv_preset_slower": "mais lento (melhor qualidade)", + "qsv_preset_slowest": "mais lento (melhor qualidade)", + "qsv_preset_veryfast": "mais rápido (menor qualidade)", + "qsv_slow_hevc": "Permitir codificação lenta do HEVC", + "qsv_slow_hevc_desc": "Isto pode habilitar a codificação HEVC em GPUs mais antigas, ao custo de maior uso da GPU e pior desempenho.", + "res_fps_desc": "Os modos de exibição anunciados pelo Sol. Algumas versões do Moonlight, como Moonlight-nx (Switch), dependem destas listas para garantir que as resoluções e fugas solicitadas sejam apoiadas. Esta configuração não altera a forma como o fluxo de tela é enviado para o Moonlight.", + "resolutions": "Resoluções anunciadas", + "restart_note": "O sol está reiniciando para aplicar mudanças.", + "sunshine_name": "Nome do Sol", + "sunshine_name_desc": "O nome exibido pela luz da lua. Se não for especificado, o nome do host do PC é usado", + "sw_preset": "Predefinições SW", + "sw_preset_desc": "Otimize a troca entre a velocidade de codificação (quadros codificados por segundo) e a eficiência de compressão (qualidade por bit no bitstream). O padrão é super rápido.", + "sw_preset_fast": "rápido", + "sw_preset_faster": "mais rápido", + "sw_preset_medium": "Médio", + "sw_preset_slow": "devagar", + "sw_preset_slower": "lento", + "sw_preset_superfast": "super rápido (padrão)", + "sw_preset_ultrafast": "anular", + "sw_preset_veryfast": "veryfast", + "sw_preset_veryslow": "veryslow", + "sw_tune": "Ajuste SW", + "sw_tune_animation": "animação -- boa para desenhos; usa maior debargamento e mais quadros de referência", + "sw_tune_desc": "Ajuste as opções que são aplicadas após a predefinição. O padrão é zero.", + "sw_tune_fastdecode": "fastdecode -- permite uma decodificação mais rápida desabilitando certos filtros", + "sw_tune_film": "filme - usado para conteúdo de filmes de alta qualidade; reduz o deblocking", + "sw_tune_grain": "grãos - preserva a estrutura de grãos em material cinematográfico antigo e cinzento", + "sw_tune_stillimage": "ainda - bom para conteúdo parecido com a apresentação de slides", + "sw_tune_zerolatency": "zerolatência -- bom para codificação rápida e streaming de baixa latência (padrão)", + "touchpad_as_ds4": "Emule um gamepad DS4 se o cliente controla um touchpad estiver presente", + "touchpad_as_ds4_desc": "Se desativada, a presença de touchpad não será tida em conta durante a seleção de tipos de controle.", + "upnp": "UPNP", + "upnp_desc": "Configurar automaticamente o encaminhamento de portas para transmissão na Internet", + "virtual_sink": "Pia Virtual", + "virtual_sink_desc": "Especifique manualmente um dispositivo de áudio virtual para usar. Se não for definido, o dispositivo é escolhido automaticamente. Recomendamos fortemente deixar este campo em branco para usar a seleção automática de dispositivo!", + "virtual_sink_placeholder": "Alto-falantes de streaming Steam", + "vt_coder": "VideoToolbox Coder", + "vt_realtime": "Codificação em Tempo Real VideoToolbox", + "vt_software": "Codificação VideoToolbox Software", + "vt_software_allowed": "Permitido", + "vt_software_forced": "Forçado", + "wan_encryption_mode": "Modo de Criptografia WAN", + "wan_encryption_mode_1": "Habilitado para clientes suportados (padrão)", + "wan_encryption_mode_2": "Obrigatório para todos os clientes", + "wan_encryption_mode_desc": "Isso determina quando a criptografia será usada no streaming pela internet. A criptografia pode reduzir o desempenho do streaming, particularmente em hosts e clientes menos poderosos." + }, + "index": { + "description": "O sol é um anfitrião de jogos auto-hospedado para o Moonlight.", + "download": "BAIXAR", + "loading_latest": "Carregando a última versão...", + "new_nightly": "Um novo Nightly versão está disponível!", + "new_stable": "Uma nova versão Stable está disponível!", + "startup_errors": "Atenção! A Sunshine detectou estes erros durante o arranque. Recomendamos vivamente que os corrija antes de transmitir.", + "version_dirty": "Obrigado por ajudar a fazer do sol um software melhor!", + "version_latest": "Você está executando a última versão do Sunshine", + "welcome": "Olá, Sunshine!" + }, + "navbar": { + "applications": "Aplicações", + "configuration": "Configuração", + "home": "Residencial", + "password": "Mudar a senha", + "pin": "PIN", + "troubleshoot": "Solução de problemas" + }, + "password": { + "confirm_password": "Confirmar senha", + "current_creds": "Credenciais atuais", + "new_creds": "Novas Credenciais", + "new_username_desc": "Se não for especificado, o nome de usuário não irá mudar", + "password_change": "Alteração de senha", + "success_msg": "A senha foi alterada com sucesso! Essa página será recarregada em breve, seu navegador irá pedir as novas credenciais." + }, + "pin": { + "pair_failure": "Falha no pareamento: Verifique se o PIN é digitado corretamente", + "pair_success": "Sucesso! Por favor, verifique a Lua Lunar para continuar", + "pin_pairing": "PIN Pairing", + "send": "Mandar", + "warning_msg": "Certifique-se de que você tem acesso ao cliente com o qual está emparelhando. Este software pode dar controle total ao seu computador, então tenha cuidado!" + }, + "resource_card": { + "github_discussions": "GitHub Discussions", + "legal": "Informações", + "legal_desc": "Ao continuar a usar este software, você concorda com os termos e condições nos seguintes documentos.", + "license": "Tipo:", + "lizardbyte_website": "Portal LizardByte", + "resources": "Recursos", + "resources_desc": "Recursos para luz solar!", + "third_party_notice": "Aviso de terceiros" + }, + "troubleshooting": { + "force_close": "Forçar fechamento", + "force_close_desc": "Se o Moonlight reclamar de um aplicativo em execução, forçar o fechamento do aplicativo deve resolver o problema.", + "force_close_error": "Erro ao fechar o aplicativo", + "force_close_success": "Aplicativo fechado com sucesso!", + "logs": "Registros", + "logs_desc": "Veja os logs carregados por Sunshine", + "logs_find": "Localizar...", + "restart_sunshine": "Reiniciar o Sunshine", + "restart_sunshine_desc": "Se o sol não estiver funcionando corretamente, você pode tentar reiniciá-lo. Isso encerrará todas as sessões em execução.", + "restart_sunshine_success": "A luz do sol está reiniciando", + "troubleshooting": "Solução de problemas", + "unpair_all": "Desconectar todos", + "unpair_all_desc": "Remova todos os seus dispositivos pareados", + "unpair_all_error": "Erro ao desemparelhar", + "unpair_all_success": "Desemparelhado com sucesso!" + }, + "welcome": { + "confirm_password": "Confirmar a senha", + "create_creds": "Antes de começar, precisamos que você crie um novo nome de usuário e senha para acessar a interface da web.", + "create_creds_alert": "As credenciais abaixo são necessárias para acessar a interface da Web do Sunshine. Mantenha-as seguras, já que você nunca vai vê-las novamente!", + "greeting": "Bem-vindo ao Sol!", + "login": "Conectar-se", + "welcome_success": "Esta página será recarregada em breve, seu navegador irá pedir novas credenciais" + } +} diff --git a/src_assets/common/assets/web/public/assets/locale/ru.json b/src_assets/common/assets/web/public/assets/locale/ru.json index 12c382f3d62..c99f4fddb38 100644 --- a/src_assets/common/assets/web/public/assets/locale/ru.json +++ b/src_assets/common/assets/web/public/assets/locale/ru.json @@ -92,24 +92,33 @@ "always_send_scancodes": "Всегда отправлять коды", "always_send_scancodes_desc": "Отправка scancodes улучшает совместимость с играми и приложениями, но может привести к неправильному вводу клавиатуры от некоторых клиентов, которые не используют американскую клавиатуру. Включите, если ввод клавиатуры вообще не работает в некоторых приложениях. Отключено, если ключи на клиенте генерируют неправильный входной параметр на хосте.", "amd_coder": "AMF Coder (H264)", + "amd_coder_desc": "Позволяет выбрать энтропическую кодировку для приоритизации скорости или качества кодирования. H.264 только.", "amd_enforce_hrd": "AMF Hypothetical Reference Decoder (HRD) Enforcement", + "amd_enforce_hrd_desc": "Увеличивает ограничения на контроль за скоростью для удовлетворения требований модели HRD. Это значительно снижает переполнение битрейта, но может вызвать кодировку артефактов или уменьшить качество на некоторых картах.", "amd_preanalysis": "Предварительный анализ AMF", + "amd_preanalysis_desc": "Это позволяет проводить предварительный анализ скорости управления, который может повысить качество за счет увеличения задержки кодирования.", "amd_quality": "Качество AMF", "amd_quality_balanced": "сбалансированный -- сбалансированный (по умолчанию)", + "amd_quality_desc": "Это определяет баланс между скоростью кодирования и качеством.", + "amd_quality_group": "Настройки качества AMF", "amd_quality_quality": "качество -- предпочитаемое качество", "amd_quality_speed": "скорость - скорость отдачи", "amd_rc": "Контроль скорости AMF", "amd_rc_cbr": "cbr -- постоянный битрейт", "amd_rc_cqp": "cqp -- постоянный режим qp", + "amd_rc_desc": "Это контролирует способ контроля тарифов, чтобы убедиться, что мы не превысили цели битрейта клиента. 'cqp' не подходит для таргетинга битрейта, а другие параметры помимо 'vbr_latency' зависят от соблюдения HRD Enforcement для ограничения переполнения битрейта.", + "amd_rc_group": "Настройки контроля скорости AMF", "amd_rc_vbr_latency": "vbr_latency -- Задержка ограничивает битрейт (по умолчанию)", "amd_rc_vbr_peak": "vbr_peak -- пиковый ограниченный битрейт", "amd_usage": "Использование AMF", + "amd_usage_desc": "Определяет базовую кодировку профиля. Все параметры, представленные ниже, переопределят поднабор пользовательского профиля, но есть дополнительные скрытые настройки, которые не могут быть настроены в другом месте.", "amd_usage_lowlatency": "низкая задержка - низкая задержка (быстро)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - низкая задержка, высокое качество (быстро)", "amd_usage_transcoding": "перекодирование -- перекодирование (медленно)", "amd_usage_ultralowlatency": "ультразвуковая задержка - ультра низкая задержка (быстрый)", "amd_usage_webcam": "веб-камера -- веб-камера (медленно)", "amd_vbaq": "Адаптивное квантование на основе отклонений AMF (VBAQ)", + "amd_vbaq_desc": "Как правило, визуальная система человека менее чувствительна к артефактам в особо текстурированных районах. В режиме VBAQ отклонение пикселей используется для обозначения сложности пространственной текстуры, что позволяет кодировщику выделять больше битов для более плавности зон. Включение этой функции приводит к улучшению субъективного качества зрения с некоторым содержимым.", "apply_note": "Нажмите 'Применить', чтобы перезапустить Sunshine и применить изменения. Все запущенные сессии будут завершены.", "audio_sink": "Снимок звука", "audio_sink_desc_linux": "Название звуковой сигнала, используемой для аудиоциклов. Если эта переменная не указана, пульс будет выбирать стандартное устройство монитора. Вы можете найти название звуковой раковины, используя либо команду:", diff --git a/src_assets/common/assets/web/public/assets/locale/sv.json b/src_assets/common/assets/web/public/assets/locale/sv.json index 347a6ac5f2c..24492c0626b 100644 --- a/src_assets/common/assets/web/public/assets/locale/sv.json +++ b/src_assets/common/assets/web/public/assets/locale/sv.json @@ -92,24 +92,33 @@ "always_send_scancodes": "Skicka alltid sökkoder", "always_send_scancodes_desc": "Att skicka skanningskoder förbättrar kompatibiliteten med spel och appar men kan resultera i felaktig tangentbordsinmatning från vissa klienter som inte använder en amerikansk engelsk tangentbordslayout. Aktivera om tangentbordsinmatningen inte fungerar alls i vissa program. Inaktivera om nycklar på klienten genererar fel indata på värden.", "amd_coder": "AMF-kod (H264)", + "amd_coder_desc": "Låter dig välja entropi-kodning för att prioritera kvalitet eller kodningshastighet. H.264 endast.", "amd_enforce_hrd": "AMF Hypotetisk referensavkodare (HRD) verkställighet", + "amd_enforce_hrd_desc": "Ökar begränsningarna för hastighetskontroll för att uppfylla kraven i HRD-modellen. Detta minskar kraftigt bithastighetsöverflöden, men kan orsaka kodning artefakter eller minskad kvalitet på vissa kort.", "amd_preanalysis": "AMF Föranalys", + "amd_preanalysis_desc": "Detta möjliggör föranalys av hastighetskontroll, vilket kan öka kvaliteten på bekostnad av ökad kodningstid.", "amd_quality": "AMF Kvalitet", "amd_quality_balanced": "balanced -- balanserad (standard)", + "amd_quality_desc": "Detta styr balansen mellan kodningshastighet och kvalitet.", + "amd_quality_group": "AMF Kvalitetsinställningar", "amd_quality_quality": "kvalitet – föredra kvalitet", "amd_quality_speed": "speed -- föredra hastighet", "amd_rc": "AMF Rate kontroll", "amd_rc_cbr": "cbr – konstant bithastighet", "amd_rc_cqp": "cqp – konstant qp-läge", + "amd_rc_desc": "Detta styr metoden för att säkerställa att vi inte överskrider klientens bithastighetsmål. 'cqp' är inte lämplig för bitrate targeting, och andra alternativ förutom 'vbr_latency' beror på HRD Enforcement för att begränsa bitrate overflows.", + "amd_rc_group": "Inställningar för AMF Rate", "amd_rc_vbr_latency": "vbr_latency – fördröjningsbegränsad variabelbithastighet (standard)", "amd_rc_vbr_peak": "vbr_peak – peak constrained variabelbithastighet", "amd_usage": "AMF användning", + "amd_usage_desc": "Detta ställer in grundkodningsprofilen. Alla alternativ som presenteras nedan kommer att åsidosätta en delmängd av användarprofilen, men det finns ytterligare dolda inställningar som inte kan konfigureras någon annanstans.", "amd_usage_lowlatency": "låg latens - låg latens (snabb)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality - låg latens, hög kvalitet (snabb)", "amd_usage_transcoding": "transcoding – Omkodning (långsammare)", "amd_usage_ultralowlatency": "ultralowlatens - extremt låg latens (snabbast)", "amd_usage_webcam": "webcam – webbkamera (långsam)", "amd_vbaq": "AMF Variansbaserad adaptiv kvantisering (VBAQ)", + "amd_vbaq_desc": "Det mänskliga visuella systemet är typiskt mindre känsligt för artefakter i mycket texturerade områden. I VBAQ läge används pixelvarians för att indikera komplexiteten i rumsliga texturer, vilket gör att kodaren kan allokera fler bitar till jämnare områden. Att aktivera denna funktion leder till förbättringar i subjektiv visuell kvalitet med lite innehåll.", "apply_note": "Klicka på \"Tillämpa\" för att starta om solsken och tillämpa ändringar. Detta kommer att avsluta alla pågående sessioner.", "audio_sink": "Ljud Sink", "audio_sink_desc_linux": "Namnet på ljuddiskbänken som används för Audio Loopback. Om du inte anger denna variabel, kommer pulseaudio att välja standardövervakningsenheten. Du kan hitta namnet på audiosänkan med hjälp av antingen kommandot:", diff --git a/src_assets/common/assets/web/public/assets/locale/zh.json b/src_assets/common/assets/web/public/assets/locale/zh.json index fac14e2b593..c5efef97834 100644 --- a/src_assets/common/assets/web/public/assets/locale/zh.json +++ b/src_assets/common/assets/web/public/assets/locale/zh.json @@ -5,9 +5,9 @@ "autodetect": "自动检测(推荐)", "cancel": "取消", "disabled": "禁用", - "disabled_def": "禁用(默认)", - "do_cmd": "执行命令", - "elevated": "权限提升", + "disabled_def": "禁用(默认)", + "do_cmd": "打开应用时执行命令", + "elevated": "提权运行", "enabled": "启用", "enabled_def": "启用(默认)", "error": "错误!", @@ -17,7 +17,7 @@ "save": "保存", "see_more": "查看更多", "success": "成功!", - "undo_cmd": "撤销命令", + "undo_cmd": "退出应用时执行命令", "username": "用户名", "warning": "警告!" }, @@ -27,45 +27,45 @@ "add_new": "添加新应用", "app_name": "应用名称", "app_name_desc": "在 Moonlight 显示的应用名称", - "applications_desc": "只有重启客户端时应用才会被刷新", + "applications_desc": "只有重启客户端时应用列表才会被刷新", "applications_title": "应用", - "auto_detach": "如果应用程序快速关闭,继续串流", + "auto_detach": "启动串流后应用突然关闭时不退出串流", "auto_detach_desc": "这将尝试自动检测启动器类型的应用程序,这些应用程序会在启动另一个程序或自身实例后迅速关闭。当检测到启动器类型的应用程序时,它将被视为独立的应用程序。", "cmd": "命令", - "cmd_desc": "要启动的主程序。如果为空,则不会启动任何应用程序。", + "cmd_desc": "要启动的主应用程序。如果为空,则不会启动任何应用程序。", "cmd_note": "如果命令中可执行文件的路径包含空格,则必须用引号括起来。", "cmd_prep_desc": "此应用运行前/后要运行的命令列表。如果任何前置命令失败,应用的启动过程将被中止。", - "cmd_prep_name": "命令准备工作", - "covers_found": "找到封面", + "cmd_prep_name": "启动/退出时执行命令", + "covers_found": "找到的封面", "delete": "删除", "detached_cmds": "独立命令", "detached_cmds_add": "添加独立命令", "detached_cmds_desc": "要在后台运行的命令列表。", - "detached_cmds_note": "如果命令中可执行文件的路径包含空格,则必须用引号括起来。", + "detached_cmds_note": "如果命令可执行文件的路径包含空格,您必须在引号里将其贴出。", "edit": "编辑", "env_app_id": "应用 ID", "env_app_name": "应用名称", "env_client_audio_config": "客户端请求的音频配置 (2.0/5.1/7.1)", - "env_client_enable_sops": "客户端请求自动更改游戏设置以实现最佳串流效果 (true/false)", - "env_client_fps": "客户请求的 FPS (int)", + "env_client_enable_sops": "客户端请求自动更改游戏设置以实现最佳串流效果 (布尔值)", + "env_client_fps": "客户端请求的帧率(int值)", "env_client_gcmap": "客户端请求的游戏手柄掩码,采用 bitset/bitfield 格式 (int)", - "env_client_hdr": "客户端已启用 HDR (true/false)", - "env_client_height": "客户端请求的高度 (int)", + "env_client_hdr": "HDR 已被客户端启用 (true/false)", + "env_client_height": "客户端请求的分辨率的高度(int值, 单位: 像素)", "env_client_host_audio": "客户端请求在主机播放声音 (true/false)", - "env_client_width": "客户端请求的宽度 (int)", + "env_client_width": "客户端请求的分辨率的宽度(int值, 单位: 像素)", "env_displayplacer_example": "示例 - 使用 displayplacer 自动更改分辨率:", "env_qres_example": "示例 - 使用 QRes 自动更改分辨率:", "env_qres_path": "QRes 路径", "env_var_name": "变量名称", "env_vars_about": "关于环境变量", - "env_vars_desc": "默认情况下,所有命令都会得到这些环境变量:", + "env_vars_desc": "默认情况下,以下的环境变量均可在上方调用", "env_xrandr_example": "示例 - 使用 Xrandr 自动更改分辨率:", "exit_timeout": "退出超时", "exit_timeout_desc": "请求退出时,等待所有应用进程正常关闭的秒数。 如果未设置,默认等待5秒钟。如果设置为零或负值,应用程序将立即终止。", "find_cover": "查找封面", "global_prep_desc": "启用/禁用此应用程序的全局预处理命令。", "global_prep_name": "全局预处理命令", - "image": "图片", + "image": "封面", "image_desc": "发送到客户端的应用程序图标/图片/图像的路径。图片必须是 PNG 文件。如果未设置,Sunshine 将发送默认图片。", "loading": "加载中...", "name": "名称", @@ -92,24 +92,33 @@ "always_send_scancodes": "总是发送键盘扫描码", "always_send_scancodes_desc": "发送键盘扫描码可增强与游戏和应用程序的兼容性,但可能会导致某些不使用美式英语键盘布局的客户端键盘输入不正确。如果键盘输入在某些应用程序中完全不工作,请启用。如果客户端上的按键在主机上产生错误输入,则禁用。", "amd_coder": "AMF 编码器 (H264)", + "amd_coder_desc": "允许您选择用于优先质量或编码速度的缠绕编码。 H.264。", "amd_enforce_hrd": "AMF 推测参考解码器 (HRD)", + "amd_enforce_hrd_desc": "提高对费率控制的限制,以满足人力资源开发模式的要求。 这大大减少了比特率过量流量,但可能导致编码伪影或降低某些卡片的质量。", "amd_preanalysis": "AMF 预分析", + "amd_preanalysis_desc": "这使得能够进行比率控制预分析,这可能会以增加编码延迟为代价提高质量。", "amd_quality": "AMF 质量", "amd_quality_balanced": "balanced -- 平衡(默认)", + "amd_quality_desc": "这将控制编码速度和质量之间的平衡。", + "amd_quality_group": "AMF 质量设置", "amd_quality_quality": "quality -- 偏好质量", "amd_quality_speed": "speed -- 偏好速度", - "amd_rc": "AMF 速率控制", + "amd_rc": "AMF 码率控制", "amd_rc_cbr": "cbr -- 恒定比特率(默认)", "amd_rc_cqp": "cqp -- 恒定 QP 模式", + "amd_rc_desc": "这将控制费率控制方法,以确保我们不超过客户端比特率目标。 “cqp”不适合于比特率定位,除“vbr_latency”之外的其他选项依赖于人力资源开发的执行来帮助抑制比特率过多。", + "amd_rc_group": "AMF 费率控制设置", "amd_rc_vbr_latency": "vbr_latency -- 受延迟限制的可变比特率", "amd_rc_vbr_peak": "vbr_peak -- 受峰值限制的可变比特率", - "amd_usage": "AMF 使用", + "amd_usage": "AMF 工作模式", + "amd_usage_desc": "设置基本编码配置文件。 以下列出的所有选项将覆盖使用情况简介的子集,但是应用到了其他不可配置的隐藏设置。", "amd_usage_lowlatency": "lowlatency -- 低延迟(最快)", "amd_usage_lowlatency_high_quality": "lowlatency_high_quality -- 低延迟、高质量(快速)", "amd_usage_transcoding": "transcoding -- 转码(最慢)", "amd_usage_ultralowlatency": "ultralowlatency -- 超低延迟(最快)", "amd_usage_webcam": "webcam -- 网络摄像头(慢)", "amd_vbaq": "AMF 基于方差的自适应量化 (VBAQ)", + "amd_vbaq_desc": "人的视觉系统通常对高成形地区的艺术品不太敏感。 在 VBAQ 模式下,像素差异用于表示空间纹理的复杂性,使编码器能够将更多的比特分配给较平的区域。 启用此功能可提高主观视觉品质及一些内容。", "apply_note": "点击“应用”重启 Sunshine 并应用更改。这将终止任何正在运行的会话。", "audio_sink": "音频输出设备", "audio_sink_desc_linux": "手动指定需要抓取的音频输出设备。如果您没有指定此变量,PulseAudio 将选择默认监测设备。 您可以使用以下任何命令找到音频输出设备的名称:", @@ -137,7 +146,7 @@ "configuration": "配置", "controller": "启用游戏手柄输入", "controller_desc": "允许客户端使用游戏手柄控制主机系统", - "credentials_file": "凭据文件", + "credentials_file": "登录凭据文件", "credentials_file_desc": "将用户名/密码与 Sunshine 的状态文件分开保存。", "ds4_back_as_touchpad_click": "映射回/选择触摸板点击", "ds4_back_as_touchpad_click_desc": "强制使用 DS4 仿真时,地图返回/选择触摸板点击", @@ -146,12 +155,12 @@ "encoder_software": "软件编码", "external_ip": "外部 IP", "external_ip_desc": "如果没有指定外部 IP 地址,Sunshine 将自动检测外部 IP", - "fec_percentage": "FEC 百分比", + "fec_percentage": "FEC (前向纠错) 参数", "fec_percentage_desc": "每个视频帧中的错误纠正数据包百分比。较高的值可纠正更多的网络数据包丢失,但代价是增加带宽使用量。", "ffmpeg_auto": "auto -- 由 ffmpeg 决定(默认)", - "file_apps": "应用程序文件", + "file_apps": "应用程序配置文件", "file_apps_desc": "Sunshine 保存应用程序配置的文件。", - "file_state": "状态文件", + "file_state": "实时状态文件", "file_state_desc": "Sunshine 保存当前状态的文件", "fps": "通告 FPS", "gamepad": "模拟游戏手柄类型", @@ -165,10 +174,10 @@ "hevc_mode": "HEVC 支持", "hevc_mode_0": "Sunshine 将根据编码器能力通告对 HEVC 的支持(推荐)", "hevc_mode_1": "Sunshine 将不会通告对 HEVC 的支持", - "hevc_mode_2": "Sunshine 将通告 HEVC Main 配置支持", + "hevc_mode_2": "Sunshine 将为HEVC 主配置文件做广告支持", "hevc_mode_3": "Sunshine 将通告 HEVC Main 和 Main10 (HDR) 配置支持", "hevc_mode_desc": "允许客户端请求 HEVC Main 或 HEVC Main10 视频流。HEVC 的编码对 CPU 的要求较高,因此在使用软件编码时,启用此功能可能会降低性能。", - "high_resolution_scrolling": "高分辨率滚动支持", + "high_resolution_scrolling": "高分辨率鼠标滚动支持", "high_resolution_scrolling_desc": "启用后,Sunshine 将透传来自 Moonlight 客户端的高分辨率滚动事件。对于那些使用高分辨率滚动事件时滚动速度过快的旧版应用程序来说,禁用此功能非常有用。", "install_steam_audio_drivers": "安装 Steam 音频驱动程序", "install_steam_audio_drivers_desc": "如果安装了 Steam,则会自动安装 Steam Streaming Speakers 驱动程序,以支持 5.1/7.1 环绕声和主机音频静音。", @@ -197,7 +206,7 @@ "log_level_desc": "打印到标准输出的最小日志级别", "log_path": "日志文件路径", "log_path_desc": "Sunshine 当前日志存储的文件。", - "min_threads": "最低 CPU 线程数", + "min_threads": "最小CPU 线程计数", "min_threads_desc": "提高该值会略微降低编码效率,但为了获得更多的 CPU 内核用于编码,通常是值得的。理想值是在您的硬件配置上以所需的串流设置进行可靠编码的最低值。", "misc": "杂项选项", "motion_as_ds4": "如果客户端报告游戏手柄存在陀螺仪,则模拟一个 DS4 游戏手柄", @@ -265,7 +274,7 @@ "qsv_preset_slower": "slower - 更慢(更高质量)", "qsv_preset_slowest": "slowest - 最慢(最高质量)", "qsv_preset_veryfast": "veryfast - 最快 (最低质量)", - "qsv_slow_hevc": "允许较慢的 HEVC 编码", + "qsv_slow_hevc": "允许慢速 HEVC 编码", "qsv_slow_hevc_desc": "这可以在较旧的 Intel GPU 上启用 HEVC 编码,但代价是 GPU 占用率更高,性能更差。", "res_fps_desc": "由 Sunshine 通告的显示模式。 某些版本的 Moonlight,如 Moonlight-nx (Switch),依靠这些清单来确保支持所请求的分辨率和 fps。 此设置不会改变屏幕串流送至 Moonlight 的方式。", "resolutions": "通告分辨率", @@ -331,7 +340,7 @@ "confirm_password": "确认密码", "current_creds": "当前账户信息", "new_creds": "新的账户信息", - "new_username_desc": "如果未指定,用户名将不会更改", + "new_username_desc": "如果不输入新的用户名, 用户名将保持不变", "password_change": "密码更改", "success_msg": "密码已成功更改!此页面即将重新加载,您的浏览器将要求您输入新的账户信息。" }, @@ -353,7 +362,7 @@ "third_party_notice": "第三方声明" }, "troubleshooting": { - "force_close": "强制关闭", + "force_close": "强制结束运行", "force_close_desc": "如果 Moonlight 抱怨某个应用正在运行,强制关闭该应用应该可以解决问题。", "force_close_error": "关闭应用时出错", "force_close_success": "应用关闭成功!", @@ -365,7 +374,7 @@ "restart_sunshine_success": "Sunhine 正在重启", "troubleshooting": "故障排除", "unpair_all": "全部取消配对", - "unpair_all_desc": "删除您所有配对的设备", + "unpair_all_desc": "删除您所有已经配对的设备", "unpair_all_error": "取消配对时出错", "unpair_all_success": "取消配对成功!" }, From 067efc7912f561528e3646a3d1bab2ef6571fd81 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 20 Apr 2024 19:20:09 -0500 Subject: [PATCH 35/35] Bump version to v0.23.1 (#2452) --- CHANGELOG.md | 23 +++++++++++++++++++++++ CMakeLists.txt | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ca2b370d21..cd0edda8650 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## [0.23.1] - 2024-04-20 +**Fixed** +- (Capture/Windows) Disable HRD and CBR encoding options by default for AMD GPUs due to video quality regressions in v0.23.0 +- (UI) Fix incorrect strings for QuickSync 'fast' and 'faster' presets +- (UI/Linux) Fix update prompt appearing even when running the latest version +- (Input) Fix crash when absolute input events are received prior to the display viewport being set +- (Input/Linux) Fix missing clamping of rumble intensity to valid range +- (Build/Tests) Fix error when attempting to disable compilation of tests +- (Build/Linux) Fix some compilation errors when using Musl libc +- (Logging) Fix broken debug messages for codec capability flags +- (Logging/Linux) Fix log messages to include the correct setcap command for resolving KMS permission errors + +**Added** +- (Capture/Linux) Improve frame time consistency for all capture backends +- (UI) Set focus to the PIN textbox when navigating to the PIN tab + +**Dependencies** +- Remove libavdevice dependency + +**Misc** +- (Linux) Prefer ayatana-appindicator3 over appindicator3 if both are available + ## [0.23.0] - 2024-04-06 Attention, this release contains critical security fixes. Please update as soon as possible. @@ -799,3 +821,4 @@ settings. In v0.17.0, games now run under your user account without elevated pri [0.22.1]: https://github.com/LizardByte/Sunshine/releases/tag/v0.22.1 [0.22.2]: https://github.com/LizardByte/Sunshine/releases/tag/v0.22.2 [0.23.0]: https://github.com/LizardByte/Sunshine/releases/tag/v0.23.0 +[0.23.1]: https://github.com/LizardByte/Sunshine/releases/tag/v0.23.1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 180a9911bdc..3fbb9416c70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.18) # todo - set this conditionally # todo - set version to 0.0.0 once confident in automated versioning -project(Sunshine VERSION 0.23.0 +project(Sunshine VERSION 0.23.1 DESCRIPTION "Self-hosted game stream host for Moonlight" HOMEPAGE_URL "https://app.lizardbyte.dev/Sunshine")

    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