rollback(YouTube/VideoInformation): changes the video time to be invoked every 1000ms instead of 100ms

This commit is contained in:
inotia00 2024-05-08 22:35:46 +09:00
parent 01795e0fb4
commit 1a0d125734
3 changed files with 23 additions and 24 deletions

View File

@ -22,13 +22,13 @@ import app.revanced.patches.youtube.video.information.fingerprints.ChannelNameFi
import app.revanced.patches.youtube.video.information.fingerprints.OnPlaybackSpeedItemClickFingerprint import app.revanced.patches.youtube.video.information.fingerprints.OnPlaybackSpeedItemClickFingerprint
import app.revanced.patches.youtube.video.information.fingerprints.PlaybackInitializationFingerprint import app.revanced.patches.youtube.video.information.fingerprints.PlaybackInitializationFingerprint
import app.revanced.patches.youtube.video.information.fingerprints.PlaybackSpeedClassFingerprint import app.revanced.patches.youtube.video.information.fingerprints.PlaybackSpeedClassFingerprint
import app.revanced.patches.youtube.video.information.fingerprints.PlayerControllerSetTimeReferenceFingerprint
import app.revanced.patches.youtube.video.information.fingerprints.VideoIdFingerprint import app.revanced.patches.youtube.video.information.fingerprints.VideoIdFingerprint
import app.revanced.patches.youtube.video.information.fingerprints.VideoIdFingerprintBackgroundPlay import app.revanced.patches.youtube.video.information.fingerprints.VideoIdFingerprintBackgroundPlay
import app.revanced.patches.youtube.video.information.fingerprints.VideoIdFingerprintShorts import app.revanced.patches.youtube.video.information.fingerprints.VideoIdFingerprintShorts
import app.revanced.patches.youtube.video.information.fingerprints.VideoLengthFingerprint import app.revanced.patches.youtube.video.information.fingerprints.VideoLengthFingerprint
import app.revanced.patches.youtube.video.information.fingerprints.VideoQualityListFingerprint import app.revanced.patches.youtube.video.information.fingerprints.VideoQualityListFingerprint
import app.revanced.patches.youtube.video.information.fingerprints.VideoQualityTextFingerprint import app.revanced.patches.youtube.video.information.fingerprints.VideoQualityTextFingerprint
import app.revanced.patches.youtube.video.information.fingerprints.VideoTimeFingerprint
import app.revanced.patches.youtube.video.information.fingerprints.VideoTitleFingerprint import app.revanced.patches.youtube.video.information.fingerprints.VideoTitleFingerprint
import app.revanced.patches.youtube.video.playerresponse.PlayerResponseMethodHookPatch import app.revanced.patches.youtube.video.playerresponse.PlayerResponseMethodHookPatch
import app.revanced.patches.youtube.video.videoid.VideoIdPatch import app.revanced.patches.youtube.video.videoid.VideoIdPatch
@ -68,6 +68,7 @@ object VideoInformationPatch : BytecodePatch(
OrganicPlaybackContextModelFingerprint, OrganicPlaybackContextModelFingerprint,
PlaybackInitializationFingerprint, PlaybackInitializationFingerprint,
PlaybackSpeedClassFingerprint, PlaybackSpeedClassFingerprint,
PlayerControllerSetTimeReferenceFingerprint,
VideoEndFingerprint, VideoEndFingerprint,
VideoIdFingerprint, VideoIdFingerprint,
VideoIdFingerprintBackgroundPlay, VideoIdFingerprintBackgroundPlay,
@ -109,6 +110,9 @@ object VideoInformationPatch : BytecodePatch(
private lateinit var playerConstructorMethod: MutableMethod private lateinit var playerConstructorMethod: MutableMethod
private var playerConstructorInsertIndex = 4 private var playerConstructorInsertIndex = 4
private lateinit var videoTimeConstructorMethod: MutableMethod
private var videoTimeConstructorInsertIndex = 2
private lateinit var videoTimeMethod: MutableMethod private lateinit var videoTimeMethod: MutableMethod
private var videoTimeIndex = 1 private var videoTimeIndex = 1
@ -121,9 +125,6 @@ object VideoInformationPatch : BytecodePatch(
VideoEndFingerprint.resultOrThrow().let { VideoEndFingerprint.resultOrThrow().let {
// resolve video time fingerprint
VideoTimeFingerprint.resolve(context, it.classDef)
playerConstructorMethod = playerConstructorMethod =
it.mutableClass.methods.first { method -> MethodUtil.isConstructor(method) } it.mutableClass.methods.first { method -> MethodUtil.isConstructor(method) }
@ -251,12 +252,9 @@ object VideoInformationPatch : BytecodePatch(
/** /**
* Set current video time method * Set current video time method
*/ */
VideoTimeFingerprint.resultOrThrow().mutableMethod.apply { PlayerControllerSetTimeReferenceFingerprint.resultOrThrow().let {
videoTimeMethod = this videoTimeConstructorMethod =
addInstruction( it.getWalkerMethod(context, it.scanResult.patternScanResult!!.startIndex)
0,
"move-wide/from16 v0, p5"
)
} }
/** /**
@ -446,9 +444,9 @@ object VideoInformationPatch : BytecodePatch(
* @param targetMethodName The name of 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 videoTimeHook(targetMethodClass: String, targetMethodName: String) = internal fun videoTimeHook(targetMethodClass: String, targetMethodName: String) =
videoTimeMethod.addInstruction( videoTimeConstructorMethod.addInstruction(
videoTimeIndex++, videoTimeConstructorInsertIndex++,
"invoke-static { v0, v1 }, $targetMethodClass->$targetMethodName(J)V" "invoke-static { p1, p2 }, $targetMethodClass->$targetMethodName(J)V"
) )
private fun MethodFingerprint.getMethodName(returnType : String) :String { private fun MethodFingerprint.getMethodName(returnType : String) :String {

View File

@ -0,0 +1,12 @@
package app.revanced.patches.youtube.video.information.fingerprints
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.Opcode
object PlayerControllerSetTimeReferenceFingerprint : MethodFingerprint(
opcodes = listOf(
Opcode.INVOKE_DIRECT_RANGE,
Opcode.IGET_OBJECT
),
strings = listOf("Media progress reported outside media playback: ")
)

View File

@ -1,11 +0,0 @@
package app.revanced.patches.youtube.video.information.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object VideoTimeFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("L", "I", "J", "J", "J", "J")
)