feat(YouTube/Player components): add Speed overlay value settings

This commit is contained in:
inotia00 2024-05-02 03:49:49 +09:00
parent 15512e46c1
commit f49fc6affa
4 changed files with 40 additions and 2 deletions

View File

@ -23,6 +23,7 @@ import app.revanced.patches.youtube.player.components.fingerprints.LayoutVideoFi
import app.revanced.patches.youtube.player.components.fingerprints.RestoreSlideToSeekBehaviorFingerprint import app.revanced.patches.youtube.player.components.fingerprints.RestoreSlideToSeekBehaviorFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.SeekEduContainerFingerprint import app.revanced.patches.youtube.player.components.fingerprints.SeekEduContainerFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.SpeedOverlayFingerprint import app.revanced.patches.youtube.player.components.fingerprints.SpeedOverlayFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.SpeedOverlayValueFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.SuggestedActionsFingerprint import app.revanced.patches.youtube.player.components.fingerprints.SuggestedActionsFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.TouchAreaOnClickListenerFingerprint import app.revanced.patches.youtube.player.components.fingerprints.TouchAreaOnClickListenerFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.WatermarkFingerprint import app.revanced.patches.youtube.player.components.fingerprints.WatermarkFingerprint
@ -77,6 +78,7 @@ object PlayerComponentsPatch : BaseBytecodePatch(
RestoreSlideToSeekBehaviorFingerprint, RestoreSlideToSeekBehaviorFingerprint,
SeekEduContainerFingerprint, SeekEduContainerFingerprint,
SpeedOverlayFingerprint, SpeedOverlayFingerprint,
SpeedOverlayValueFingerprint,
SuggestedActionsFingerprint, SuggestedActionsFingerprint,
TouchAreaOnClickListenerFingerprint, TouchAreaOnClickListenerFingerprint,
WatermarkParentFingerprint, WatermarkParentFingerprint,
@ -129,7 +131,7 @@ object PlayerComponentsPatch : BaseBytecodePatch(
// endregion // endregion
// region patch for disable speed overlay // region patch for disable speed overlay and speed overlay value
mapOf( mapOf(
RestoreSlideToSeekBehaviorFingerprint to 45411329, RestoreSlideToSeekBehaviorFingerprint to 45411329,
@ -141,6 +143,20 @@ object PlayerComponentsPatch : BaseBytecodePatch(
) )
} }
SpeedOverlayValueFingerprint.resultOrThrow().let {
it.mutableMethod.apply {
val index = it.scanResult.patternScanResult!!.startIndex
val register = getInstruction<TwoRegisterInstruction>(index).registerA
addInstructions(
index + 1, """
invoke-static {v$register}, $PLAYER_CLASS_DESCRIPTOR->speedOverlayValue(F)F
move-result v$register
"""
)
}
}
// endregion // endregion
// region patch for hide channel watermark // region patch for hide channel watermark

View File

@ -0,0 +1,16 @@
package app.revanced.patches.youtube.player.components.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.util.fingerprint.LiteralValueFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode
/**
* This value is the key for the playback speed overlay value.
*/
internal object SpeedOverlayValueFingerprint : LiteralValueFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,
opcodes = listOf(Opcode.DOUBLE_TO_FLOAT),
literalSupplier = { 45411328 }
)

View File

@ -449,7 +449,12 @@ Tap and hold to open RVX Settings."</string>
<string name="revanced_disable_speed_overlay_title">Disable speed overlay</string> <string name="revanced_disable_speed_overlay_title">Disable speed overlay</string>
<string name="revanced_disable_speed_overlay_summary">"Disable 'Playing at 2x speed' while holding down. <string name="revanced_disable_speed_overlay_summary">"Disable 'Playing at 2x speed' while holding down.
Note: Disabling the speed overlay restores the 'Slide to seek' behavior of the old layout."</string> Note:
• Disabling the speed overlay restores the 'Slide to seek' behavior of the old layout.
• This setting does not force the speed overlay to be enabled."</string>
<string name="revanced_speed_overlay_value_title">Speed overlay value</string>
<string name="revanced_speed_overlay_value_summary">Speed overlay value between 0-8.0.</string>
<string name="revanced_speed_overlay_value_warning">Speed overlay value must be between 0-8.0. Reset to default values.</string>
<string name="revanced_hide_channel_watermark_title">Hide channel watermark</string> <string name="revanced_hide_channel_watermark_title">Hide channel watermark</string>
<string name="revanced_hide_channel_watermark_summary_on">Channel watermark is hidden.</string> <string name="revanced_hide_channel_watermark_summary_on">Channel watermark is hidden.</string>
<string name="revanced_hide_channel_watermark_summary_off">Channel watermark is shown.</string> <string name="revanced_hide_channel_watermark_summary_off">Channel watermark is shown.</string>

View File

@ -379,6 +379,7 @@
<app.revanced.integrations.shared.settings.preference.ResettableEditTextPreference android:hint="100" android:defaultValue="100" android:title="@string/revanced_custom_player_overlay_opacity_title" android:key="revanced_custom_player_overlay_opacity" android:summary="@string/revanced_custom_player_overlay_opacity_summary" android:inputType="number" /> <app.revanced.integrations.shared.settings.preference.ResettableEditTextPreference android:hint="100" android:defaultValue="100" android:title="@string/revanced_custom_player_overlay_opacity_title" android:key="revanced_custom_player_overlay_opacity" android:summary="@string/revanced_custom_player_overlay_opacity_summary" android:inputType="number" />
<SwitchPreference android:title="@string/revanced_disable_auto_player_popup_panels_title" android:key="revanced_disable_auto_player_popup_panels" android:defaultValue="true" android:summaryOn="@string/revanced_disable_auto_player_popup_panels_summary_on" android:summaryOff="@string/revanced_disable_auto_player_popup_panels_summary_off" /> <SwitchPreference android:title="@string/revanced_disable_auto_player_popup_panels_title" android:key="revanced_disable_auto_player_popup_panels" android:defaultValue="true" android:summaryOn="@string/revanced_disable_auto_player_popup_panels_summary_on" android:summaryOff="@string/revanced_disable_auto_player_popup_panels_summary_off" />
<SwitchPreference android:title="@string/revanced_disable_speed_overlay_title" android:key="revanced_disable_speed_overlay" android:defaultValue="false" android:summary="@string/revanced_disable_speed_overlay_summary" /> <SwitchPreference android:title="@string/revanced_disable_speed_overlay_title" android:key="revanced_disable_speed_overlay" android:defaultValue="false" android:summary="@string/revanced_disable_speed_overlay_summary" />
<app.revanced.integrations.shared.settings.preference.ResettableEditTextPreference android:hint="2.0" android:defaultValue="2.0" android:title="@string/revanced_speed_overlay_value_title" android:key="revanced_speed_overlay_value" android:summary="@string/revanced_speed_overlay_value_summary" android:inputType="numberDecimal" />
<SwitchPreference android:title="@string/revanced_hide_channel_watermark_title" android:key="revanced_hide_channel_watermark" android:defaultValue="true" android:summaryOn="@string/revanced_hide_channel_watermark_summary_on" android:summaryOff="@string/revanced_hide_channel_watermark_summary_off" /> <SwitchPreference android:title="@string/revanced_hide_channel_watermark_title" android:key="revanced_hide_channel_watermark" android:defaultValue="true" android:summaryOn="@string/revanced_hide_channel_watermark_summary_on" android:summaryOff="@string/revanced_hide_channel_watermark_summary_off" />
<SwitchPreference android:title="@string/revanced_hide_crowdfunding_box_title" android:key="revanced_hide_crowdfunding_box" android:defaultValue="true" android:summaryOn="@string/revanced_hide_crowdfunding_box_summary_on" android:summaryOff="@string/revanced_hide_crowdfunding_box_summary_off" /> <SwitchPreference android:title="@string/revanced_hide_crowdfunding_box_title" android:key="revanced_hide_crowdfunding_box" android:defaultValue="true" android:summaryOn="@string/revanced_hide_crowdfunding_box_summary_on" android:summaryOff="@string/revanced_hide_crowdfunding_box_summary_off" />
<SwitchPreference android:title="@string/revanced_hide_end_screen_cards_title" android:key="revanced_hide_end_screen_cards" android:defaultValue="false" android:summaryOn="@string/revanced_hide_end_screen_cards_summary_on" android:summaryOff="@string/revanced_hide_end_screen_cards_summary_off" /> <SwitchPreference android:title="@string/revanced_hide_end_screen_cards_title" android:key="revanced_hide_end_screen_cards" android:defaultValue="false" android:summaryOn="@string/revanced_hide_end_screen_cards_summary_on" android:summaryOff="@string/revanced_hide_end_screen_cards_summary_off" />