From 31754311870324b1e245b12965d7486878e9eba4 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Fri, 14 Jul 2023 12:35:49 +0400 Subject: [PATCH] fix(youtube/sponsorblock): fix some segments skipping slightly too late (#2634) --- .../fingerprints/VideoTimeFingerprint.kt | 8 ----- .../patch/VideoInformationPatch.kt | 29 +------------------ 2 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/VideoTimeFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/VideoTimeFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/VideoTimeFingerprint.kt deleted file mode 100644 index c09c69ab..00000000 --- a/src/main/kotlin/app/revanced/patches/youtube/video/information/fingerprints/VideoTimeFingerprint.kt +++ /dev/null @@ -1,8 +0,0 @@ -package app.revanced.patches.youtube.video.information.fingerprints - - -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint - -object VideoTimeFingerprint : MethodFingerprint( - strings = listOf("MedialibPlayerTimeInfo{currentPositionMillis=") -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/video/information/patch/VideoInformationPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/video/information/patch/VideoInformationPatch.kt index 6d815797..fad68dea 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/video/information/patch/VideoInformationPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/video/information/patch/VideoInformationPatch.kt @@ -10,7 +10,6 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.addInstructions import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint.Companion.resolve import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchResult @@ -44,7 +43,6 @@ class VideoInformationPatch : BytecodePatch( PlayerInitFingerprint, CreateVideoPlayerSeekbarFingerprint, PlayerControllerSetTimeReferenceFingerprint, - VideoTimeFingerprint, OnPlaybackSpeedItemClickFingerprint, ) ) { @@ -118,18 +116,10 @@ class VideoInformationPatch : BytecodePatch( .getMethod() as MutableMethod } - /* - * Set the high precision video time method - */ - highPrecisionTimeMethod = - (object : MethodFingerprint("V", null, listOf("J", "J", "J", "J", "I", "L"), null) {}).also { - it.resolve(context, VideoTimeFingerprint.result!!.classDef) - }.result!!.mutableMethod - /* * Hook the methods which set the time */ - highPrecisionTimeHook(INTEGRATIONS_CLASS_DESCRIPTOR, "setVideoTimeHighPrecision") + videoTimeHook(INTEGRATIONS_CLASS_DESCRIPTOR, "setVideoTime") /* @@ -164,9 +154,6 @@ class VideoInformationPatch : BytecodePatch( private lateinit var timeMethod: MutableMethod private var timeInitInsertIndex = 2 - private lateinit var highPrecisionTimeMethod: MutableMethod - private var highPrecisionInsertIndex = 0 - private fun MutableMethod.insert(insertIndex: Int, register: String, descriptor: String) = addInstruction(insertIndex, "invoke-static { $register }, $descriptor") @@ -202,20 +189,6 @@ class VideoInformationPatch : BytecodePatch( "$targetMethodClass->$targetMethodName(J)V" ) - /** - * Hook the high precision video time. - * The hooks is called extremely often (10 to 15 times a seconds), so use with caution. - * Note: the hook is usually called _off_ the main thread - * - * @param targetMethodClass The descriptor for the static method to invoke when the player controller is created. - * @param targetMethodName The name of the static method to invoke when the player controller is created. - */ - internal fun highPrecisionTimeHook(targetMethodClass: String, targetMethodName: String) = - highPrecisionTimeMethod.insertTimeHook( - highPrecisionInsertIndex++, - "$targetMethodClass->$targetMethodName(J)V" - ) - private fun getReference(instructions: List, offset: Int, opcode: Opcode) = (instructions[instructions.indexOfFirst { it.opcode == opcode } + offset] as ReferenceInstruction) .reference.toString()