feat(YouTube/Video playback): add Disable VP9 codec setting https://github.com/inotia00/ReVanced_Extended/issues/2384

This commit is contained in:
inotia00
2024-09-15 19:08:28 +09:00
parent 6587ba7fee
commit 753a44f67c
4 changed files with 43 additions and 2 deletions

View File

@ -30,6 +30,7 @@ import app.revanced.patches.youtube.video.playback.fingerprints.PlaybackSpeedCha
import app.revanced.patches.youtube.video.playback.fingerprints.PlaybackSpeedInitializeFingerprint
import app.revanced.patches.youtube.video.playback.fingerprints.QualityChangedFromRecyclerViewFingerprint
import app.revanced.patches.youtube.video.playback.fingerprints.QualitySetterFingerprint
import app.revanced.patches.youtube.video.playback.fingerprints.VP9CapabilityFingerprint
import app.revanced.patches.youtube.video.videoid.VideoIdPatch
import app.revanced.util.getReference
import app.revanced.util.getStringInstructionIndex
@ -72,7 +73,8 @@ object VideoPlaybackPatch : BaseBytecodePatch(
QualityChangedFromRecyclerViewFingerprint,
QualityMenuViewInflateFingerprint,
QualitySetterFingerprint,
VideoEndFingerprint
VideoEndFingerprint,
VP9CapabilityFingerprint
)
) {
private const val PLAYBACK_SPEED_MENU_FILTER_CLASS_DESCRIPTOR =
@ -81,6 +83,8 @@ object VideoPlaybackPatch : BaseBytecodePatch(
"$COMPONENTS_PATH/VideoQualityMenuFilter;"
private const val INTEGRATIONS_AV1_CODEC_CLASS_DESCRIPTOR =
"$VIDEO_PATH/AV1CodecPatch;"
private const val INTEGRATIONS_VP9_CODEC_CLASS_DESCRIPTOR =
"$VIDEO_PATH/VP9CodecPatch;"
private const val INTEGRATIONS_CUSTOM_PLAYBACK_SPEED_CLASS_DESCRIPTOR =
"$VIDEO_PATH/CustomPlaybackSpeedPatch;"
private const val INTEGRATIONS_HDR_VIDEO_CLASS_DESCRIPTOR =
@ -326,6 +330,21 @@ object VideoPlaybackPatch : BaseBytecodePatch(
// endregion
// region patch for disable VP9 codec
VP9CapabilityFingerprint.resultOrThrow().mutableMethod.apply {
addInstructionsWithLabels(
0, """
invoke-static {}, $INTEGRATIONS_VP9_CODEC_CLASS_DESCRIPTOR->disableVP9Codec()Z
move-result v0
if-nez v0, :default
return v0
""", ExternalLabel("default", getInstruction(0))
)
}
// endregion
/**
* Add settings
*/

View File

@ -0,0 +1,14 @@
package app.revanced.patches.youtube.video.playback.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.MethodFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object VP9CapabilityFingerprint : MethodFingerprint(
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
returnType = "Z",
strings = listOf(
"vp9_supported",
"video/x-vnd.on2.vp9"
)
)