Skip to content

Commit deb45bb

Browse files
committed
feat: 添加HDR最高亮度设置
1 parent 3448b09 commit deb45bb

File tree

6 files changed

+26
-2
lines changed

6 files changed

+26
-2
lines changed

app/src/main/java/com/limelight/Game.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3710,8 +3710,10 @@ private void notifySystemHdrStatus(boolean hdrEnabled) {
37103710
// 通过WindowManager.LayoutParams设置亮度
37113711
WindowManager.LayoutParams params = getWindow().getAttributes();
37123712
if (hdrEnabled) {
3713-
// 强制高亮度模式
3714-
// params.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL;
3713+
// 根据设置决定是否强制高亮度模式
3714+
if (prefConfig != null && prefConfig.enableHdrHighBrightness) {
3715+
params.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL;
3716+
}
37153717
// 设置窗口标志以支持HDR
37163718
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
37173719
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public enum PerfOverlayPosition {
8383
private static final String HALF_HEIGHT_OSC_PORTRAIT_PREF_STRING = "checkbox_half_height_osc_portrait";
8484
private static final String LEGACY_DISABLE_FRAME_DROP_PREF_STRING = "checkbox_disable_frame_drop";
8585
private static final String ENABLE_HDR_PREF_STRING = "checkbox_enable_hdr";
86+
private static final String ENABLE_HDR_HIGH_BRIGHTNESS_PREF_STRING = "checkbox_enable_hdr_high_brightness";
8687
private static final String ENABLE_PIP_PREF_STRING = "checkbox_enable_pip";
8788
private static final String ENABLE_PERF_OVERLAY_STRING = "checkbox_enable_perf_overlay";
8889
private static final String PERF_OVERLAY_LOCKED_STRING = "perf_overlay_locked";
@@ -171,6 +172,7 @@ public enum PerfOverlayPosition {
171172
private static final boolean SHOW_GUIDE_BUTTON_DEFAULT = true;
172173
private static final boolean HALF_HEIGHT_OSC_PORTRAIT_DEFAULT = true;
173174
private static final boolean DEFAULT_ENABLE_HDR = false;
175+
private static final boolean DEFAULT_ENABLE_HDR_HIGH_BRIGHTNESS = false;
174176
private static final boolean DEFAULT_ENABLE_PIP = false;
175177
private static final boolean DEFAULT_ENABLE_PERF_OVERLAY = false;
176178
private static final boolean DEFAULT_PERF_OVERLAY_LOCKED = false;
@@ -306,6 +308,7 @@ public enum ScreenPosition {
306308
public boolean showGuideButton;
307309
public boolean halfHeightOscPortrait;
308310
public boolean enableHdr;
311+
public boolean enableHdrHighBrightness;
309312
public boolean enablePip;
310313
public boolean enablePerfOverlay;
311314
public boolean perfOverlayLocked;
@@ -646,6 +649,7 @@ public static void resetStreamingSettings(Context context) {
646649
.remove(FPS_PREF_STRING)
647650
.remove(VIDEO_FORMAT_PREF_STRING)
648651
.remove(ENABLE_HDR_PREF_STRING)
652+
.remove(ENABLE_HDR_HIGH_BRIGHTNESS_PREF_STRING)
649653
.remove(UNLOCK_FPS_STRING)
650654
.remove(FULL_RANGE_PREF_STRING)
651655
.apply();
@@ -788,6 +792,7 @@ else if (audioConfig.equals("51")) {
788792
config.showGuideButton = prefs.getBoolean(SHOW_GUIDE_BUTTON_PREF_STRING, SHOW_GUIDE_BUTTON_DEFAULT);
789793
config.halfHeightOscPortrait = prefs.getBoolean(HALF_HEIGHT_OSC_PORTRAIT_PREF_STRING, HALF_HEIGHT_OSC_PORTRAIT_DEFAULT);
790794
config.enableHdr = prefs.getBoolean(ENABLE_HDR_PREF_STRING, DEFAULT_ENABLE_HDR) && !isShieldAtvFirmwareWithBrokenHdr();
795+
config.enableHdrHighBrightness = prefs.getBoolean(ENABLE_HDR_HIGH_BRIGHTNESS_PREF_STRING, DEFAULT_ENABLE_HDR_HIGH_BRIGHTNESS);
791796
config.enablePip = prefs.getBoolean(ENABLE_PIP_PREF_STRING, DEFAULT_ENABLE_PIP);
792797
config.enablePerfOverlay = prefs.getBoolean(ENABLE_PERF_OVERLAY_STRING, DEFAULT_ENABLE_PERF_OVERLAY);
793798
config.perfOverlayLocked = prefs.getBoolean(PERF_OVERLAY_LOCKED_STRING, DEFAULT_PERF_OVERLAY_LOCKED);
@@ -1015,6 +1020,7 @@ public boolean writePreferences(Context context, boolean synchronous) {
10151020
.putInt(BITRATE_PREF_STRING, bitrate)
10161021
.putString(VIDEO_FORMAT_PREF_STRING, getVideoFormatPreferenceString(videoFormat))
10171022
.putBoolean(ENABLE_HDR_PREF_STRING, enableHdr)
1023+
.putBoolean(ENABLE_HDR_HIGH_BRIGHTNESS_PREF_STRING, enableHdrHighBrightness)
10181024
.putBoolean(ENABLE_PERF_OVERLAY_STRING, enablePerfOverlay)
10191025
.putBoolean(PERF_OVERLAY_LOCKED_STRING, perfOverlayLocked)
10201026
.putBoolean(REVERSE_RESOLUTION_PREF_STRING, reverseResolution)
@@ -1060,6 +1066,7 @@ public PreferenceConfiguration copy() {
10601066
copy.bitrate = this.bitrate;
10611067
copy.videoFormat = this.videoFormat;
10621068
copy.enableHdr = this.enableHdr;
1069+
copy.enableHdrHighBrightness = this.enableHdrHighBrightness;
10631070
copy.enablePerfOverlay = this.enablePerfOverlay;
10641071
copy.perfOverlayLocked = this.perfOverlayLocked;
10651072
copy.perfOverlayOrientation = this.perfOverlayOrientation;

app/src/main/java/com/limelight/utils/AppSettingsManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class AppSettingsManager {
3232
private static final String INTENT_LAST_SETTINGS_RESOLUTION_SCALE = "LastSettingsResolutionScale";
3333
private static final String INTENT_LAST_SETTINGS_VIDEO_FORMAT = "LastSettingsVideoFormat";
3434
private static final String INTENT_LAST_SETTINGS_ENABLE_HDR = "LastSettingsEnableHdr";
35+
private static final String INTENT_LAST_SETTINGS_ENABLE_HDR_HIGH_BRIGHTNESS = "LastSettingsEnableHdrHighBrightness";
3536
private static final String INTENT_LAST_SETTINGS_ENABLE_MIC = "LastSettingsEnableMic";
3637
private static final String INTENT_LAST_SETTINGS_MIC_BITRATE = "LastSettingsMicBitrate";
3738
private static final String INTENT_LAST_SETTINGS_ENABLE_NATIVE_MOUSE = "LastSettingsEnableNativeMouse";
@@ -335,6 +336,7 @@ private JSONObject settingsToJson(PreferenceConfiguration settings) throws JSONE
335336
settingsJson.put("resolutionScale", settings.resolutionScale);
336337
settingsJson.put("videoFormat", getVideoFormatPreferenceString(settings.videoFormat));
337338
settingsJson.put("enableHdr", settings.enableHdr);
339+
settingsJson.put("enableHdrHighBrightness", settings.enableHdrHighBrightness);
338340
settingsJson.put("enableMic", settings.enableMic);
339341
settingsJson.put("micBitrate", settings.micBitrate);
340342
settingsJson.put("enableNativeMousePointer", settings.enableNativeMousePointer);
@@ -384,6 +386,7 @@ private PreferenceConfiguration jsonToSettings(JSONObject settingsJson) throws J
384386
settings.videoFormat = parseVideoFormat(settingsJson.optString("videoFormat", "auto"));
385387

386388
settings.enableHdr = settingsJson.optBoolean("enableHdr", false);
389+
settings.enableHdrHighBrightness = settingsJson.optBoolean("enableHdrHighBrightness", false);
387390
settings.enableMic = settingsJson.optBoolean("enableMic", false);
388391
settings.micBitrate = settingsJson.optInt("micBitrate", 96);
389392
settings.enableNativeMousePointer = settingsJson.optBoolean("enableNativeMousePointer", false);
@@ -445,6 +448,7 @@ public static void addLastSettingsToIntent(Intent intent, PreferenceConfiguratio
445448
intent.putExtra(INTENT_LAST_SETTINGS_RESOLUTION_SCALE, lastSettings.resolutionScale);
446449
intent.putExtra(INTENT_LAST_SETTINGS_VIDEO_FORMAT, lastSettings.videoFormat.toString());
447450
intent.putExtra(INTENT_LAST_SETTINGS_ENABLE_HDR, lastSettings.enableHdr);
451+
intent.putExtra(INTENT_LAST_SETTINGS_ENABLE_HDR_HIGH_BRIGHTNESS, lastSettings.enableHdrHighBrightness);
448452
intent.putExtra(INTENT_LAST_SETTINGS_ENABLE_MIC, lastSettings.enableMic);
449453
intent.putExtra(INTENT_LAST_SETTINGS_MIC_BITRATE, lastSettings.micBitrate);
450454
intent.putExtra(INTENT_LAST_SETTINGS_ENABLE_NATIVE_MOUSE, lastSettings.enableNativeMousePointer);
@@ -483,6 +487,7 @@ public boolean applyLastSettingsFromIntent(Intent intent, PreferenceConfiguratio
483487
prefConfig.bitrate = intent.getIntExtra(INTENT_LAST_SETTINGS_BITRATE, prefConfig.bitrate);
484488
prefConfig.resolutionScale = intent.getIntExtra(INTENT_LAST_SETTINGS_RESOLUTION_SCALE, prefConfig.resolutionScale);
485489
prefConfig.enableHdr = intent.getBooleanExtra(INTENT_LAST_SETTINGS_ENABLE_HDR, prefConfig.enableHdr);
490+
prefConfig.enableHdrHighBrightness = intent.getBooleanExtra(INTENT_LAST_SETTINGS_ENABLE_HDR_HIGH_BRIGHTNESS, prefConfig.enableHdrHighBrightness);
486491
prefConfig.enableMic = intent.getBooleanExtra(INTENT_LAST_SETTINGS_ENABLE_MIC, prefConfig.enableMic);
487492
prefConfig.micBitrate = intent.getIntExtra(INTENT_LAST_SETTINGS_MIC_BITRATE, prefConfig.micBitrate);
488493
prefConfig.enableNativeMousePointer = intent.getBooleanExtra(INTENT_LAST_SETTINGS_ENABLE_NATIVE_MOUSE, prefConfig.enableNativeMousePointer);

app/src/main/res/values-zh-rCN/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,8 @@
259259
<string name="summary_video_format">如果您的设备支持较新的编解码器,则可以降低视频带宽要求。如果主机软件或显卡不支持编解码器选择,则可能会忽略编解码器选择。</string>
260260
<string name="title_enable_hdr">启用 HDR </string>
261261
<string name="summary_enable_hdr">当游戏和显卡支持时以HDR模式串流,HDR需要显卡支持 HEVC/AV1 Main 10 编码。⚠注意:串流返回菜单中的HDR开关是切换windows的HDR。</string>
262+
<string name="title_enable_hdr_high_brightness">启用 HDR 串流高亮度</string>
263+
<string name="summary_enable_hdr_high_brightness">启用 HDR 串流时强制使用最高屏幕亮度</string>
262264
<string name="title_enable_perf_overlay">性能监控图层</string>
263265
<string name="summary_enable_perf_overlay">显示实时的串流监控数据,盯帧必备!</string>
264266
<string name="title_perf_overlay_orientation">性能图层方向</string>

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,8 @@
365365
<string name="summary_video_format">Newer codecs can lower video bandwidth requirements if your device supports them. Codec selections may be ignored if not supported by the host software or GPU.</string>
366366
<string name="title_enable_hdr">Enable HDR (Experimental)</string>
367367
<string name="summary_enable_hdr">Stream HDR when the game and PC GPU support it. HDR requires a GPU with HEVC Main 10 encoding support.</string>
368+
<string name="title_enable_hdr_high_brightness">Enable HDR High Brightness</string>
369+
<string name="summary_enable_hdr_high_brightness">Force maximum screen brightness when HDR streaming is enabled</string>
368370
<string name="title_full_range">Force full range video (Experimental)</string>
369371
<string name="summary_full_range">This will cause loss of detail in light and dark areas if your device doesn\'t properly display full range video content.</string>
370372
<string name="title_enable_perf_overlay">Show performance stats while streaming</string>

app/src/main/res/xml/preferences.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,12 @@
560560
android:title="@string/title_enable_hdr"
561561
android:summary="@string/summary_enable_hdr"
562562
android:defaultValue="false" />
563+
<CheckBoxPreference
564+
android:key="checkbox_enable_hdr_high_brightness"
565+
android:dependency="checkbox_enable_hdr"
566+
android:title="@string/title_enable_hdr_high_brightness"
567+
android:summary="@string/summary_enable_hdr_high_brightness"
568+
android:defaultValue="false" />
563569
<CheckBoxPreference
564570
android:key="checkbox_full_range"
565571
android:title="@string/title_full_range"

0 commit comments

Comments
 (0)