diff --git a/extensions/shared/src/main/java/app/revanced/extension/shared/patches/spoof/SpoofStreamingDataPatch.java b/extensions/shared/src/main/java/app/revanced/extension/shared/patches/spoof/SpoofStreamingDataPatch.java index 299ff96d9..ef9d62ae7 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/shared/patches/spoof/SpoofStreamingDataPatch.java +++ b/extensions/shared/src/main/java/app/revanced/extension/shared/patches/spoof/SpoofStreamingDataPatch.java @@ -23,6 +23,8 @@ public class SpoofStreamingDataPatch extends BlockRequestPatch { BaseSettings.SPOOF_STREAMING_DATA_PO_TOKEN.get(); private static final String VISITOR_DATA = BaseSettings.SPOOF_STREAMING_DATA_VISITOR_DATA.get(); + private static final boolean SPOOF_STREAMING_DATA_SKIP_RESPONSE_ENCRYPTION = + SPOOF_STREAMING_DATA && BaseSettings.SPOOF_STREAMING_DATA_SKIP_RESPONSE_ENCRYPTION.get(); /** * Any unreachable ip address. Used to intentionally fail requests. @@ -67,11 +69,11 @@ public class SpoofStreamingDataPatch extends BlockRequestPatch { * Skip response encryption in OnesiePlayerRequest. */ public static boolean skipResponseEncryption(boolean original) { - if (!SPOOF_STREAMING_DATA) { - return original; + if (SPOOF_STREAMING_DATA_SKIP_RESPONSE_ENCRYPTION) { + return false; } - return false; + return original; } /** diff --git a/extensions/shared/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java b/extensions/shared/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java index 50f6058a0..004766e99 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java +++ b/extensions/shared/src/main/java/app/revanced/extension/shared/settings/BaseSettings.java @@ -41,6 +41,7 @@ public class BaseSettings { public static final EnumSetting SPOOF_STREAMING_DATA_LANGUAGE = new EnumSetting<>("revanced_spoof_streaming_data_language", AppLanguage.DEFAULT, new AudioStreamLanguageOverrideAvailability()); public static final BooleanSetting SPOOF_STREAMING_DATA_IOS_FORCE_AVC = new BooleanSetting("revanced_spoof_streaming_data_ios_force_avc", FALSE, true, "revanced_spoof_streaming_data_ios_force_avc_user_dialog_message"); + public static final BooleanSetting SPOOF_STREAMING_DATA_SKIP_RESPONSE_ENCRYPTION = new BooleanSetting("revanced_spoof_streaming_data_skip_response_encryption", TRUE, true); public static final BooleanSetting SPOOF_STREAMING_DATA_STATS_FOR_NERDS = new BooleanSetting("revanced_spoof_streaming_data_stats_for_nerds", TRUE); // Client type must be last spoof setting due to cyclic references. public static final EnumSetting SPOOF_STREAMING_DATA_TYPE = new EnumSetting<>("revanced_spoof_streaming_data_type", YouTubeAppClient.ClientType.ANDROID_UNPLUGGED, true); diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt index 4c5579b1f..3b573061f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/utils/fix/streamingdata/SpoofStreamingDataPatch.kt @@ -61,6 +61,10 @@ val spoofStreamingDataPatch = bytecodePatch( execute { + var settingArray = arrayOf( + "SETTINGS: SPOOF_STREAMING_DATA" + ) + // region Get replacement streams at player requests. hookBuildRequest("$EXTENSION_CLASS_DESCRIPTOR->fetchStreams(Ljava/lang/String;Ljava/util/Map;)V") @@ -327,6 +331,8 @@ val spoofStreamingDataPatch = bytecodePatch( ONESIE_ENCRYPTION_FEATURE_FLAG, "$EXTENSION_CLASS_DESCRIPTOR->skipResponseEncryption(Z)Z" ) + + settingArray += "SETTINGS: SKIP_RESPONSE_ENCRYPTION" } // endregion @@ -339,9 +345,7 @@ val spoofStreamingDataPatch = bytecodePatch( ) addPreference( - arrayOf( - "SETTINGS: SPOOF_STREAMING_DATA" - ), + settingArray, SPOOF_STREAMING_DATA ) } diff --git a/patches/src/main/resources/youtube/settings/host/values/strings.xml b/patches/src/main/resources/youtube/settings/host/values/strings.xml index dae622313..e239b6781 100644 --- a/patches/src/main/resources/youtube/settings/host/values/strings.xml +++ b/patches/src/main/resources/youtube/settings/host/values/strings.xml @@ -2066,6 +2066,14 @@ Tap the continue button and allow optimization changes." "Enabling this might improve battery life and fix playback stuttering. AVC has a maximum resolution of 1080p, Opus audio codec is not available, and video playback will use more internet data than VP9 or AV1." + Skip Onesie response encryption + "Skip Onesie response encryption. + +• Fixes a new type of playback issue that some users are experiencing. +• AV1 codec may not be available." + "Do not skip Onesie response encryption. + +• Some users may experience a new type of playback issue." Show in Stats for nerds Client used to fetch streaming data is shown in Stats for nerds. Client used to fetch streaming data is hidden in Stats for nerds. diff --git a/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml index c73dcf55a..be91eb852 100644 --- a/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -831,7 +831,12 @@ - + SETTINGS: SPOOF_STREAMING_DATA --> + + + +