mirror of
https://github.com/inotia00/revanced-patches.git
synced 2025-06-13 13:47:42 +02:00
feat(youtube/force-video-codec): Force HDR Codec
patch (#25)
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
package app.revanced.patches.youtube.misc.forceopus
|
package app.revanced.patches.youtube.misc.codec.audio
|
||||||
|
|
||||||
import app.revanced.patcher.data.BytecodeContext
|
import app.revanced.patcher.data.BytecodeContext
|
||||||
import app.revanced.patcher.patch.annotation.CompatiblePackage
|
import app.revanced.patcher.patch.annotation.CompatiblePackage
|
@ -1,4 +1,4 @@
|
|||||||
package app.revanced.patches.youtube.misc.forcevp9
|
package app.revanced.patches.youtube.misc.codec.video
|
||||||
|
|
||||||
import app.revanced.extensions.exception
|
import app.revanced.extensions.exception
|
||||||
import app.revanced.patcher.data.BytecodeContext
|
import app.revanced.patcher.data.BytecodeContext
|
||||||
@ -11,12 +11,12 @@ import app.revanced.patcher.patch.BytecodePatch
|
|||||||
import app.revanced.patcher.patch.annotation.CompatiblePackage
|
import app.revanced.patcher.patch.annotation.CompatiblePackage
|
||||||
import app.revanced.patcher.patch.annotation.Patch
|
import app.revanced.patcher.patch.annotation.Patch
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
||||||
import app.revanced.patches.youtube.misc.forcevp9.fingerprints.VideoCapabilitiesFingerprint
|
import app.revanced.patches.youtube.misc.codec.video.fingerprints.VideoCapabilitiesFingerprint
|
||||||
import app.revanced.patches.youtube.misc.forcevp9.fingerprints.VideoCapabilitiesParentFingerprint
|
import app.revanced.patches.youtube.misc.codec.video.fingerprints.VideoCapabilitiesParentFingerprint
|
||||||
import app.revanced.patches.youtube.misc.forcevp9.fingerprints.Vp9PrimaryFingerprint
|
import app.revanced.patches.youtube.misc.codec.video.fingerprints.VideoPrimaryFingerprint
|
||||||
import app.revanced.patches.youtube.misc.forcevp9.fingerprints.Vp9PropsFingerprint
|
import app.revanced.patches.youtube.misc.codec.video.fingerprints.VideoPropsFingerprint
|
||||||
import app.revanced.patches.youtube.misc.forcevp9.fingerprints.Vp9PropsParentFingerprint
|
import app.revanced.patches.youtube.misc.codec.video.fingerprints.VideoPropsParentFingerprint
|
||||||
import app.revanced.patches.youtube.misc.forcevp9.fingerprints.Vp9SecondaryFingerprint
|
import app.revanced.patches.youtube.misc.codec.video.fingerprints.VideoSecondaryFingerprint
|
||||||
import app.revanced.patches.youtube.utils.fingerprints.LayoutSwitchFingerprint
|
import app.revanced.patches.youtube.utils.fingerprints.LayoutSwitchFingerprint
|
||||||
import app.revanced.patches.youtube.utils.settings.SettingsPatch
|
import app.revanced.patches.youtube.utils.settings.SettingsPatch
|
||||||
import app.revanced.util.integrations.Constants.MISC_PATH
|
import app.revanced.util.integrations.Constants.MISC_PATH
|
||||||
@ -26,8 +26,8 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
|||||||
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
||||||
|
|
||||||
@Patch(
|
@Patch(
|
||||||
name = "Force VP9 codec",
|
name = "Force video codec",
|
||||||
description = "Forces the VP9 codec for videos.",
|
description = "Forces the video codec for videos.",
|
||||||
dependencies = [SettingsPatch::class],
|
dependencies = [SettingsPatch::class],
|
||||||
compatiblePackages = [
|
compatiblePackages = [
|
||||||
CompatiblePackage(
|
CompatiblePackage(
|
||||||
@ -49,27 +49,27 @@ import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
object ForceVP9CodecPatch : BytecodePatch(
|
object ForceVideoCodecPatch : BytecodePatch(
|
||||||
setOf(
|
setOf(
|
||||||
LayoutSwitchFingerprint,
|
LayoutSwitchFingerprint,
|
||||||
VideoCapabilitiesParentFingerprint,
|
VideoCapabilitiesParentFingerprint,
|
||||||
Vp9PropsParentFingerprint
|
VideoPropsParentFingerprint
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
override fun execute(context: BytecodeContext) {
|
override fun execute(context: BytecodeContext) {
|
||||||
|
|
||||||
LayoutSwitchFingerprint.result?.classDef?.let { classDef ->
|
LayoutSwitchFingerprint.result?.classDef?.let { classDef ->
|
||||||
arrayOf(
|
arrayOf(
|
||||||
Vp9PrimaryFingerprint,
|
VideoPrimaryFingerprint,
|
||||||
Vp9SecondaryFingerprint
|
VideoSecondaryFingerprint
|
||||||
).forEach { fingerprint ->
|
).forEach { fingerprint ->
|
||||||
fingerprint.also { it.resolve(context, classDef) }.result?.injectOverride()
|
fingerprint.also { it.resolve(context, classDef) }.result?.injectOverride()
|
||||||
?: throw fingerprint.exception
|
?: throw fingerprint.exception
|
||||||
}
|
}
|
||||||
} ?: throw LayoutSwitchFingerprint.exception
|
} ?: throw LayoutSwitchFingerprint.exception
|
||||||
|
|
||||||
Vp9PropsParentFingerprint.result?.let { parentResult ->
|
VideoPropsParentFingerprint.result?.let { parentResult ->
|
||||||
Vp9PropsFingerprint.also {
|
VideoPropsFingerprint.also {
|
||||||
it.resolve(
|
it.resolve(
|
||||||
context,
|
context,
|
||||||
parentResult.classDef
|
parentResult.classDef
|
||||||
@ -82,8 +82,8 @@ object ForceVP9CodecPatch : BytecodePatch(
|
|||||||
).forEach { (fieldName, descriptor) ->
|
).forEach { (fieldName, descriptor) ->
|
||||||
it.hookProps(fieldName, descriptor)
|
it.hookProps(fieldName, descriptor)
|
||||||
}
|
}
|
||||||
} ?: throw Vp9PropsFingerprint.exception
|
} ?: throw VideoPropsFingerprint.exception
|
||||||
} ?: throw Vp9PropsParentFingerprint.exception
|
} ?: throw VideoPropsParentFingerprint.exception
|
||||||
|
|
||||||
VideoCapabilitiesParentFingerprint.result?.let { parentResult ->
|
VideoCapabilitiesParentFingerprint.result?.let { parentResult ->
|
||||||
VideoCapabilitiesFingerprint.also {
|
VideoCapabilitiesFingerprint.also {
|
||||||
@ -116,11 +116,11 @@ object ForceVP9CodecPatch : BytecodePatch(
|
|||||||
*/
|
*/
|
||||||
SettingsPatch.addPreference(
|
SettingsPatch.addPreference(
|
||||||
arrayOf(
|
arrayOf(
|
||||||
"SETTINGS: ENABLE_VP9_CODEC"
|
"SETTINGS: ENABLE_VIDEO_CODEC"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
SettingsPatch.updatePatchStatus("force-vp9-codec")
|
SettingsPatch.updatePatchStatus("force-video-codec")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ object ForceVP9CodecPatch : BytecodePatch(
|
|||||||
"$MISC_PATH/CodecOverridePatch;"
|
"$MISC_PATH/CodecOverridePatch;"
|
||||||
|
|
||||||
private const val INTEGRATIONS_CLASS_METHOD_REFERENCE =
|
private const val INTEGRATIONS_CLASS_METHOD_REFERENCE =
|
||||||
"$INTEGRATIONS_CLASS_DESCRIPTOR->shouldForceVP9(Z)Z"
|
"$INTEGRATIONS_CLASS_DESCRIPTOR->shouldForceCodec(Z)Z"
|
||||||
|
|
||||||
private fun MethodFingerprintResult.injectOverride() {
|
private fun MethodFingerprintResult.injectOverride() {
|
||||||
mutableMethod.apply {
|
mutableMethod.apply {
|
@ -1,4 +1,4 @@
|
|||||||
package app.revanced.patches.youtube.misc.forcevp9.fingerprints
|
package app.revanced.patches.youtube.misc.codec.video.fingerprints
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
@ -1,4 +1,4 @@
|
|||||||
package app.revanced.patches.youtube.misc.forcevp9.fingerprints
|
package app.revanced.patches.youtube.misc.codec.video.fingerprints
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
|
|
@ -1,11 +1,11 @@
|
|||||||
package app.revanced.patches.youtube.misc.forcevp9.fingerprints
|
package app.revanced.patches.youtube.misc.codec.video.fingerprints
|
||||||
|
|
||||||
import app.revanced.patcher.extensions.or
|
import app.revanced.patcher.extensions.or
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
object Vp9PrimaryFingerprint : MethodFingerprint(
|
object VideoPrimaryFingerprint : MethodFingerprint(
|
||||||
returnType = "Z",
|
returnType = "Z",
|
||||||
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
|
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
|
||||||
parameters = listOf("I"),
|
parameters = listOf("I"),
|
@ -1,11 +1,11 @@
|
|||||||
package app.revanced.patches.youtube.misc.forcevp9.fingerprints
|
package app.revanced.patches.youtube.misc.codec.video.fingerprints
|
||||||
|
|
||||||
import app.revanced.patcher.extensions.or
|
import app.revanced.patcher.extensions.or
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
object Vp9PropsFingerprint : MethodFingerprint(
|
object VideoPropsFingerprint : MethodFingerprint(
|
||||||
returnType = "L",
|
returnType = "L",
|
||||||
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
|
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
|
||||||
parameters = emptyList(),
|
parameters = emptyList(),
|
@ -1,8 +1,8 @@
|
|||||||
package app.revanced.patches.youtube.misc.forcevp9.fingerprints
|
package app.revanced.patches.youtube.misc.codec.video.fingerprints
|
||||||
|
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
|
|
||||||
object Vp9PropsParentFingerprint : MethodFingerprint(
|
object VideoPropsParentFingerprint : MethodFingerprint(
|
||||||
returnType = "V",
|
returnType = "V",
|
||||||
strings = listOf("Android Wear")
|
strings = listOf("Android Wear")
|
||||||
)
|
)
|
@ -1,11 +1,11 @@
|
|||||||
package app.revanced.patches.youtube.misc.forcevp9.fingerprints
|
package app.revanced.patches.youtube.misc.codec.video.fingerprints
|
||||||
|
|
||||||
import app.revanced.patcher.extensions.or
|
import app.revanced.patcher.extensions.or
|
||||||
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
|
||||||
object Vp9SecondaryFingerprint : MethodFingerprint(
|
object VideoSecondaryFingerprint : MethodFingerprint(
|
||||||
returnType = "Z",
|
returnType = "Z",
|
||||||
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
|
accessFlags = AccessFlags.PUBLIC or AccessFlags.STATIC,
|
||||||
parameters = listOf("L", "I"),
|
parameters = listOf("L", "I"),
|
@ -164,6 +164,8 @@ Only available to some users who can use the speed overlay"</string>
|
|||||||
<string name="revanced_enable_tablet_navigation_bar_title">Enable tablet navigation bar</string>
|
<string name="revanced_enable_tablet_navigation_bar_title">Enable tablet navigation bar</string>
|
||||||
<string name="revanced_enable_vp9_codec_summary">Spoof device information to enable vp9 codec</string>
|
<string name="revanced_enable_vp9_codec_summary">Spoof device information to enable vp9 codec</string>
|
||||||
<string name="revanced_enable_vp9_codec_title">Enable vp9 codec</string>
|
<string name="revanced_enable_vp9_codec_title">Enable vp9 codec</string>
|
||||||
|
<string name="revanced_enable_hdr_codec_summary">Spoof device information to enable HDR codec</string>
|
||||||
|
<string name="revanced_enable_hdr_codec_title">Enable HDR codec</string>
|
||||||
<string name="revanced_enable_wide_search_bar_summary_off">Wide search bar is disabled</string>
|
<string name="revanced_enable_wide_search_bar_summary_off">Wide search bar is disabled</string>
|
||||||
<string name="revanced_enable_wide_search_bar_summary_on">Wide search bar is enabled</string>
|
<string name="revanced_enable_wide_search_bar_summary_on">Wide search bar is enabled</string>
|
||||||
<string name="revanced_enable_wide_search_bar_title">Enable wide search bar</string>
|
<string name="revanced_enable_wide_search_bar_title">Enable wide search bar</string>
|
||||||
@ -602,6 +604,10 @@ If you enable this setting, the following features are not available:
|
|||||||
<string name="revanced_reboot_warning_vp9">"Spoofs device information to enable VP9 codec
|
<string name="revanced_reboot_warning_vp9">"Spoofs device information to enable VP9 codec
|
||||||
|
|
||||||
Since these setting is quite outdated, it may not be valid"</string>
|
Since these setting is quite outdated, it may not be valid"</string>
|
||||||
|
<string name="revanced_reboot_warning_hdr">"Spoofs device information to unlock HDR codec
|
||||||
|
|
||||||
|
As this is still an experimental feature, there may be other unknown issues.
|
||||||
|
Are you sure you want to continue though?"</string>
|
||||||
|
|
||||||
<string name="revanced_ryd_about">About</string>
|
<string name="revanced_ryd_about">About</string>
|
||||||
<string name="revanced_ryd_attribution_summary">Dislike data is provided by the Return YouTube Dislike API. Tap here to learn more.</string>
|
<string name="revanced_ryd_attribution_summary">Dislike data is provided by the Return YouTube Dislike API. Tap here to learn more.</string>
|
||||||
|
@ -289,8 +289,9 @@
|
|||||||
<!-- SETTINGS: LAYOUT_SWITCH
|
<!-- SETTINGS: LAYOUT_SWITCH
|
||||||
<SwitchPreference android:title="@string/revanced_enable_tablet_layout_title" android:key="revanced_enable_tablet_layout" android:summary="@string/revanced_enable_tablet_layout_summary" android:defaultValue="false" />SETTINGS: LAYOUT_SWITCH -->
|
<SwitchPreference android:title="@string/revanced_enable_tablet_layout_title" android:key="revanced_enable_tablet_layout" android:summary="@string/revanced_enable_tablet_layout_summary" android:defaultValue="false" />SETTINGS: LAYOUT_SWITCH -->
|
||||||
|
|
||||||
<!-- SETTINGS: ENABLE_VP9_CODEC
|
<!-- SETTINGS: ENABLE_VIDEO_CODEC
|
||||||
<SwitchPreference android:title="@string/revanced_enable_vp9_codec_title" android:key="revanced_enable_vp9_codec" android:defaultValue="false" android:summary="@string/revanced_enable_vp9_codec_summary" />SETTINGS: ENABLE_VP9_CODEC -->
|
<SwitchPreference android:title="@string/revanced_enable_vp9_codec_title" android:key="revanced_enable_vp9_codec" android:defaultValue="false" android:summary="@string/revanced_enable_vp9_codec_summary" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_enable_hdr_codec_title" android:key="revanced_enable_hdr_codec" android:defaultValue="false" android:summary="@string/revanced_enable_hdr_codec_summary" />SETTINGS: ENABLE_VIDEO_CODEC -->
|
||||||
|
|
||||||
<!-- SETTINGS: SPOOF_APP_VERSION
|
<!-- SETTINGS: SPOOF_APP_VERSION
|
||||||
<SwitchPreference android:title="@string/revanced_spoof_app_version_title" android:key="revanced_spoof_app_version" android:defaultValue="false" android:summary="@string/revanced_spoof_app_version_summary" />
|
<SwitchPreference android:title="@string/revanced_spoof_app_version_title" android:key="revanced_spoof_app_version" android:defaultValue="false" android:summary="@string/revanced_spoof_app_version_summary" />
|
||||||
|
Reference in New Issue
Block a user