From 77c4df2a57f995c7744193c99d0b64d073339612 Mon Sep 17 00:00:00 2001 From: inotia00 Date: Mon, 25 Sep 2023 11:32:20 +0900 Subject: [PATCH] fix(youtube/append-time-stamps-information): when the video quality is set to `Auto`, the quality is not displayed properly --- .../music/video/quality/patch/VideoQualityPatch.kt | 3 ++- .../patch/OverrideQualityHookPatch.kt | 14 +++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/music/video/quality/patch/VideoQualityPatch.kt b/src/main/kotlin/app/revanced/patches/music/video/quality/patch/VideoQualityPatch.kt index 62d13b684..8ce96ab31 100644 --- a/src/main/kotlin/app/revanced/patches/music/video/quality/patch/VideoQualityPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/video/quality/patch/VideoQualityPatch.kt @@ -45,7 +45,8 @@ class VideoQualityPatch : BytecodePatch( )!! .mutableClass - val onItemClickMethod = qualityChangedClass.methods.find { method -> method.name == "onItemClick" } + val onItemClickMethod = + qualityChangedClass.methods.find { method -> method.name == "onItemClick" } onItemClickMethod?.apply { val listItemIndexParameter = 3 diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/overridequality/patch/OverrideQualityHookPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/overridequality/patch/OverrideQualityHookPatch.kt index b64f17ad2..db78dc1b7 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/overridequality/patch/OverrideQualityHookPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/overridequality/patch/OverrideQualityHookPatch.kt @@ -10,14 +10,17 @@ import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.util.proxy.mutableTypes.MutableField.Companion.toMutable -import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch import app.revanced.patches.youtube.utils.overridequality.fingerprints.VideoQualityListFingerprint import app.revanced.patches.youtube.utils.overridequality.fingerprints.VideoQualityPatchFingerprint import app.revanced.patches.youtube.utils.overridequality.fingerprints.VideoQualityTextFingerprint +import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch +import app.revanced.patches.youtube.utils.resourceid.patch.SharedResourceIdPatch.Companion.QualityAuto +import app.revanced.util.bytecode.getWideLiteralIndex import app.revanced.util.integrations.Constants.INTEGRATIONS_PATH import app.revanced.util.integrations.Constants.VIDEO_PATH import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction import com.android.tools.smali.dexlib2.immutable.ImmutableField import com.android.tools.smali.dexlib2.util.MethodUtil @@ -53,10 +56,19 @@ class OverrideQualityHookPatch : BytecodePatch( val listIndex = it.scanResult.patternScanResult!!.startIndex val listRegister = getInstruction(listIndex).registerD + val qualityAutoIndex = getWideLiteralIndex(QualityAuto) + 2 + val qualityAutoRegister = + getInstruction(qualityAutoIndex).registerA + addInstruction( listIndex, "invoke-static {v$listRegister}, $INTEGRATIONS_VIDEO_QUALITY_CLASS_DESCRIPTOR->setVideoQualityList([Ljava/lang/Object;)V" ) + + addInstruction( + qualityAutoIndex + 1, + "sput-object v$qualityAutoRegister, $INTEGRATIONS_VIDEO_HELPER_CLASS_DESCRIPTOR->qualityAutoString:Ljava/lang/String;" + ) } } ?: throw VideoQualityListFingerprint.exception