diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/fingerprints/VideoCapabilitiesFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/fingerprints/VideoCapabilitiesFingerprint.kt new file mode 100644 index 000000000..b79ba8de4 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/fingerprints/VideoCapabilitiesFingerprint.kt @@ -0,0 +1,15 @@ +package app.revanced.patches.youtube.misc.forcevp9.fingerprints + +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import org.jf.dexlib2.Opcode + +object VideoCapabilitiesFingerprint : MethodFingerprint( + returnType = "V", + opcodes = listOf( + Opcode.IPUT, + Opcode.IPUT, + Opcode.IPUT, + Opcode.IPUT + ), + customFingerprint = { it.name == "" } +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/fingerprints/VideoCapabilitiesParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/fingerprints/VideoCapabilitiesParentFingerprint.kt new file mode 100644 index 000000000..79ae2e36a --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/fingerprints/VideoCapabilitiesParentFingerprint.kt @@ -0,0 +1,8 @@ +package app.revanced.patches.youtube.misc.forcevp9.fingerprints + +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint + +object VideoCapabilitiesParentFingerprint : MethodFingerprint( + returnType = "L", + strings = listOf("minh.", ";maxh.") +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/patch/ForceVP9CodecPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/patch/ForceVP9CodecPatch.kt index 63e18be06..8a1aa9979 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/patch/ForceVP9CodecPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/forcevp9/patch/ForceVP9CodecPatch.kt @@ -35,6 +35,7 @@ import org.jf.dexlib2.iface.instruction.ReferenceInstruction class ForceVP9CodecPatch : BytecodePatch( listOf( LayoutSwitchFingerprint, + VideoCapabilitiesParentFingerprint, Vp9PropsParentFingerprint ) ) { @@ -61,6 +62,26 @@ class ForceVP9CodecPatch : BytecodePatch( } ?: return Vp9PropsFingerprint.toErrorResult() } ?: return Vp9PropsParentFingerprint.toErrorResult() + VideoCapabilitiesParentFingerprint.result?.let { parentResult -> + VideoCapabilitiesFingerprint.also { it.resolve(context, parentResult.classDef) }.result?.let { + with (it.mutableMethod) { + val insertIndex = it.scanResult.patternScanResult!!.startIndex + addInstructions( + insertIndex, """ + invoke-static {p1}, $INTEGRATIONS_CLASS_DESCRIPTOR->overrideMinHeight(I)I + move-result p1 + invoke-static {p2}, $INTEGRATIONS_CLASS_DESCRIPTOR->overrideMaxHeight(I)I + move-result p2 + invoke-static {p3}, $INTEGRATIONS_CLASS_DESCRIPTOR->overrideMinWidth(I)I + move-result p3 + invoke-static {p4}, $INTEGRATIONS_CLASS_DESCRIPTOR->overrideMaxWidth(I)I + move-result p4 + """ + ) + } + } ?: return VideoCapabilitiesFingerprint.toErrorResult() + } ?: return VideoCapabilitiesParentFingerprint.toErrorResult() + /* * Add settings */