From f063cf69bd665ab51933c711748d21268dadd2ca Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sat, 21 Mar 2026 19:48:30 +0100 Subject: [PATCH] fix(YouTube): Advanced video quality menu does not work Co-authored-by: LisoUseInAIKyrios <118716522+lisouseinaikyrios@users.noreply.github.com> --- .../patches/youtube/video/quality/Fingerprints.kt | 5 +++++ .../patches/youtube/video/quality/VideoQualityPatch.kt | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt index 305b5d2e13..7951352312 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt @@ -26,6 +26,11 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef +internal val BytecodePatchContext.newAdvancedQualityMenuStyleFlyoutMethodMatch by composingFirstMethod { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + instructions(45712556L()) +} + internal val BytecodePatchContext.currentVideoFormatToStringMethod by gettingFirstImmutableMethodDeclaratively( "currentVideoFormat=" ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt index 72e94e3a61..c97eb807cf 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt @@ -4,7 +4,9 @@ import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.shared.misc.settings.preference.BasePreference import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting +import app.revanced.patches.youtube.misc.playservice.is_20_40_or_greater import app.revanced.patches.youtube.misc.settings.PreferenceScreen +import app.revanced.util.insertLiteralOverride /** * Video quality settings. Used to organize all speed related settings together. @@ -46,5 +48,13 @@ val videoQualityPatch = bytecodePatch( preferences = settingsMenuVideoQualityGroup, ), ) + + if (is_20_40_or_greater) { + // Flag breaks opening advanced quality menu. + // Alternatively can be fixed by using a delay when simulating the UI click. + newAdvancedQualityMenuStyleFlyoutMethodMatch.let { + it.method.insertLiteralOverride(it[0], false) + } + } } }