diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt index edff0729d..a0938b717 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/player/components/PlayerComponentsPatch.kt @@ -23,6 +23,7 @@ import app.revanced.patches.youtube.player.components.fingerprints.LayoutVideoFi import app.revanced.patches.youtube.player.components.fingerprints.RestoreSlideToSeekBehaviorFingerprint import app.revanced.patches.youtube.player.components.fingerprints.SeekEduContainerFingerprint import app.revanced.patches.youtube.player.components.fingerprints.SpeedOverlayFingerprint +import app.revanced.patches.youtube.player.components.fingerprints.SpeedOverlayValueFingerprint import app.revanced.patches.youtube.player.components.fingerprints.SuggestedActionsFingerprint import app.revanced.patches.youtube.player.components.fingerprints.TouchAreaOnClickListenerFingerprint import app.revanced.patches.youtube.player.components.fingerprints.WatermarkFingerprint @@ -77,6 +78,7 @@ object PlayerComponentsPatch : BaseBytecodePatch( RestoreSlideToSeekBehaviorFingerprint, SeekEduContainerFingerprint, SpeedOverlayFingerprint, + SpeedOverlayValueFingerprint, SuggestedActionsFingerprint, TouchAreaOnClickListenerFingerprint, WatermarkParentFingerprint, @@ -129,7 +131,7 @@ object PlayerComponentsPatch : BaseBytecodePatch( // endregion - // region patch for disable speed overlay + // region patch for disable speed overlay and speed overlay value mapOf( RestoreSlideToSeekBehaviorFingerprint to 45411329, @@ -141,6 +143,20 @@ object PlayerComponentsPatch : BaseBytecodePatch( ) } + SpeedOverlayValueFingerprint.resultOrThrow().let { + it.mutableMethod.apply { + val index = it.scanResult.patternScanResult!!.startIndex + val register = getInstruction(index).registerA + + addInstructions( + index + 1, """ + invoke-static {v$register}, $PLAYER_CLASS_DESCRIPTOR->speedOverlayValue(F)F + move-result v$register + """ + ) + } + } + // endregion // region patch for hide channel watermark diff --git a/src/main/kotlin/app/revanced/patches/youtube/player/components/fingerprints/SpeedOverlayValueFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/player/components/fingerprints/SpeedOverlayValueFingerprint.kt new file mode 100644 index 000000000..9be6d0bee --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/player/components/fingerprints/SpeedOverlayValueFingerprint.kt @@ -0,0 +1,16 @@ +package app.revanced.patches.youtube.player.components.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.util.fingerprint.LiteralValueFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +/** + * This value is the key for the playback speed overlay value. + */ +internal object SpeedOverlayValueFingerprint : LiteralValueFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, + opcodes = listOf(Opcode.DOUBLE_TO_FLOAT), + literalSupplier = { 45411328 } +) \ No newline at end of file diff --git a/src/main/resources/youtube/settings/host/values/strings.xml b/src/main/resources/youtube/settings/host/values/strings.xml index d40e9cb86..66d0d2633 100644 --- a/src/main/resources/youtube/settings/host/values/strings.xml +++ b/src/main/resources/youtube/settings/host/values/strings.xml @@ -449,7 +449,12 @@ Tap and hold to open RVX Settings." Disable speed overlay "Disable 'Playing at 2x speed' while holding down. -Note: Disabling the speed overlay restores the 'Slide to seek' behavior of the old layout." +Note: +• Disabling the speed overlay restores the 'Slide to seek' behavior of the old layout. +• This setting does not force the speed overlay to be enabled." + Speed overlay value + Speed overlay value between 0-8.0. + Speed overlay value must be between 0-8.0. Reset to default values. Hide channel watermark Channel watermark is hidden. Channel watermark is shown. diff --git a/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/src/main/resources/youtube/settings/xml/revanced_prefs.xml index b8732ff0f..836d09f82 100644 --- a/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -379,6 +379,7 @@ +