From e579c56921a8240c78817ac6e32ac11c777b1943 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Sun, 10 Aug 2025 21:17:32 -0400 Subject: [PATCH] fix(YouTube - Video quality): Show FHD+ icon for 1080p 60fps enhanced bitrate --- .../extension/youtube/patches/VideoInformation.java | 10 ++++------ .../extension/youtube/patches/components/Filter.java | 2 -- .../youtube/videoplayer/VideoQualityDialogButton.java | 6 +++--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/VideoInformation.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/VideoInformation.java index 96d67a749..f8b360aa5 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/VideoInformation.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/VideoInformation.java @@ -41,11 +41,10 @@ public final class VideoInformation { public static final int AUTOMATIC_VIDEO_QUALITY_VALUE = -2; /** - * All quality names are the same for all languages. - * VideoQuality also has a resolution enum that can be used if needed. + * Video quality names are the same text for all languages. + * Premium can be "1080p Premium" or "1080p60 Premium" */ - public static final String VIDEO_QUALITY_1080P_PREMIUM_NAME = "1080p Premium"; - + public static final String VIDEO_QUALITY_PREMIUM_NAME = "Premium"; private static final float DEFAULT_YOUTUBE_PLAYBACK_SPEED = 1.0f; /** @@ -407,14 +406,13 @@ public final class VideoInformation { } /** - * @return If the playback is at the end of the video. - *
* If video is playing in the background with no video visible, * this always returns false (even if the video is actually at the end). *
* This is equivalent to checking for {@link VideoState#ENDED}, * but can give a more up-to-date result for code calling from some hooks. * + * @return If the playback is at the end of the video. * @see VideoState */ @SuppressWarnings("BooleanMethodIsAlwaysInverted") diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/Filter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/Filter.java index 454c03338..003949ce2 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/Filter.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/Filter.java @@ -40,7 +40,6 @@ abstract class Filter { /** * Adds callbacks to {@link #isFiltered(String, String, byte[], StringFilterGroup, FilterContentType, int)} * if any of the groups are found. - *
*/ protected final void addIdentifierCallbacks(StringFilterGroup... groups) { identifierCallbacks.addAll(Arrays.asList(groups)); @@ -58,7 +57,6 @@ abstract class Filter { * Called after an enabled filter has been matched. * Default implementation is to always filter the matched component and log the action. * Subclasses can perform additional or different checks if needed. - * *
* Method is called off the main thread. * diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/VideoQualityDialogButton.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/VideoQualityDialogButton.java index a9bd1657b..6b43abf51 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/VideoQualityDialogButton.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/videoplayer/VideoQualityDialogButton.java @@ -3,7 +3,7 @@ package app.revanced.extension.youtube.videoplayer; import static app.revanced.extension.shared.StringRef.str; import static app.revanced.extension.shared.Utils.dipToPixels; import static app.revanced.extension.youtube.patches.VideoInformation.AUTOMATIC_VIDEO_QUALITY_VALUE; -import static app.revanced.extension.youtube.patches.VideoInformation.VIDEO_QUALITY_1080P_PREMIUM_NAME; +import static app.revanced.extension.youtube.patches.VideoInformation.VIDEO_QUALITY_PREMIUM_NAME; import android.app.Dialog; import android.content.Context; @@ -157,9 +157,9 @@ public class VideoQualityDialogButton { case 2160 -> "4K"; default -> "?"; // Should never happen. }; - text.append(qualityText); - if (resolution == 1080 && VIDEO_QUALITY_1080P_PREMIUM_NAME.equals(quality.patch_getQualityName())) { + + if (quality != null && quality.patch_getQualityName().contains(VIDEO_QUALITY_PREMIUM_NAME)) { // Underline the entire "FHD" text for 1080p Premium. text.setSpan(new UnderlineSpan(), 0, qualityText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); }