Skip to content

Commit

Permalink
fix(YouTube/Disable force auto captions): patch doesn't work with Sho…
Browse files Browse the repository at this point in the history
  • Loading branch information
inotia00 committed Sep 5, 2024
1 parent 03dd80a commit 9d5998b
Show file tree
Hide file tree
Showing 11 changed files with 81 additions and 122 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,22 +1,38 @@
package app.revanced.patches.music.general.autocaptions

import app.revanced.patcher.data.ResourceContext
import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patches.music.utils.compatibility.Constants.COMPATIBLE_PACKAGE
import app.revanced.patches.music.utils.integrations.Constants.GENERAL_CLASS_DESCRIPTOR
import app.revanced.patches.music.utils.settings.CategoryType
import app.revanced.patches.music.utils.settings.SettingsPatch
import app.revanced.util.patch.BaseResourcePatch
import app.revanced.patches.shared.fingerprints.SubtitleTrackFingerprint
import app.revanced.util.patch.BaseBytecodePatch
import app.revanced.util.resultOrThrow
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction

@Suppress("unused")
object AutoCaptionsPatch : BaseResourcePatch(
object AutoCaptionsPatch : BaseBytecodePatch(
name = "Disable auto captions",
description = "Adds an option to disable captions from being automatically enabled.",
dependencies = setOf(
AutoCaptionsBytecodePatch::class,
SettingsPatch::class,
),
compatiblePackages = COMPATIBLE_PACKAGE
dependencies = setOf(SettingsPatch::class),
compatiblePackages = COMPATIBLE_PACKAGE,
fingerprints = setOf(SubtitleTrackFingerprint),
) {
override fun execute(context: ResourceContext) {
override fun execute(context: BytecodeContext) {

SubtitleTrackFingerprint.resultOrThrow().mutableMethod.apply {
val index = implementation!!.instructions.lastIndex
val register = getInstruction<OneRegisterInstruction>(index).registerA

addInstructions(
index, """
invoke-static {v$register}, $GENERAL_CLASS_DESCRIPTOR->disableAutoCaptions(Z)Z
move-result v$register
"""
)
}

SettingsPatch.addSwitchPreference(
CategoryType.GENERAL,
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.patches.shared.captions.fingerprints
package app.revanced.patches.shared.fingerprints

import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,24 +1,57 @@
package app.revanced.patches.youtube.general.autocaptions

import app.revanced.patcher.data.BytecodeContext
import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.shared.fingerprints.SubtitleTrackFingerprint
import app.revanced.patches.youtube.general.autocaptions.fingerprints.StoryboardRendererDecoderRecommendedLevelFingerprint
import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE
import app.revanced.patches.youtube.utils.playertype.PlayerTypeHookPatch
import app.revanced.patches.youtube.utils.fingerprints.StartVideoInformerFingerprint
import app.revanced.patches.youtube.utils.integrations.Constants.GENERAL_CLASS_DESCRIPTOR
import app.revanced.patches.youtube.utils.settings.SettingsPatch
import app.revanced.util.patch.BaseBytecodePatch
import app.revanced.util.resultOrThrow

@Suppress("unused")
object AutoCaptionsPatch : BaseBytecodePatch(
name = "Disable auto captions",
description = "Adds an option to disable captions from being automatically enabled.",
dependencies = setOf(
AutoCaptionsBytecodePatch::class,
PlayerTypeHookPatch::class,
SettingsPatch::class
),
compatiblePackages = COMPATIBLE_PACKAGE
dependencies = setOf(SettingsPatch::class),
compatiblePackages = COMPATIBLE_PACKAGE,
fingerprints = setOf(
SubtitleTrackFingerprint,
StartVideoInformerFingerprint,
StoryboardRendererDecoderRecommendedLevelFingerprint,
)
) {
override fun execute(context: BytecodeContext) {

SubtitleTrackFingerprint.resultOrThrow().mutableMethod.apply {
addInstructionsWithLabels(
0, """
invoke-static {}, $GENERAL_CLASS_DESCRIPTOR->disableAutoCaptions()Z
move-result v0
if-eqz v0, :disabled
const/4 v0, 0x1
return v0
""", ExternalLabel("disabled", getInstruction(0))
)
}

mapOf(
StartVideoInformerFingerprint to 0,
StoryboardRendererDecoderRecommendedLevelFingerprint to 1
).forEach { (fingerprint, enabled) ->
fingerprint.resultOrThrow().mutableMethod.addInstructions(
0, """
const/4 v0, 0x$enabled
invoke-static {v0}, $GENERAL_CLASS_DESCRIPTOR->setCaptionsButtonStatus(Z)V
"""
)
}

/**
* Add settings
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package app.revanced.patches.youtube.general.autocaptions.fingerprints

import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags

internal object StoryboardRendererDecoderRecommendedLevelFingerprint : MethodFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("Lcom/google/android/libraries/youtube/innertube/model/player/PlayerResponseModel;"),
strings = listOf("#-1#")
)
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patcher.util.smali.ExternalLabel
import app.revanced.patches.shared.fingerprints.StartVideoInformerFingerprint
import app.revanced.patches.shared.litho.LithoFilterPatch
import app.revanced.patches.youtube.player.components.fingerprints.CrowdfundingBoxFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.EngagementPanelControllerFingerprint
Expand All @@ -34,6 +33,7 @@ import app.revanced.patches.youtube.player.components.fingerprints.WatermarkPare
import app.revanced.patches.youtube.player.speedoverlay.SpeedOverlayPatch
import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE
import app.revanced.patches.youtube.utils.controlsoverlay.ControlsOverlayConfigPatch
import app.revanced.patches.youtube.utils.fingerprints.StartVideoInformerFingerprint
import app.revanced.patches.youtube.utils.fingerprints.YouTubeControlsOverlayFingerprint
import app.revanced.patches.youtube.utils.fix.suggestedvideoendscreen.SuggestedVideoEndScreenPatch
import app.revanced.patches.youtube.utils.integrations.Constants.COMPONENTS_PATH
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package app.revanced.patches.shared.fingerprints
package app.revanced.patches.youtube.utils.fingerprints

import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
Expand Down
4 changes: 1 addition & 3 deletions src/main/resources/youtube/settings/host/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,7 @@ Limitations:
<string name="revanced_change_start_page_entry_watch_later">Watch later</string>
<string name="revanced_change_start_page_invalid_toast">Invalid start page, resetting to default.</string>
<string name="revanced_disable_auto_audio_tracks_title">Disable forced auto audio tracks</string>
<string name="revanced_disable_auto_audio_tracks_summary_on">"Forced auto audio tracks are disabled.

Limitation: This setting does not apply to Shorts."</string>
<string name="revanced_disable_auto_audio_tracks_summary_on">Forced auto audio tracks are disabled.</string>
<string name="revanced_disable_auto_audio_tracks_summary_off">Forced auto audio tracks are enabled.</string>
<string name="revanced_disable_auto_captions_title">Disable forced auto captions</string>
<string name="revanced_disable_auto_captions_summary_on">Forced auto captions are disabled.</string>
Expand Down

0 comments on commit 9d5998b

Please sign in to comment.