diff --git a/CHANGELOG.md b/CHANGELOG.md
index a89c085bfe..c561374090 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,94 @@
+# [5.33.0-dev.13](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.12...v5.33.0-dev.13) (2025-08-05)
+
+
+### Bug Fixes
+
+* **Messenger - Hide Facebook button:** Support the latest app version ([#5590](https://github.com/ReVanced/revanced-patches/issues/5590)) ([0cab98d](https://github.com/ReVanced/revanced-patches/commit/0cab98df1689dbf7a042f18f4a961d47da1430ad))
+
+# [5.33.0-dev.12](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.11...v5.33.0-dev.12) (2025-08-04)
+
+
+### Bug Fixes
+
+* **YouTube - Video quality:** Fix dialog quality list check mark not always shown ([295f0f2](https://github.com/ReVanced/revanced-patches/commit/295f0f216b5e8aa9d68457862e73e312b7342703))
+
+# [5.33.0-dev.11](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.10...v5.33.0-dev.11) (2025-08-04)
+
+
+### Bug Fixes
+
+* **YouTube - Video quality:** Fix 144p default not always used ([2f7483a](https://github.com/ReVanced/revanced-patches/commit/2f7483a2d789c28a243b58bb7a252c0d590858ee))
+
+# [5.33.0-dev.10](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.9...v5.33.0-dev.10) (2025-08-04)
+
+
+### Bug Fixes
+
+* **YouTube - Video quality:** Fix wrong qualities sometimes shown in player button dialog ([7378ae3](https://github.com/ReVanced/revanced-patches/commit/7378ae3c5fc88f91bf5cd6db47c6cd170a8c5a4f))
+
+# [5.33.0-dev.9](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.8...v5.33.0-dev.9) (2025-08-04)
+
+
+### Bug Fixes
+
+* **YouTube - Force original audio:** Disable a/b feature flag that forces localized audio ([#5582](https://github.com/ReVanced/revanced-patches/issues/5582)) ([9fe13ee](https://github.com/ReVanced/revanced-patches/commit/9fe13ee1af104c009efd19b826adef375e48e191))
+
+# [5.33.0-dev.8](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.7...v5.33.0-dev.8) (2025-08-03)
+
+
+### Bug Fixes
+
+* **NFC Tools:** Remove broken patch that is no longer supported ([#5584](https://github.com/ReVanced/revanced-patches/issues/5584)) ([cd3a6be](https://github.com/ReVanced/revanced-patches/commit/cd3a6be75c6bd3cc33c0b17a044bd6147f27b5ce))
+
+# [5.33.0-dev.7](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.6...v5.33.0-dev.7) (2025-08-03)
+
+
+### Features
+
+* **YouTube:** Add player button to change video quality ([#5435](https://github.com/ReVanced/revanced-patches/issues/5435)) ([d5f51bf](https://github.com/ReVanced/revanced-patches/commit/d5f51bf400dd22626ff65d7563b6fde70d53fb25))
+
+# [5.33.0-dev.6](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.5...v5.33.0-dev.6) (2025-07-31)
+
+
+### Bug Fixes
+
+* **YouTube - Video quality:** Use 1080p enhanced bitrate for Premium users ([#5565](https://github.com/ReVanced/revanced-patches/issues/5565)) ([bd3ace0](https://github.com/ReVanced/revanced-patches/commit/bd3ace0bd04ccd0369adb49d63aa0cf986402346))
+
+# [5.33.0-dev.5](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.4...v5.33.0-dev.5) (2025-07-31)
+
+
+### Bug Fixes
+
+* **YouTube - Litho filter:** Correctly filter identifier of older YouTube targets ([bf29d69](https://github.com/ReVanced/revanced-patches/commit/bf29d6909e389819bad878ad3b94bbc90d823cc9))
+
+# [5.33.0-dev.4](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.3...v5.33.0-dev.4) (2025-07-30)
+
+
+### Performance Improvements
+
+* **YouTube:** Filter identifier callback only on root component creation ([#5558](https://github.com/ReVanced/revanced-patches/issues/5558)) ([ccac46e](https://github.com/ReVanced/revanced-patches/commit/ccac46eebc2e14b094454e37ef4461d48a62c53f))
+
+# [5.33.0-dev.3](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.2...v5.33.0-dev.3) (2025-07-30)
+
+
+### Bug Fixes
+
+* **YouTube - Playback speed:** Use old speed menu for player button if enabled ([1e8f436](https://github.com/ReVanced/revanced-patches/commit/1e8f4368e117f4b278c24709231cb32546e46dc0))
+
+# [5.33.0-dev.2](https://github.com/ReVanced/revanced-patches/compare/v5.33.0-dev.1...v5.33.0-dev.2) (2025-07-29)
+
+
+### Features
+
+* **ORF ON:** Add `Remove root detection` patch ([#5551](https://github.com/ReVanced/revanced-patches/issues/5551)) ([6c6aa35](https://github.com/ReVanced/revanced-patches/commit/6c6aa35411a139dddc3a15dd757fbeded5d1a0a3))
+
+# [5.33.0-dev.1](https://github.com/ReVanced/revanced-patches/compare/v5.32.0...v5.33.0-dev.1) (2025-07-28)
+
+
+### Features
+
+* **YouTube - Playback speed:** Add "Restore old playback speed menu" option ([#5552](https://github.com/ReVanced/revanced-patches/issues/5552)) ([b01f15b](https://github.com/ReVanced/revanced-patches/commit/b01f15b9acb0427aed99b0141ae271831b7936bf))
+
# [5.32.0](https://github.com/ReVanced/revanced-patches/compare/v5.31.2...v5.32.0) (2025-07-27)
diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java
index e84ac36a23..c015c06105 100644
--- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java
+++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java
@@ -1460,6 +1460,16 @@ public class Utils {
return (int) (metrics.widthPixels * (percentage / 100.0f));
}
+ /**
+ * Uses {@link #adjustColorBrightness(int, float)} depending if light or dark mode is active.
+ */
+ @ColorInt
+ public static int adjustColorBrightness(@ColorInt int baseColor, float lightThemeFactor, float darkThemeFactor) {
+ return isDarkModeEnabled()
+ ? adjustColorBrightness(baseColor, darkThemeFactor)
+ : adjustColorBrightness(baseColor, lightThemeFactor);
+ }
+
/**
* Adjusts the brightness of a color by lightening or darkening it based on the given factor.
*
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ForceOriginalAudioPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ForceOriginalAudioPatch.java
index 7a713d4f47..c67a5ffeca 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ForceOriginalAudioPatch.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ForceOriginalAudioPatch.java
@@ -24,6 +24,16 @@ public class ForceOriginalAudioPatch {
}
}
+ /**
+ * Injection point.
+ */
+ public static boolean ignoreDefaultAudioStream(boolean original) {
+ if (Settings.FORCE_ORIGINAL_AUDIO.get()) {
+ return false;
+ }
+ return original;
+ }
+
/**
* Injection point.
*/
@@ -50,7 +60,6 @@ public class ForceOriginalAudioPatch {
return isOriginal;
} catch (Exception ex) {
Logger.printException(() -> "isDefaultAudioStream failure", ex);
-
return isDefault;
}
}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ReturnYouTubeDislikePatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ReturnYouTubeDislikePatch.java
index bb351b66bb..dbd1ad8d4c 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ReturnYouTubeDislikePatch.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ReturnYouTubeDislikePatch.java
@@ -16,7 +16,7 @@ import java.util.Objects;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
-import app.revanced.extension.youtube.patches.components.ReturnYouTubeDislikeFilterPatch;
+import app.revanced.extension.youtube.patches.components.ReturnYouTubeDislikeFilter;
import app.revanced.extension.youtube.returnyoutubedislike.ReturnYouTubeDislike;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -55,7 +55,7 @@ public class ReturnYouTubeDislikePatch {
private static volatile ReturnYouTubeDislike lastLithoShortsVideoData;
/**
- * Because litho Shorts spans are created offscreen after {@link ReturnYouTubeDislikeFilterPatch}
+ * Because litho Shorts spans are created offscreen after {@link ReturnYouTubeDislikeFilter}
* detects the video ids, but the current Short can arbitrarily reload the same span,
* then use the {@link #lastLithoShortsVideoData} if this value is greater than zero.
*/
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java
index 6128af0a6a..027fdd84a3 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java
@@ -6,8 +6,6 @@ import android.app.Instrumentation;
import android.view.KeyEvent;
import android.view.View;
-import androidx.annotation.Nullable;
-
import java.util.List;
import app.revanced.extension.shared.Logger;
@@ -155,10 +153,10 @@ public final class AdsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == playerShoppingShelf) {
- return contentIndex == 0 && playerShoppingShelfBuffer.check(protobufBufferArray).isFiltered();
+ return contentIndex == 0 && playerShoppingShelfBuffer.check(buffer).isFiltered();
}
if (exceptions.matches(path)) {
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdvancedVideoQualityMenuFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdvancedVideoQualityMenuFilter.java
index 9027db5dbc..fb64dd81d3 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdvancedVideoQualityMenuFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdvancedVideoQualityMenuFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.youtube.patches.playback.quality.AdvancedVideoQualityMenuPatch;
import app.revanced.extension.youtube.settings.Settings;
@@ -21,7 +19,7 @@ public final class AdvancedVideoQualityMenuFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
isVideoQualityMenuVisible = true;
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java
index 5773baa28a..42e428fe98 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
@@ -100,7 +98,7 @@ final class ButtonsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == likeSubscribeGlow) {
return (path.startsWith(VIDEO_ACTION_BAR_PATH_PREFIX) || path.startsWith(COMPACT_CHANNEL_BAR_PATH_PREFIX))
@@ -117,7 +115,7 @@ final class ButtonsFilter extends Filter {
// Make sure the current path is the right one
// to avoid false positives.
return path.startsWith(VIDEO_ACTION_BAR_PATH)
- && bufferButtonsGroupList.check(protobufBufferArray).isFiltered();
+ && bufferButtonsGroupList.check(buffer).isFiltered();
}
return true;
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java
index b2aabe03ee..5fc04bc742 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -87,12 +85,12 @@ final class CommentsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == chipBar) {
// Playlist sort button uses same components and must only filter if the player is opened.
return PlayerType.getCurrent().isMaximizedOrFullscreen()
- && aiCommentsSummary.check(protobufBufferArray).isFiltered();
+ && aiCommentsSummary.check(buffer).isFiltered();
}
return true;
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java
index 263921fff5..cd6950717a 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java
@@ -3,7 +3,6 @@ package app.revanced.extension.youtube.patches.components;
import static app.revanced.extension.shared.StringRef.str;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import java.util.Arrays;
import java.util.Collection;
@@ -146,7 +145,7 @@ final class CustomFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
// All callbacks are custom filter groups.
CustomFilterGroup custom = (CustomFilterGroup) matchedGroup;
@@ -158,6 +157,6 @@ final class CustomFilter extends Filter {
return true; // No buffer filter, only path filtering.
}
- return custom.bufferSearch.matches(protobufBufferArray);
+ return custom.bufferSearch.matches(buffer);
}
}
\ No newline at end of file
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java
index 873fc9a968..c5f4ac33f9 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.youtube.StringTrieSearch;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -105,7 +103,7 @@ final class DescriptionComponentsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == aiGeneratedVideoSummarySection) {
@@ -116,11 +114,11 @@ final class DescriptionComponentsFilter extends Filter {
if (exceptions.matches(path)) return false;
if (matchedGroup == macroMarkersCarousel) {
- return contentIndex == 0 && macroMarkersCarouselGroupList.check(protobufBufferArray).isFiltered();
+ return contentIndex == 0 && macroMarkersCarouselGroupList.check(buffer).isFiltered();
}
if (matchedGroup == horizontalShelf) {
- return cellVideoAttribute.check(protobufBufferArray).isFiltered();
+ return cellVideoAttribute.check(buffer).isFiltered();
}
return true;
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 ddec956f03..454c03338b 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
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -42,6 +40,7 @@ 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));
@@ -68,7 +67,7 @@ abstract class Filter {
* @param contentIndex Matched index of the identifier or path.
* @return True if the litho component should be filtered out.
*/
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
return true;
}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/HideInfoCardsFilterPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/HideInfoCardsFilter.java
similarity index 78%
rename from extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/HideInfoCardsFilterPatch.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/HideInfoCardsFilter.java
index ce92b592ee..3c4c33d161 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/HideInfoCardsFilterPatch.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/HideInfoCardsFilter.java
@@ -3,9 +3,9 @@ package app.revanced.extension.youtube.patches.components;
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
-public final class HideInfoCardsFilterPatch extends Filter {
+public final class HideInfoCardsFilter extends Filter {
- public HideInfoCardsFilterPatch() {
+ public HideInfoCardsFilter() {
addIdentifierCallbacks(
new StringFilterGroup(
Settings.HIDE_INFO_CARDS,
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java
index 45fdcd7d28..470b650bb1 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java
@@ -554,7 +554,7 @@ final class KeywordContentFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (contentIndex != 0 && matchedGroup == startsWithFilter) {
return false;
@@ -574,7 +574,7 @@ final class KeywordContentFilter extends Filter {
}
MutableReference matchRef = new MutableReference<>();
- if (bufferSearch.matches(protobufBufferArray, matchRef)) {
+ if (bufferSearch.matches(buffer, matchRef)) {
updateStats(true, matchRef.value);
return true;
}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java
index 59b02ecdcf..311e991632 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java
@@ -304,7 +304,7 @@ public final class LayoutComponentsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
// This identifier is used not only in players but also in search results:
// https://github.com/ReVanced/revanced-patches/issues/3245
@@ -322,7 +322,7 @@ public final class LayoutComponentsFilter extends Filter {
}
if (matchedGroup == channelProfile) {
- return channelProfileBuffer.check(protobufBufferArray).isFiltered();
+ return channelProfileBuffer.check(buffer).isFiltered();
}
if (exceptions.matches(path)) return false; // Exceptions are not filtered.
@@ -331,11 +331,11 @@ public final class LayoutComponentsFilter extends Filter {
return compactChannelBarInnerButton.check(path).isFiltered()
// The filter may be broad, but in the context of a compactChannelBarInnerButton,
// it's safe to assume that the button is the only thing that should be hidden.
- && joinMembershipButton.check(protobufBufferArray).isFiltered();
+ && joinMembershipButton.check(buffer).isFiltered();
}
if (matchedGroup == horizontalShelves) {
- return contentIndex == 0 && (hideShelves() || ticketShelf.check(protobufBufferArray).isFiltered());
+ return contentIndex == 0 && (hideShelves() || ticketShelf.check(buffer).isFiltered());
}
if (matchedGroup == chipBar) {
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java
index 4f9e4ef329..e2ed04e631 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java
@@ -17,29 +17,28 @@ public final class LithoFilterPatch {
* Simple wrapper to pass the litho parameters through the prefix search.
*/
private static final class LithoFilterParameters {
- @Nullable
final String identifier;
final String path;
- final byte[] protoBuffer;
+ final byte[] buffer;
- LithoFilterParameters(@Nullable String lithoIdentifier, String lithoPath, byte[] protoBuffer) {
+ LithoFilterParameters(String lithoIdentifier, String lithoPath, byte[] buffer) {
this.identifier = lithoIdentifier;
this.path = lithoPath;
- this.protoBuffer = protoBuffer;
+ this.buffer = buffer;
}
@NonNull
@Override
public String toString() {
// Estimate the percentage of the buffer that are Strings.
- StringBuilder builder = new StringBuilder(Math.max(100, protoBuffer.length / 2));
+ StringBuilder builder = new StringBuilder(Math.max(100, buffer.length / 2));
builder.append( "ID: ");
builder.append(identifier);
builder.append(" Path: ");
builder.append(path);
if (Settings.DEBUG_PROTOBUFFER.get()) {
builder.append(" BufferStrings: ");
- findAsciiStrings(builder, protoBuffer);
+ findAsciiStrings(builder, buffer);
}
return builder.toString();
@@ -128,21 +127,21 @@ public final class LithoFilterPatch {
private static void filterUsingCallbacks(StringTrieSearch pathSearchTree,
Filter filter, List groups,
Filter.FilterContentType type) {
+ String filterSimpleName = filter.getClass().getSimpleName();
+
for (StringFilterGroup group : groups) {
if (!group.includeInSearch()) {
continue;
}
for (String pattern : group.filters) {
- String filterSimpleName = filter.getClass().getSimpleName();
-
pathSearchTree.addPattern(pattern, (textSearched, matchedStartIndex,
matchedLength, callbackParameter) -> {
if (!group.isEnabled()) return false;
LithoFilterParameters parameters = (LithoFilterParameters) callbackParameter;
final boolean isFiltered = filter.isFiltered(parameters.identifier,
- parameters.path, parameters.protoBuffer, group, type, matchedStartIndex);
+ parameters.path, parameters.buffer, group, type, matchedStartIndex);
if (isFiltered && BaseSettings.DEBUG.get()) {
if (type == Filter.FilterContentType.IDENTIFIER) {
@@ -163,6 +162,7 @@ public final class LithoFilterPatch {
/**
* Injection point. Called off the main thread.
+ * Targets 20.22+
*/
public static void setProtoBuffer(byte[] buffer) {
// Set the buffer to a thread local. The buffer will remain in memory, even after the call to #filter completes.
@@ -193,9 +193,9 @@ public final class LithoFilterPatch {
/**
* Injection point.
*/
- public static boolean shouldFilter(@Nullable String lithoIdentifier, StringBuilder pathBuilder) {
+ public static boolean isFiltered(String lithoIdentifier, StringBuilder pathBuilder) {
try {
- if (pathBuilder.length() == 0) {
+ if (lithoIdentifier.isEmpty() && pathBuilder.length() == 0) {
return false;
}
@@ -210,7 +210,7 @@ public final class LithoFilterPatch {
lithoIdentifier, pathBuilder.toString(), buffer);
Logger.printDebug(() -> "Searching " + parameter);
- if (parameter.identifier != null && identifierSearchTree.matches(parameter.identifier, parameter)) {
+ if (identifierSearchTree.matches(parameter.identifier, parameter)) {
return true;
}
@@ -218,7 +218,7 @@ public final class LithoFilterPatch {
return true;
}
} catch (Exception ex) {
- Logger.printException(() -> "Litho filter failure", ex);
+ Logger.printException(() -> "isFiltered failure", ex);
}
return false;
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilter.java
new file mode 100644
index 0000000000..fc2b78ceb5
--- /dev/null
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilter.java
@@ -0,0 +1,49 @@
+package app.revanced.extension.youtube.patches.components;
+
+import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
+import app.revanced.extension.youtube.settings.Settings;
+
+/**
+ * Abuse LithoFilter for {@link CustomPlaybackSpeedPatch}.
+ */
+public final class PlaybackSpeedMenuFilter extends Filter {
+
+ /**
+ * Old litho based speed selection menu.
+ */
+ public static volatile boolean isOldPlaybackSpeedMenuVisible;
+
+ /**
+ * 0.05x speed selection menu.
+ */
+ public static volatile boolean isPlaybackRateSelectorMenuVisible;
+
+ private final StringFilterGroup oldPlaybackMenuGroup;
+
+ public PlaybackSpeedMenuFilter() {
+ // 0.05x litho speed menu.
+ var playbackRateSelectorGroup = new StringFilterGroup(
+ Settings.CUSTOM_SPEED_MENU,
+ "playback_rate_selector_menu_sheet.eml-js"
+ );
+
+ // Old litho based speed menu.
+ oldPlaybackMenuGroup = new StringFilterGroup(
+ Settings.CUSTOM_SPEED_MENU,
+ "playback_speed_sheet_content.eml-js");
+
+ addPathCallbacks(playbackRateSelectorGroup, oldPlaybackMenuGroup);
+ }
+
+ @Override
+ boolean isFiltered(String identifier, String path, byte[] buffer,
+ StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
+ if (matchedGroup == oldPlaybackMenuGroup) {
+ isOldPlaybackSpeedMenuVisible = true;
+ } else {
+ isPlaybackRateSelectorMenuVisible = true;
+ }
+
+ return false;
+ }
+}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilterPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilterPatch.java
deleted file mode 100644
index 531578a8b4..0000000000
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilterPatch.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package app.revanced.extension.youtube.patches.components;
-
-import androidx.annotation.Nullable;
-
-import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
-import app.revanced.extension.youtube.settings.Settings;
-
-/**
- * Abuse LithoFilter for {@link CustomPlaybackSpeedPatch}.
- */
-public final class PlaybackSpeedMenuFilterPatch extends Filter {
-
- /**
- * 0.05x speed selection menu.
- */
- public static volatile boolean isPlaybackRateSelectorMenuVisible;
-
- public PlaybackSpeedMenuFilterPatch() {
- // 0.05x litho speed menu.
- var playbackRateSelectorGroup = new StringFilterGroup(
- Settings.CUSTOM_SPEED_MENU,
- "playback_rate_selector_menu_sheet.eml-js"
- );
-
- addPathCallbacks(playbackRateSelectorGroup);
- }
-
- @Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
- StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
- isPlaybackRateSelectorMenuVisible = true;
-
- return false;
- }
-}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java
index e1401f3ae9..fc2cc80992 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
import app.revanced.extension.youtube.settings.Settings;
@@ -96,7 +94,7 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == videoQualityMenuFooter) {
return true;
@@ -107,10 +105,10 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
}
// Shorts also use this player flyout panel
- if (PlayerType.getCurrent().isNoneOrHidden() || exception.check(protobufBufferArray).isFiltered()) {
+ if (PlayerType.getCurrent().isNoneOrHidden() || exception.check(buffer).isFiltered()) {
return false;
}
- return flyoutFilterGroupList.check(protobufBufferArray).isFiltered();
+ return flyoutFilterGroupList.check(buffer).isFiltered();
}
}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilterPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java
similarity index 94%
rename from extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilterPatch.java
rename to extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java
index 0d1504e40e..b82cb5f563 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilterPatch.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java
@@ -26,7 +26,7 @@ import app.revanced.extension.youtube.TrieSearch;
*
* Once a way to asynchronously update litho text is found, this strategy will no longer be needed.
*/
-public final class ReturnYouTubeDislikeFilterPatch extends Filter {
+public final class ReturnYouTubeDislikeFilter extends Filter {
/**
* Last unique video id's loaded. Value is ignored and Map is treated as a Set.
@@ -67,7 +67,7 @@ public final class ReturnYouTubeDislikeFilterPatch extends Filter {
private final ByteArrayFilterGroupList videoIdFilterGroup = new ByteArrayFilterGroupList();
- public ReturnYouTubeDislikeFilterPatch() {
+ public ReturnYouTubeDislikeFilter() {
// When a new Short is opened, the like buttons always seem to load before the dislike.
// But if swiping back to a previous video and liking/disliking, then only that single button reloads.
// So must check for both buttons.
@@ -84,15 +84,15 @@ public final class ReturnYouTubeDislikeFilterPatch extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (!Settings.RYD_ENABLED.get() || !Settings.RYD_SHORTS.get()) {
return false;
}
- FilterGroup.FilterGroupResult result = videoIdFilterGroup.check(protobufBufferArray);
+ FilterGroup.FilterGroupResult result = videoIdFilterGroup.check(buffer);
if (result.isFiltered()) {
- String matchedVideoId = findVideoId(protobufBufferArray);
+ String matchedVideoId = findVideoId(buffer);
// Matched video will be null if in incognito mode.
// Must pass a null id to correctly clear out the current video data.
// Otherwise if a Short is opened in non-incognito, then incognito is enabled and another Short is opened,
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java
index f38959a193..f4fae4d32c 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java
@@ -4,8 +4,6 @@ import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButt
import android.view.View;
-import androidx.annotation.Nullable;
-
import com.google.android.libraries.youtube.rendering.ui.pivotbar.PivotBar;
import java.lang.ref.WeakReference;
@@ -13,7 +11,6 @@ import java.util.Arrays;
import java.util.List;
import app.revanced.extension.shared.Logger;
-import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.NavigationBar;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -321,7 +318,7 @@ public final class ShortsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (contentType == FilterContentType.PATH) {
if (matchedGroup == subscribeButton || matchedGroup == joinButton || matchedGroup == paidPromotionButton) {
@@ -330,22 +327,22 @@ public final class ShortsFilter extends Filter {
}
if (matchedGroup == useSoundButton) {
- return useSoundButtonBuffer.check(protobufBufferArray).isFiltered();
+ return useSoundButtonBuffer.check(buffer).isFiltered();
}
if (matchedGroup == useTemplateButton) {
- return useTemplateButtonBuffer.check(protobufBufferArray).isFiltered();
+ return useTemplateButtonBuffer.check(buffer).isFiltered();
}
if (matchedGroup == shortsCompactFeedVideo) {
- return shouldHideShortsFeedItems() && shortsCompactFeedVideoBuffer.check(protobufBufferArray).isFiltered();
+ return shouldHideShortsFeedItems() && shortsCompactFeedVideoBuffer.check(buffer).isFiltered();
}
// Video action buttons (comment, share, remix) have the same path.
// Like and dislike are separate path filters and don't require buffer searching.
if (matchedGroup == shortsActionBar) {
return videoActionButton.check(path).isFiltered()
- && videoActionButtonBuffer.check(protobufBufferArray).isFiltered();
+ && videoActionButtonBuffer.check(buffer).isFiltered();
}
if (matchedGroup == suggestedAction) {
@@ -356,7 +353,7 @@ public final class ShortsFilter extends Filter {
return true;
}
- return suggestedActionsBuffer.check(protobufBufferArray).isFiltered();
+ return suggestedActionsBuffer.check(buffer).isFiltered();
}
return true;
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/quality/AdvancedVideoQualityMenuPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/quality/AdvancedVideoQualityMenuPatch.java
index 6722c4cb7c..89f221b3be 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/quality/AdvancedVideoQualityMenuPatch.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/quality/AdvancedVideoQualityMenuPatch.java
@@ -18,7 +18,7 @@ import app.revanced.extension.youtube.settings.Settings;
public final class AdvancedVideoQualityMenuPatch {
/**
- * Injection point.
+ * Injection point. Regular videos.
*/
public static void onFlyoutMenuCreate(RecyclerView recyclerView) {
if (!Settings.ADVANCED_VIDEO_QUALITY_MENU.get()) return;
@@ -61,22 +61,12 @@ public final class AdvancedVideoQualityMenuPatch {
});
}
-
- /**
- * Injection point.
- *
- * Used to force the creation of the advanced menu item for the Shorts quality flyout.
- */
- public static boolean forceAdvancedVideoQualityMenuCreation(boolean original) {
- return Settings.ADVANCED_VIDEO_QUALITY_MENU.get() || original;
- }
-
/**
* Injection point.
*
* Shorts video quality flyout.
*/
- public static void showAdvancedVideoQualityMenu(ListView listView) {
+ public static void addVideoQualityListMenuListener(ListView listView) {
if (!Settings.ADVANCED_VIDEO_QUALITY_MENU.get()) return;
listView.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
@@ -91,7 +81,6 @@ public final class AdvancedVideoQualityMenuPatch {
listView.setSoundEffectsEnabled(false);
final var qualityItemMenuPosition = 4;
listView.performItemClick(null, qualityItemMenuPosition, 0);
-
} catch (Exception ex) {
Logger.printException(() -> "showAdvancedVideoQualityMenu failure", ex);
}
@@ -102,4 +91,13 @@ public final class AdvancedVideoQualityMenuPatch {
}
});
}
+
+ /**
+ * Injection point.
+ *
+ * Used to force the creation of the advanced menu item for the Shorts quality flyout.
+ */
+ public static boolean forceAdvancedVideoQualityMenuCreation(boolean original) {
+ return Settings.ADVANCED_VIDEO_QUALITY_MENU.get() || original;
+ }
}
\ No newline at end of file
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/quality/RememberVideoQualityPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/quality/RememberVideoQualityPatch.java
index 82e75058b3..e4d1d98176 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/quality/RememberVideoQualityPatch.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/quality/RememberVideoQualityPatch.java
@@ -5,10 +5,9 @@ import static app.revanced.extension.shared.Utils.NetworkType;
import androidx.annotation.Nullable;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
+import com.google.android.libraries.youtube.innertube.model.media.VideoQuality;
+
+import java.util.Arrays;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
@@ -17,10 +16,29 @@ import app.revanced.extension.shared.settings.IntegerSetting;
import app.revanced.extension.youtube.patches.VideoInformation;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.ShortsPlayerState;
+import app.revanced.extension.youtube.videoplayer.VideoQualityDialogButton;
@SuppressWarnings("unused")
public class RememberVideoQualityPatch {
- private static final int AUTOMATIC_VIDEO_QUALITY_VALUE = -2;
+
+ /**
+ * Interface to use obfuscated methods.
+ */
+ public interface VideoQualityMenuInterface {
+ void patch_setQuality(VideoQuality quality);
+ }
+
+ /**
+ * Video resolution of the automatic quality option..
+ */
+ 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.
+ */
+ public static final String VIDEO_QUALITY_1080P_PREMIUM_NAME = "1080p Premium";
+
private static final IntegerSetting videoQualityWifi = Settings.VIDEO_QUALITY_DEFAULT_WIFI;
private static final IntegerSetting videoQualityMobile = Settings.VIDEO_QUALITY_DEFAULT_MOBILE;
private static final IntegerSetting shortsQualityWifi = Settings.SHORTS_QUALITY_DEFAULT_WIFI;
@@ -29,46 +47,83 @@ public class RememberVideoQualityPatch {
private static boolean qualityNeedsUpdating;
/**
- * If the user selected a new quality from the flyout menu,
- * and {@link Settings#REMEMBER_VIDEO_QUALITY_LAST_SELECTED} is enabled.
- */
- private static boolean userChangedDefaultQuality;
-
- /**
- * Index of the video quality chosen by the user from the flyout menu.
- */
- private static int userSelectedQualityIndex;
-
- /**
- * The available qualities of the current video in human readable form: [1080, 720, 480]
+ * The available qualities of the current video.
*/
@Nullable
- private static List videoQualities;
+ private static VideoQuality[] currentQualities;
- private static boolean shouldRememberVideoQuality() {
- BooleanSetting preference = ShortsPlayerState.isOpen() ?
- Settings.REMEMBER_SHORTS_QUALITY_LAST_SELECTED
+ /**
+ * The current quality of the video playing.
+ * This is always the actual quality even if Automatic quality is active.
+ */
+ @Nullable
+ private static VideoQuality currentQuality;
+
+ /**
+ * The current VideoQualityMenuInterface, set during setVideoQuality.
+ */
+ @Nullable
+ private static VideoQualityMenuInterface currentMenuInterface;
+
+ @Nullable
+ public static VideoQuality[] getCurrentQualities() {
+ return currentQualities;
+ }
+
+ @Nullable
+ public static VideoQuality getCurrentQuality() {
+ return currentQuality;
+ }
+
+ @Nullable
+ public static VideoQualityMenuInterface getCurrentMenuInterface() {
+ return currentMenuInterface;
+ }
+
+ public static boolean shouldRememberVideoQuality() {
+ BooleanSetting preference = ShortsPlayerState.isOpen()
+ ? Settings.REMEMBER_SHORTS_QUALITY_LAST_SELECTED
: Settings.REMEMBER_VIDEO_QUALITY_LAST_SELECTED;
return preference.get();
}
- private static void changeDefaultQuality(int defaultQuality) {
+ public static int getDefaultQualityResolution() {
+ final boolean isShorts = ShortsPlayerState.isOpen();
+ IntegerSetting preference = Utils.getNetworkType() == NetworkType.MOBILE
+ ? (isShorts ? shortsQualityMobile : videoQualityMobile)
+ : (isShorts ? shortsQualityWifi : videoQualityWifi);
+ return preference.get();
+ }
+
+ public static void saveDefaultQuality(int qualityResolution) {
+ final boolean shortPlayerOpen = ShortsPlayerState.isOpen();
String networkTypeMessage;
- boolean useShortsPreference = ShortsPlayerState.isOpen();
+ IntegerSetting qualitySetting;
if (Utils.getNetworkType() == NetworkType.MOBILE) {
- if (useShortsPreference) shortsQualityMobile.save(defaultQuality);
- else videoQualityMobile.save(defaultQuality);
networkTypeMessage = str("revanced_remember_video_quality_mobile");
+ qualitySetting = shortPlayerOpen ? shortsQualityMobile : videoQualityMobile;
} else {
- if (useShortsPreference) shortsQualityWifi.save(defaultQuality);
- else videoQualityWifi.save(defaultQuality);
networkTypeMessage = str("revanced_remember_video_quality_wifi");
+ qualitySetting = shortPlayerOpen ? shortsQualityWifi : videoQualityWifi;
}
- if (Settings.REMEMBER_VIDEO_QUALITY_LAST_SELECTED_TOAST.get())
+
+ if (qualitySetting.get() == qualityResolution) {
+ // User clicked the same video quality as the current video,
+ // or changed between 1080p Premium and non-Premium.
+ return;
+ }
+ qualitySetting.save(qualityResolution);
+
+ if (Settings.REMEMBER_VIDEO_QUALITY_LAST_SELECTED_TOAST.get()) {
+ String qualityLabel = qualityResolution + "p";
Utils.showToastShort(str(
- useShortsPreference ? "revanced_remember_video_quality_toast_shorts" : "revanced_remember_video_quality_toast",
- networkTypeMessage, (defaultQuality + "p")
- ));
+ shortPlayerOpen
+ ? "revanced_remember_video_quality_toast_shorts"
+ : "revanced_remember_video_quality_toast",
+ networkTypeMessage,
+ qualityLabel)
+ );
+ }
}
/**
@@ -77,109 +132,132 @@ public class RememberVideoQualityPatch {
* @param qualities Video qualities available, ordered from largest to smallest, with index 0 being the 'automatic' value of -2
* @param originalQualityIndex quality index to use, as chosen by YouTube
*/
- public static int setVideoQuality(Object[] qualities, final int originalQualityIndex, Object qInterface, String qIndexMethod) {
+ public static int setVideoQuality(VideoQuality[] qualities, VideoQualityMenuInterface menu, int originalQualityIndex) {
try {
- boolean useShortsPreference = ShortsPlayerState.isOpen();
- final int preferredQuality = Utils.getNetworkType() == NetworkType.MOBILE
- ? (useShortsPreference ? shortsQualityMobile : videoQualityMobile).get()
- : (useShortsPreference ? shortsQualityWifi : videoQualityWifi).get();
+ Utils.verifyOnMainThread();
+ currentMenuInterface = menu;
- if (!userChangedDefaultQuality && preferredQuality == AUTOMATIC_VIDEO_QUALITY_VALUE) {
+ final boolean availableQualitiesChanged = (currentQualities == null)
+ || !Arrays.equals(currentQualities, qualities);
+ if (availableQualitiesChanged) {
+ currentQualities = qualities;
+ Logger.printDebug(() -> "VideoQualities: " + Arrays.toString(currentQualities));
+ }
+
+ VideoQuality updatedCurrentQuality = qualities[originalQualityIndex];
+ if (updatedCurrentQuality.patch_getResolution() != AUTOMATIC_VIDEO_QUALITY_VALUE
+ && (currentQuality == null || currentQuality != updatedCurrentQuality)) {
+ currentQuality = updatedCurrentQuality;
+ Logger.printDebug(() -> "Current quality changed to: " + updatedCurrentQuality);
+
+ VideoQualityDialogButton.updateButtonIcon(updatedCurrentQuality);
+ }
+
+ final int preferredQuality = getDefaultQualityResolution();
+ if (preferredQuality == AUTOMATIC_VIDEO_QUALITY_VALUE) {
return originalQualityIndex; // Nothing to do.
}
- if (videoQualities == null || videoQualities.size() != qualities.length) {
- videoQualities = new ArrayList<>(qualities.length);
- for (Object streamQuality : qualities) {
- for (Field field : streamQuality.getClass().getFields()) {
- if (field.getType().isAssignableFrom(Integer.TYPE)
- && field.getName().length() <= 2) {
- videoQualities.add(field.getInt(streamQuality));
- }
- }
- }
-
- // After changing videos the qualities can initially be for the prior video.
- // So if the qualities have changed an update is needed.
- qualityNeedsUpdating = true;
- Logger.printDebug(() -> "VideoQualities: " + videoQualities);
- }
-
- if (userChangedDefaultQuality) {
- userChangedDefaultQuality = false;
- final int quality = videoQualities.get(userSelectedQualityIndex);
- Logger.printDebug(() -> "User changed default quality to: " + quality);
- changeDefaultQuality(quality);
- return userSelectedQualityIndex;
- }
-
- if (!qualityNeedsUpdating) {
+ // After changing videos the qualities can initially be for the prior video.
+ // If the qualities have changed and the default is not auto then an update is needed.
+ if (!qualityNeedsUpdating && !availableQualitiesChanged) {
return originalQualityIndex;
}
qualityNeedsUpdating = false;
// Find the highest quality that is equal to or less than the preferred.
- int qualityToUse = videoQualities.get(0); // first element is automatic mode
- int qualityIndexToUse = 0;
int i = 0;
- for (Integer quality : videoQualities) {
- if (quality <= preferredQuality && qualityToUse < quality) {
- qualityToUse = quality;
- qualityIndexToUse = i;
+ for (VideoQuality quality : qualities) {
+ final int qualityResolution = quality.patch_getResolution();
+ if ((qualityResolution != AUTOMATIC_VIDEO_QUALITY_VALUE && qualityResolution <= preferredQuality)
+ // Use the lowest video quality if the default is lower than all available.
+ || i == qualities.length - 1) {
+ final boolean qualityNeedsChange = (i != originalQualityIndex);
+ Logger.printDebug(() -> qualityNeedsChange
+ ? "Changing video quality from: " + updatedCurrentQuality + " to: " + quality
+ : "Video is already the preferred quality: " + quality
+ );
+
+ // On first load of a new regular video, if the video is already the
+ // desired quality then the quality flyout will show 'Auto' (ie: Auto (720p)).
+ //
+ // To prevent user confusion, set the video index even if the
+ // quality is already correct so the UI picker will not display "Auto".
+ //
+ // Only change Shorts quality if the quality actually needs to change,
+ // because the "auto" option is not shown in the flyout
+ // and setting the same quality again can cause the Short to restart.
+ if (qualityNeedsChange || !ShortsPlayerState.isOpen()) {
+ menu.patch_setQuality(qualities[i]);
+ return i;
+ }
+
+ return originalQualityIndex;
}
i++;
}
-
- // If the desired quality index is equal to the original index,
- // then the video is already set to the desired default quality.
- final int qualityToUseFinal = qualityToUse;
- if (qualityIndexToUse == originalQualityIndex) {
- // On first load of a new video, if the UI video quality flyout menu
- // is not updated then it will still show 'Auto' (ie: Auto (480p)),
- // even though it's already set to the desired resolution.
- //
- // To prevent confusion, set the video index anyways (even if it matches the existing index)
- // as that will force the UI picker to not display "Auto".
- Logger.printDebug(() -> "Video is already preferred quality: " + qualityToUseFinal);
- } else {
- Logger.printDebug(() -> "Changing video quality from: "
- + videoQualities.get(originalQualityIndex) + " to: " + qualityToUseFinal);
- }
-
- Method m = qInterface.getClass().getMethod(qIndexMethod, Integer.TYPE);
- m.invoke(qInterface, qualityToUse);
- return qualityIndexToUse;
} catch (Exception ex) {
- Logger.printException(() -> "Failed to set quality", ex);
- return originalQualityIndex;
+ Logger.printException(() -> "setVideoQuality failure", ex);
+ }
+ return originalQualityIndex;
+ }
+
+ /**
+ * Injection point.
+ * @param userSelectedQualityIndex Element index of {@link #currentQualities}.
+ */
+ public static void userChangedShortsQuality(int userSelectedQualityIndex) {
+ try {
+ if (shouldRememberVideoQuality()) {
+ if (currentQualities == null) {
+ Logger.printDebug(() -> "Cannot save default quality, qualities is null");
+ return;
+ }
+ VideoQuality quality = currentQualities[userSelectedQualityIndex];
+ saveDefaultQuality(quality.patch_getResolution());
+ }
+ } catch (Exception ex) {
+ Logger.printException(() -> "userChangedShortsQuality failure", ex);
}
}
/**
- * Injection point. Old quality menu.
+ * Injection point. Regular videos.
+ * @param videoResolution Human readable resolution: 480, 720, 1080.
*/
- public static void userChangedQuality(int selectedQualityIndex) {
+ public static void userChangedQuality(int videoResolution) {
+ Utils.verifyOnMainThread();
+
if (shouldRememberVideoQuality()) {
- userSelectedQualityIndex = selectedQualityIndex;
- userChangedDefaultQuality = true;
+ saveDefaultQuality(videoResolution);
}
}
- /**
- * Injection point. New quality menu.
- */
- public static void userChangedQualityInNewFlyout(int selectedQuality) {
- if (!shouldRememberVideoQuality()) return;
-
- changeDefaultQuality(selectedQuality); // Quality is human readable resolution (ie: 1080).
- }
-
/**
* Injection point.
*/
public static void newVideoStarted(VideoInformation.PlaybackController ignoredPlayerController) {
+ Utils.verifyOnMainThread();
+
Logger.printDebug(() -> "newVideoStarted");
+ currentQualities = null;
+ currentQuality = null;
+ currentMenuInterface = null;
qualityNeedsUpdating = true;
- videoQualities = null;
+
+ // Hide the quality button until playback starts and the qualities are available.
+ VideoQualityDialogButton.updateButtonIcon(null);
+ }
+
+ /**
+ * Injection point. Fixes bad data used by YouTube.
+ */
+ public static int fixVideoQualityResolution(String name, int quality) {
+ final int correctQuality = 480;
+ if (name.equals("480p") && quality != correctQuality) {
+ return correctQuality;
+ }
+
+ return quality;
}
}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/speed/CustomPlaybackSpeedPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/speed/CustomPlaybackSpeedPatch.java
index da37aa426a..e738be34dc 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/speed/CustomPlaybackSpeedPatch.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/playback/speed/CustomPlaybackSpeedPatch.java
@@ -23,7 +23,6 @@ import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
-import android.view.ViewParent;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
@@ -42,7 +41,7 @@ import java.util.function.Function;
import app.revanced.extension.shared.Logger;
import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.patches.VideoInformation;
-import app.revanced.extension.youtube.patches.components.PlaybackSpeedMenuFilterPatch;
+import app.revanced.extension.youtube.patches.components.PlaybackSpeedMenuFilter;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
import kotlin.Unit;
@@ -80,6 +79,16 @@ public class CustomPlaybackSpeedPatch {
*/
public static final float[] customPlaybackSpeeds;
+ /**
+ * Minimum and maximum custom playback speeds of {@link #customPlaybackSpeeds}.
+ */
+ private static final float customPlaybackSpeedsMin, customPlaybackSpeedsMax;
+
+ /**
+ * The last time the old playback menu was forcefully called.
+ */
+ private static volatile long lastTimeOldPlaybackMenuInvoked;
+
/**
* Formats speeds to UI strings.
*/
@@ -90,11 +99,6 @@ public class CustomPlaybackSpeedPatch {
*/
private static WeakReference
+
+
diff --git a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml
index 455d53835e..c6e99b1199 100644
--- a/patches/src/main/resources/addresources/values-az-rAZ/strings.xml
+++ b/patches/src/main/resources/addresources/values-az-rAZ/strings.xml
@@ -1464,10 +1464,18 @@ Bunu aktivləşdirmə daha yüksək video keyfiyyətləri əngəlin silə bilər
Düymə göstərilir. Oynatma sürətin standart olaraq qaytarmaq üçün toxunub saxla
Düymə göstərilmir
+
+ Video keyfiyyəti düyməsini göstər
+ Düymə görünür. Keyfiyyəti ilkin vəziyyətinə qaytarmaq üçün toxunub saxlayın
+ Düymə görünmür
+
Fərdi oynatma sürəti siyahısı
Fərdi sürət siyahısı göstərilir
Fərdi sürət siyahısı göstərilmir
+ Köhnə oynatma sürəti menyusunu bərpa et
+ Köhnə sürət menyusu göstərilir
+ Müasir sürət menyusu göstərilir
Fərdi oynatma sürəti
Fərdi oynatma sürətlərini əlavə et və ya dəyiş
Fərdi sürətlər %s dəyərindən az olmalıdır
diff --git a/patches/src/main/resources/addresources/values-be-rBY/strings.xml b/patches/src/main/resources/addresources/values-be-rBY/strings.xml
index 1076c0646d..c1a1c8bb13 100644
--- a/patches/src/main/resources/addresources/values-be-rBY/strings.xml
+++ b/patches/src/main/resources/addresources/values-be-rBY/strings.xml
@@ -1466,10 +1466,18 @@ Second \"item\" text"
Кнопка паказана. Націсніце і ўтрымлівайце, каб скінуць хуткасць прайгравання да стандартнай
Кнопка не паказваецца
+
+ Паказаць кнопку якасці відэа
+ Кнопка паказана. Націсніце і ўтрымлівайце, каб скінуць якасць да па змаўчанні
+ Кнопка не паказваецца
+
Меню пользовательской скорости воспроизведения
Меню пользовательской скорости отображается
Меню пользовательской скорости не отображается
+ Аднавіць старое меню хуткасці прайгравання
+ Паказана старое меню хуткасці
+ Паказана сучаснае меню хуткасці
Карыстальніцкія хуткасці прайгравання
Добавьте или измените пользовательскую скорость воспроизведения
Нестандартныя хуткасці павінны быць менш за %s
diff --git a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml
index 3eec26d5cb..f49cc43659 100644
--- a/patches/src/main/resources/addresources/values-bg-rBG/strings.xml
+++ b/patches/src/main/resources/addresources/values-bg-rBG/strings.xml
@@ -1465,10 +1465,18 @@ Second \"item\" text"
Бутонът е показан. Докоснете и задръжте, за да върнете скоростта на възпроизвеждане към стойността по подразбиране
Бутонът не е показан
+
+ Покажи бутона за качество на видеото
+ Бутонът е показан. Докоснете и задръжте, за да възстановите качеството до подразбиране
+ Бутонът не е показан
+
Менюто за потребителска скорост
Менюто за потребителска скорост се показва
Менюто за потребителска скорост не се показва
+ Възстановяване на старото меню за скорост на възпроизвеждане
+ Показва се старото меню за скорост
+ Показва се модерното меню за скорост
Персонализирани скорости на възпроизвеждане
Добавете или променете скоростa на възпроизвеждане
Персонализираните скорости трябва да са по-малки от %s
diff --git a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml
index 83163b8734..bfce746b8b 100644
--- a/patches/src/main/resources/addresources/values-bn-rBD/strings.xml
+++ b/patches/src/main/resources/addresources/values-bn-rBD/strings.xml
@@ -1461,10 +1461,18 @@ DeArrow সম্পর্কে আরও জানতে এখানে ট
বোতামটি দেখানো হয়েছে। প্লেব্যাক স্পীড ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন।
বোতাম প্রদর্শিত হয়নি
+
+ ভিডিও গুণমান বোতাম দেখান
+ বোতামটি দেখানো হয়েছে। গুণমান ডিফল্টে রিসেট করতে ট্যাপ করে ধরে রাখুন।
+ বোতামটি দেখানো হয়নি।
+
কাস্টম প্লেব্যাক গতি মেনু
কাস্টম স্পিড মেনু দেখানো হচ্ছে
কাস্টম স্পিড মেনু দেখানো হচ্ছে না
+ পুরানো প্লেব্যাক গতি মেনু পুনরুদ্ধার করুন
+ পুরানো গতির মেনু দেখানো হয়েছে
+ আধুনিক গতির মেনু দেখানো হয়েছে
নিজস্ব প্লেব্যাক স্পিড
কাস্টম প্লেব্যাক গতি যোগ করুন অথবা পরিবর্তন করুন
কাস্টম গতি %s এর চেয়ে কম হতে হবে
diff --git a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-bs-rBA/strings.xml
+++ b/patches/src/main/resources/addresources/values-bs-rBA/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-ca-rES/strings.xml b/patches/src/main/resources/addresources/values-ca-rES/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-ca-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-ca-rES/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml
index 678bb57ade..c74ddf9cf9 100644
--- a/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml
+++ b/patches/src/main/resources/addresources/values-cs-rCZ/strings.xml
@@ -1465,10 +1465,18 @@ Povolením této funkce lze odemknout vyšší kvality videa"
Tlačítko je zobrazeno. Klepnutím a podržením obnovíte výchozí rychlost přehrávání
Tlačítko se nezobrazuje
+
+ Zobrazit tlačítko kvality videa
+ Tlačítko je zobrazeno. Klepnutím a podržením obnovíte kvalitu na výchozí
+ Tlačítko není zobrazeno.
+
Menu vlastní rychlosti přehrávání
Menu vlastní rychlosti se zobrazuje
Menu vlastní rychlosti se nezobrazuje
+ Obnovit staré menu rychlosti přehrávání
+ Zobrazeno staré menu rychlosti
+ Zobrazeno moderní menu rychlosti
Vlastní rychlosti přehrávání
Přidat nebo změnit vlastní rychlosti přehrávání
Vlastní rychlosti musí být menší než %s
diff --git a/patches/src/main/resources/addresources/values-da-rDK/strings.xml b/patches/src/main/resources/addresources/values-da-rDK/strings.xml
index f6318994f9..2cba9544fb 100644
--- a/patches/src/main/resources/addresources/values-da-rDK/strings.xml
+++ b/patches/src/main/resources/addresources/values-da-rDK/strings.xml
@@ -1467,10 +1467,18 @@ Aktivering af dette kan låse op for højere videokvalitet"
Knappen vises. Tryk og hold for at nulstille afspilningshastigheden til standard.
Knap vises ikke
+
+ Vis videokvalitetsknap
+ Knap vises. Tryk og hold nede for at nulstille kvaliteten til standard
+ Knappen vises ikke
+
Tilpasset afspilningshastighed menu
Tilpasset hastighed menu er vist
Brugerdefineret hastighedsmenu vises ikke
+ Gendan gammel afspilningshastighedsmenu
+ Gammel hastighedsmenu vises
+ Moderne hastighedsmenu vises
Tilpasset afspilningshastighed
Tilføj eller ændr den brugerdefinerede afspilningshastighed
Brugerdefinerede hastigheder skal være mindre end %s
diff --git a/patches/src/main/resources/addresources/values-de-rDE/strings.xml b/patches/src/main/resources/addresources/values-de-rDE/strings.xml
index 082ea81fc0..698cccf97b 100644
--- a/patches/src/main/resources/addresources/values-de-rDE/strings.xml
+++ b/patches/src/main/resources/addresources/values-de-rDE/strings.xml
@@ -1460,10 +1460,18 @@ Durch Aktivieren dieser Option können höhere Videoqualitäten freigeschaltet w
Die Schaltfläche wird angezeigt. Tippen und halten, um die Wiedergabegeschwindigkeit auf die Standardeinstellung zurückzusetzen.
Button wird nicht angezeigt
+
+ Videoqualität-Schaltfläche anzeigen
+ Schaltfläche wird angezeigt. Tippen und halten, um die Qualität auf Standard zurückzusetzen
+ Schaltfläche wird nicht angezeigt
+
Benutzerdefiniertes Wiedergabegeschwindigkeitsmenü
Benutzerdefiniertes Geschwindigkeitsmenü wird angezeigt
Benutzerdefiniertes Geschwindigkeitsmenü wird nicht angezeigt
+ Altes Wiedergabegeschwindigkeitsmenü wiederherstellen
+ Altes Geschwindigkeitsmenü wird angezeigt
+ Modernes Geschwindigkeitsmenü wird angezeigt
Benutzerdefinierte Wiedergabegeschwindigkeiten
Hinzufügen oder Ändern der benutzerdefinierten Wiedergabegeschwindigkeit
Benutzerdefinierte Geschwindigkeiten müssen kleiner als %s sein
diff --git a/patches/src/main/resources/addresources/values-el-rGR/strings.xml b/patches/src/main/resources/addresources/values-el-rGR/strings.xml
index 0808a28f19..1d8a2729ba 100644
--- a/patches/src/main/resources/addresources/values-el-rGR/strings.xml
+++ b/patches/src/main/resources/addresources/values-el-rGR/strings.xml
@@ -1464,10 +1464,18 @@ Second \"item\" text"
Το κουμπί εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ταχύτητας αναπαραγωγής στην προεπιλογή
Το κουμπί δεν εμφανίζεται
+
+ Εμφάνιση κουμπιού αλλαγής ποιότητας βίντεο
+ Το κουμπί εμφανίζεται. Πατήστε παρατεταμένα για επαναφορά της ποιότητας στην προεπιλογή
+ Το κουμπί δεν εμφανίζεται
+
Μενού προσαρμοσμένης ταχύτητας αναπαραγωγής
Το μενού προσαρμοσμένης ταχύτητας αναπαραγωγής εμφανίζεται
Το μενού προσαρμοσμένης ταχύτητας αναπαραγωγής δεν εμφανίζεται
+ Επαναφορά παλιού μενού ταχύτητας αναπαραγωγής
+ Το παλιό μενού ταχύτητας εμφανίζεται
+ Το σύγχρονο μενού ταχύτητας εμφανίζεται
Προσαρμοσμένες ταχύτητες αναπαραγωγής
Προσθέστε ή αλλάξτε τις προσαρμοσμένες ταχύτητες αναπαραγωγής
Οι ταχύτητες πρέπει να είναι μικρότερες από %sx
diff --git a/patches/src/main/resources/addresources/values-es-rES/strings.xml b/patches/src/main/resources/addresources/values-es-rES/strings.xml
index 29564bed67..e54453127b 100644
--- a/patches/src/main/resources/addresources/values-es-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-es-rES/strings.xml
@@ -1456,10 +1456,18 @@ Habilitar esto puede desbloquear calidades de vídeo más altas"
Se muestra el botón. Mantén pulsado para restablecer la velocidad de reproducción predeterminada
El botón no se muestra
+
+ Mostrar botón de calidad de video
+ Botón visible. Toca y mantén para restablecer la calidad a los valores predeterminados
+ Botón no visible
+
Menú de velocidad de reproducción personalizada
Menú de velocidad personalizado se muestra
Menú de velocidad personalizado no se muestra
+ Restaurar el menú de velocidad de reproducción antiguo
+ Se muestra el menú de velocidad antiguo
+ Se muestra el menú de velocidad moderno
Velocidades de reproducción personalizadas
Añadir o cambiar las velocidades de reproducción personalizadas
Las velocidades personalizadas deben ser menores que %s
diff --git a/patches/src/main/resources/addresources/values-et-rEE/strings.xml b/patches/src/main/resources/addresources/values-et-rEE/strings.xml
index d4649b60ed..720e43dd9d 100644
--- a/patches/src/main/resources/addresources/values-et-rEE/strings.xml
+++ b/patches/src/main/resources/addresources/values-et-rEE/strings.xml
@@ -1465,10 +1465,18 @@ Selle lubamine võib avada kõrgema video kvaliteedi"
Nupp on nähtaval. Puudutage ja hoidke all, et taastada taasesituse kiirus vaikeväärtusele
Nuppi ei kuvata
+
+ Näita video kvaliteedi nuppu
+ Nupp on nähtaval. Kvaliteedi lähtestamiseks vaikeseadeteks puudutage ja hoidke
+ Nuppu ei kuvata
+
Kohandatud taasesituse kiiruse menüü
Kohandatud kiiruse menüü kuvatakse
Kohandatud kiiruse menüüd ei kuvata
+ Taasta vana taasesituse kiiruse menüü
+ Kuvatakse vana kiiruse menüü
+ Kuvatakse kaasaegne kiiruse menüü
Kohandatud taasesituse kiirused
Lisa või muuda kohandatud taasesituse kiirusi
Kohandatud kiirused peavad olema alla %s
diff --git a/patches/src/main/resources/addresources/values-eu-rES/strings.xml b/patches/src/main/resources/addresources/values-eu-rES/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-eu-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-eu-rES/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml
index a231e65ccd..f95959ae4e 100644
--- a/patches/src/main/resources/addresources/values-fa-rIR/strings.xml
+++ b/patches/src/main/resources/addresources/values-fa-rIR/strings.xml
@@ -272,6 +272,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml
index edd6a975db..fbd4cef6a8 100644
--- a/patches/src/main/resources/addresources/values-fi-rFI/strings.xml
+++ b/patches/src/main/resources/addresources/values-fi-rFI/strings.xml
@@ -1465,10 +1465,18 @@ Tämä voi avata korkealaatuisemmat videot"
Painike näytetään. Napauta ja pidä pohjassa palauttaaksesi soiton nopeuden oletukseksi
Painiketta ei näytetä
+
+ Näytä videolaatupainike
+ Painike näkyy. Paina pitkään palauttaaksesi laadun oletukseksi
+ Painiketta ei näytetä
+
Mukautettu toistonopeusvalikko
Mukautettu nopeusvalikko näytetään
Mukautettua nopeusvalikkoa ei näytetä
+ Palauta vanha toistonopeusvalikko
+ Vanha nopeusvalikko näytetään
+ Moderni nopeusvalikko näytetään
Mukautetut toistonopeudet
Lisää tai muuta mukautettuja toistonopeuksia
Mukautettujen nopeuksien tulee olla alle %s
diff --git a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml
index 8ed1831a8d..b770c938ae 100644
--- a/patches/src/main/resources/addresources/values-fil-rPH/strings.xml
+++ b/patches/src/main/resources/addresources/values-fil-rPH/strings.xml
@@ -1463,10 +1463,18 @@ Ang pagpapagana nito ay maaaring magbukas ng mas mataas na kalidad ng video"Ipinapakita ang button. I-tap at i-hold para i-reset ang bilis ng pag-playback sa default
Hindi ipinapakita ang button
+
+ Ipakita ang button ng kalidad ng video
+ Nakalabas ang button. Pindutin nang matagal para ibalik sa default ang kalidad
+ Hindi ipinapakita ang buton
+
Menu ng pasadyang bilis ng pag-playback
Ipinapakita ang menu ng pasadyang bilis
Hindi ipinapakita ang menu ng pasadyang bilis
+ Ibalik ang lumang menu ng bilis ng pag-playback
+ Ipinapakita ang lumang menu ng bilis
+ Ipinapakita ang modernong menu ng bilis
Mga custom na bilis ng pag-playback
Magdagdag o baguhin ang mga pasadyang bilis ng pag-playback
Ang mga custom na bilis ay dapat na mas mababa sa %s
diff --git a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml
index 436db2b0a6..c8b02bf0f6 100644
--- a/patches/src/main/resources/addresources/values-fr-rFR/strings.xml
+++ b/patches/src/main/resources/addresources/values-fr-rFR/strings.xml
@@ -1466,10 +1466,18 @@ Activer cette option peut déverrouiller des qualités vidéo supérieures"Le bouton est affiché. Appuyez longuement dessus pour rétablir la vitesse de lecture par défaut.
Le bouton n\'est pas affiché
+
+ Afficher le bouton de qualité vidéo
+ Le bouton est affiché. Appuyez longuement pour rétablir la qualité par défaut.
+ Le bouton n\'est pas affiché
+
Menu de vitesse de lecture personnalisée
Le menu de vitesse personnalisée est affiché
Le menu de vitesse personnalisée n\'est pas affiché
+ Restaurer l\'ancien menu de vitesse de lecture
+ L\'ancien menu de vitesse est affiché
+ Le menu de vitesse moderne est affiché
Vitesses de lecture personnalisées
Ajouter ou modifier les vitesses de lecture personnalisées
Il doit y avoir moins de %s vitesses personnalisées
diff --git a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml
index 9051285d77..9a4fe8f466 100644
--- a/patches/src/main/resources/addresources/values-ga-rIE/strings.xml
+++ b/patches/src/main/resources/addresources/values-ga-rIE/strings.xml
@@ -1465,10 +1465,18 @@ Is féidir le seo caighdeáin físeáin níos airde a dhíghlasáil"
Taispeántar an cnaipe. Tapáil agus coinnigh chun luas athsheinm a athshocrú go réamhshocrú
Ní thaispeántar an cnaipe
+
+ Taispeáin cnaipe cáilíochta físeáin
+ Tá cnaipe le feiceáil. Tapáil agus coinnigh chun cáilíocht a athshocrú mar réamhshocrú
+ Níl cnaipe le feiceáil
+
Roghchlár luas athsheinm saincheaptha
Taispeántar roghchlár luais saincheaptha
Ní thaispeántar roghchlár luais saincheaptha
+ Athchóirigh an seanchalafort luais athsheinm
+ Tá an seanchalafort luais taispeánta
+ Tá an calafort luais nua-aimseartha taispeánta
Luas athsheinm saincheaptha
Cuir leis nó athraigh na luasanna athsheinm saincheaptha
Ní mór luas saincheaptha a bheith níos lú ná %s
diff --git a/patches/src/main/resources/addresources/values-gl-rES/strings.xml b/patches/src/main/resources/addresources/values-gl-rES/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-gl-rES/strings.xml
+++ b/patches/src/main/resources/addresources/values-gl-rES/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-gu-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-gu-rIN/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-hi-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-hi-rIN/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-hr-rHR/strings.xml
+++ b/patches/src/main/resources/addresources/values-hr-rHR/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml
index 4936aab72c..47ec578cb6 100644
--- a/patches/src/main/resources/addresources/values-hu-rHU/strings.xml
+++ b/patches/src/main/resources/addresources/values-hu-rHU/strings.xml
@@ -1462,10 +1462,18 @@ Ez a beállítás lehetővé teszi a magasabb videóminőségek feloldását"A gomb látható. Tartsa lenyomva a lejátszási sebesség alapértelmezettre állításához
A gomb nem látható
+
+ Videóminőség gomb megjelenítése
+ A gomb látható. Tartsa lenyomva a minőséget az alapértelmezettre visszaállításához
+ A gomb nem látható
+
Egyedi lejátszási sebesség menü
Megjelenik az egyéni sebesség menü
Az egyéni sebesség menü nem jelenik meg
+ Régi lejátszási sebesség menü visszaállítása
+ A régi sebességmenü megjelenik
+ A modern sebességmenü megjelenik
Egyedi lejátszási sebesség
Egyéni lejátszási sebesség hozzáadása vagy módosítása
Az egyéni sebességeknek kevesebbnek kell lenniük, mint %s
diff --git a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml
index 9ced3529c0..fa43eddd79 100644
--- a/patches/src/main/resources/addresources/values-hy-rAM/strings.xml
+++ b/patches/src/main/resources/addresources/values-hy-rAM/strings.xml
@@ -1466,10 +1466,18 @@ Mini-player-ը կարող է գրավվել էկրանից դուրս՝ դեպի
Կոճակը ցուցադրվում է: Հպեք և պահեք՝ նվագարկման արագությունը լռելյայնի վերականգնելու համար
Կոճակը չի ցուցադրվում
+
+ Ցուցադրել տեսանյութի որակի կոճակը
+ Կոճակը ցուցադրված է։ Հպեք և պահեք՝ որակը լռելյայնին վերականգնելու համար
+ Կոճակը ցուցադրված չէ։
+
Տեսանյութի արագության հարմարեցված մենյու
Հարմարեցված արագության մենյուը ցուցադրվում է
Հարմարեցված արագության մենյուը չի ցուցադրվում
+ Վերականգնել հին նվագարկման արագության ընտրացանկը
+ Ցուցադրվում է հին արագության ընտրացանկը
+ Ցուցադրվում է ժամանակակից արագության ընտրացանկը
Տեսանյութի վերարտադրման հարմարեցված արագություններ
Ավելացնել կամ փոփոխել տեսանյութի վերարտադրման հարմարեցված արագությունները
Պատրաստված արագությունները պետք է լինեն ավելի քիչ քան %s
diff --git a/patches/src/main/resources/addresources/values-in-rID/strings.xml b/patches/src/main/resources/addresources/values-in-rID/strings.xml
index c9b67ee883..5f873731c4 100644
--- a/patches/src/main/resources/addresources/values-in-rID/strings.xml
+++ b/patches/src/main/resources/addresources/values-in-rID/strings.xml
@@ -1464,10 +1464,18 @@ Mengaktifkan ini dapat membuka kualitas video yang lebih tinggi"
Tombol ditampilkan. Ketuk dan tahan untuk mengatur ulang kecepatan pemutaran ke bawaan
Tombol tidak ditampilkan
+
+ Tampilkan tombol kualitas video
+ Tombol ditampilkan. Ketuk dan tahan untuk mengatur ulang kualitas ke bawaan
+ Tombol tidak ditampilkan
+
Menu kecepatan pemutaran khusus
Menu kecepatan khusus ditampilkan
Menu kecepatan khusus tidak ditampilkan
+ Pulihkan menu kecepatan pemutaran lama
+ Menu kecepatan lama ditampilkan
+ Menu kecepatan modern ditampilkan
Kecepatan pemutaran khusus
Tambah atau ubah kecepatan pemutaran khusus
Kecepatan khusus harus kurang dari %s
diff --git a/patches/src/main/resources/addresources/values-is-rIS/strings.xml b/patches/src/main/resources/addresources/values-is-rIS/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-is-rIS/strings.xml
+++ b/patches/src/main/resources/addresources/values-is-rIS/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-it-rIT/strings.xml b/patches/src/main/resources/addresources/values-it-rIT/strings.xml
index 07b3efa33b..acea8edd9c 100644
--- a/patches/src/main/resources/addresources/values-it-rIT/strings.xml
+++ b/patches/src/main/resources/addresources/values-it-rIT/strings.xml
@@ -1464,10 +1464,18 @@ Abilitare questa opzione può sbloccare qualità video più elevate"
Il pulsante è visualizzato. Tieni premuto per ripristinare la velocità di riproduzione predefinita
Il pulsante non è visibile
+
+ Mostra il pulsante qualità video
+ Il pulsante è visualizzato. Tocca e tieni premuto per ripristinare la qualità predefinita
+ Il pulsante non è visibile.
+
Menu di velocità di riproduzione personalizzato
Il menu di velocità personalizzato è visibile
Il menu di velocità personalizzato non è visibile
+ Ripristina il vecchio menu della velocità di riproduzione
+ Il vecchio menu della velocità è mostrato
+ Il menu della velocità moderno è mostrato
Velocità di riproduzione personalizzate
Aggiungi o modifica la velocità di riproduzione personalizzata
Le velocità personalizzate devono essere inferiori a %s
diff --git a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml
index 5218aca9c8..dffb5d3403 100644
--- a/patches/src/main/resources/addresources/values-iw-rIL/strings.xml
+++ b/patches/src/main/resources/addresources/values-iw-rIL/strings.xml
@@ -1467,10 +1467,18 @@ Second \"item\" text"
הלחצן מוצג. יש להקיש ולהחזיק כדי לאפס את מהירות ההפעלה לברירת מחדל
הלחצן אינו מוצג
+
+ הצג כפתור איכות וידאו
+ הלחצן מוצג. גע והחזק כדי לאפס את האיכות לברירת מחדל
+ הלחצן אינו מוצג
+
תפריט מהירות הפעלה מותאם אישית
תפריט מהירות מותאם אישית מוצג
תפריט מהירות מותאם אישית אינו מוצג
+ שחזר תפריט מהירות השמעה ישן
+ תפריט מהירות ישן מוצג
+ תפריט מהירות מודרני מוצג
מהירויות הפעלה מותאמות אישית
הוסף או שנה את המהירויות הפעלה המותאמות אישית
מהירויות מותאמות אישית חייבות להיות קטנות מ-%s
diff --git a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml
index 711697e765..d6ba2831ae 100644
--- a/patches/src/main/resources/addresources/values-ja-rJP/strings.xml
+++ b/patches/src/main/resources/addresources/values-ja-rJP/strings.xml
@@ -475,9 +475,9 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
その他
アプリがインストールされていません
%s はインストールされていません。インストールしてください。
- "パッケージ名 %s のインストール済みアプリが見つかりませんでした
+ "パッケージ名「%s」のインストール済みアプリが見つかりませんでした
-パッケージ名が正しいこと、およびアプリがインストールされていることを確認してください"
+パッケージ名が正しいこと、アプリがインストールされていることを確認してください"
パッケージ名は空欄にはできません
@@ -965,7 +965,7 @@ GmsCore の電池の最適化を無効にしても、バッテリーの使用に
シークバー サムネイルは、動画の再生中の画質と同じ画質になります。
この機能は、非常に高速なインターネット接続を使用して 720P 以下の画質で動画を視聴する場合に最適です。"
- シーク中のサムネイルを旧バージョンに戻す
+ 古いシークバー サムネイルを復元
シーク中のサムネイルはシークバーの上に表示されます
シーク中のサムネイルはプレーヤー画面全体に表示されます
@@ -1199,8 +1199,8 @@ Automotive レイアウト
再び無効にする場合には、UI のバグを防ぐためにアプリデータを消去することをお勧めします。"
アプリバージョン
- 19.35.36 - ショート動画プレーヤーのアイコンが旧バージョン
- 19.01.34 - ナビゲーション アイコンが旧バージョン
+ 19.35.36 - 古いショート プレーヤーのアイコンを復元
+ 19.01.34 - 古いナビゲーション アイコンを復元
スタート画面を変更
@@ -1348,8 +1348,8 @@ Automotive レイアウト
詳細については、ここをタップしてください"
API 利用不可時にトーストを表示
- DeArrow が利用できない場合は、トーストポップアップが表示されます
- DeArrow が利用できない場合でも、トースト ポップアップは表示されません
+ DeArrow が利用できない場合にトースト通知が表示されます
+ DeArrow が利用できない場合にトースト通知は表示されません
DeArrow API のエンドポイント
DeArrow がサムネイルのキャッシュを取得するエンドポイントの URL
静止画サムネイル
@@ -1461,18 +1461,26 @@ Automotive レイアウト
ショートの画質 (%1$s): %2$s
- 再生速度設定ボタンを表示する
- ボタンはオーバーレイに表示されます。長押しすると、再生速度がデフォルトの値にリセットされます
+ 再生速度設定ボタンを表示
+ ボタンがオーバーレイに表示されます。長押しすると、再生速度がデフォルトの値にリセットされます
ボタンはオーバーレイに表示されません
+
+ 画質設定ボタンを表示
+ ボタンがオーバーレイに表示されます。長押しすると、画質がデフォルトの値にリセットされます
+ ボタンはオーバーレイに表示されません
+
- カスタムした再生速度リストを使用する
- カスタムした再生速度リストが表示されます
- デフォルトの再生速度リストが表示されます
+ カスタム再生速度メニュー
+ カスタム再生速度リストが再生速度メニューに表示されます
+ デフォルトの再生速度リストが再生速度メニューに表示されます
+ 古い再生速度メニューを復元
+ 古いスタイルの再生速度メニューが表示されます
+ 新しいスタイルの再生速度メニューが表示されます
カスタム再生速度リスト
- カスタム再生速度リストを編集します
+ カスタム再生速度を追加または変更します
再生速度は %s 未満である必要があります
- カスタム再生速度リストが無効です
+ カスタム再生速度が無効です
自動
長押し倍速再生の速度
再生速度の範囲は 0-8 で、0 および 8 は含まれません
@@ -1493,9 +1501,9 @@ Automotive レイアウト
HDR 動画は有効です
スライドしてシークする機能を有効にする
diff --git a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-ka-rGE/strings.xml
+++ b/patches/src/main/resources/addresources/values-ka-rGE/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml
+++ b/patches/src/main/resources/addresources/values-kk-rKZ/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-km-rKH/strings.xml b/patches/src/main/resources/addresources/values-km-rKH/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-km-rKH/strings.xml
+++ b/patches/src/main/resources/addresources/values-km-rKH/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml
index f97427db6c..b02eb27462 100644
--- a/patches/src/main/resources/addresources/values-kn-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-kn-rIN/strings.xml
@@ -237,6 +237,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml
index 40bfe98170..b00e3ac5d1 100644
--- a/patches/src/main/resources/addresources/values-ko-rKR/strings.xml
+++ b/patches/src/main/resources/addresources/values-ko-rKR/strings.xml
@@ -207,9 +207,9 @@ MicroG 앱 배터리 최적화를 비활성화(제한 없음)하더라도, 배
설문 조사 숨기기
설문 조사가 숨겨집니다
설문 조사가 표시됩니다
- 콘서트 선반 숨기기
- 콘서트 선반이 숨겨집니다
- 콘서트 선반이 표시됩니다
+ 콘서트 티켓 선반 숨기기
+ 콘서트 티켓 선반이 숨겨집니다
+ 콘서트 티켓 선반이 표시됩니다
동영상 추천 라벨 숨기기
검색 결과에서 다음 라벨이 숨겨집니다:\n• 시청자가 이 동영상도 시청함\n• 내가 좋아할 만한 동영상
@@ -1472,10 +1472,18 @@ DeArrow에 대해 자세히 알아보려면 여기를 누르세요"
버튼을 표시합니다\n\n• 버튼을 길게 누르면 동영상 재생 속도가 기본값으로 초기화됩니다
버튼을 표시하지 않습니다
+
+ 동영상 화질 버튼 표시하기
+ 버튼을 표시합니다\n\n• 버튼을 길게 누르면 화질이 기본값으로 초기화됩니다
+ 버튼을 표시하지 않습니다
+
사용자 정의 동영상 재생 속도 활성화하기
사용자 정의 동영상 재생 속도를 활성화합니다
사용자 정의 동영상 재생 속도를 비활성화합니다
+ 이전 재생 속도 메뉴 복원하기
+ 이전 재생 속도 메뉴가 표시됩니다
+ 모던 재생 속도 메뉴가 표시됩니다
사용자 정의 동영상 재생 속도 편집하기
동영상 재생 속도 값을 추가 또는 변경할 수 있습니다
재생 속도 값은 %s배속보다 작아야 합니다
diff --git a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-ky-rKG/strings.xml
+++ b/patches/src/main/resources/addresources/values-ky-rKG/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-lo-rLA/strings.xml
+++ b/patches/src/main/resources/addresources/values-lo-rLA/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml
index aa4fbf2028..20e2d8801d 100644
--- a/patches/src/main/resources/addresources/values-lt-rLT/strings.xml
+++ b/patches/src/main/resources/addresources/values-lt-rLT/strings.xml
@@ -1464,10 +1464,18 @@ Gali būti atrakinta aukštesnės vaizdo įrašų kokybės, bet galite patirti v
Mygtukas rodomas. Palieskite ir palaikykite, kad atkūrimo greitį nustatytumėte į numatytąjį.
Mygtukas nerodomas
+
+ Rodyti vaizdo kokybės mygtuką
+ Mygtukas rodomas. Palaikykite nuspaudę, kad atstatytumėte kokybę į numatytąją
+ Mygtukas nerodomas
+
Tinkintas atkūrimo greičio meniu
Tinkintas greičio meniu rodomas
Tinkintas greičio meniu nerodomas
+ Atkurti seną atkūrimo greičio meniu
+ Rodomas senas greičio meniu
+ Rodomas modernus greičio meniu
Tinkintas atkūrimo greitis
Pridėti arba pakeisti tinkintą atkūrimo greitį
Pasirinktinis greitis turi būti mažesnis nei %s
diff --git a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml
index 7b99a31015..a9189360fe 100644
--- a/patches/src/main/resources/addresources/values-lv-rLV/strings.xml
+++ b/patches/src/main/resources/addresources/values-lv-rLV/strings.xml
@@ -1466,10 +1466,18 @@ Var tikt atbloķētas augstākas video kvalitātes, taču var rasties video atsk
Poga ir redzama. Pieskarieties un turiet, lai atiestatītu atskaņošanas ātrumu uz noklusējuma
Poga netiek rādīta
+
+ Rādīt video kvalitātes pogu
+ Poga tiek rādīta. Pieskarieties un turiet, lai atiestatītu kvalitāti uz noklusējuma
+ Poga netiek rādīta
+
Pielāgotas atskaņošanas ātruma izvēlne
Pielāgotas ātruma izvēlne tiek rādīta
Pielāgotas ātruma izvēlne netiek rādīta
+ Atjaunot veco atskaņošanas ātruma izvēlni
+ Tiek rādīta vecā ātruma izvēlne
+ Tiek rādīta modernā ātruma izvēlne
Pielāgotie atskaņošanas ātrumi
Pievienojiet vai mainiet pielāgotos atskaņošanas ātrumus
Pielāgoti ātrumi ir jābūt mazākiem par %s
diff --git a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-mk-rMK/strings.xml
+++ b/patches/src/main/resources/addresources/values-mk-rMK/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-ml-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-ml-rIN/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-mn-rMN/strings.xml
+++ b/patches/src/main/resources/addresources/values-mn-rMN/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-mr-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-mr-rIN/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml
index 030cd27fb0..8a05db94e9 100644
--- a/patches/src/main/resources/addresources/values-ms-rMY/strings.xml
+++ b/patches/src/main/resources/addresources/values-ms-rMY/strings.xml
@@ -223,6 +223,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-my-rMM/strings.xml b/patches/src/main/resources/addresources/values-my-rMM/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-my-rMM/strings.xml
+++ b/patches/src/main/resources/addresources/values-my-rMM/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-nb-rNO/strings.xml
+++ b/patches/src/main/resources/addresources/values-nb-rNO/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml
index 7fe0f179cc..8289dca4e2 100644
--- a/patches/src/main/resources/addresources/values-ne-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-ne-rIN/strings.xml
@@ -21,6 +21,8 @@ Second \"item\" text"
+ ReVanced Manager द्वारा स्थापित छैन
+ APK निर्माण मिति खराब भएको छ
@@ -222,6 +224,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml
index ca4b0d8941..43ddc32b8a 100644
--- a/patches/src/main/resources/addresources/values-nl-rNL/strings.xml
+++ b/patches/src/main/resources/addresources/values-nl-rNL/strings.xml
@@ -1463,10 +1463,18 @@ Het inschakelen hiervan kan hogere videokwaliteiten ontgrendelen"
De knop wordt weergegeven. Tik en houd vast om de afspeelsnelheid terug te zetten naar de standaardwaarde
Knop wordt niet weergegeven
+
+ Toon videokwaliteitknop
+ Knop wordt weergegeven. Tik en houd vast om de kwaliteit terug te zetten naar standaard
+ Knop wordt niet weergegeven
+
Menu voor aangepaste afspeelsnelheid
Menu voor aangepaste snelheid wordt weergegeven
Menu voor aangepaste snelheid wordt niet weergegeven
+ Oud afspeelsnelheidsmenu herstellen
+ Oud snelheidsmenu wordt getoond
+ Modern snelheidsmenu wordt getoond
Aangepaste afspeelsnelheden
Voeg aangepaste afspeelsnelheden toe of wijzig ze
Aangepaste snelheden moeten lager zijn dan %s
diff --git a/patches/src/main/resources/addresources/values-or-rIN/strings.xml b/patches/src/main/resources/addresources/values-or-rIN/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-or-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-or-rIN/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-pa-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-pa-rIN/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml
index cde7076ac4..76e5de4ac4 100644
--- a/patches/src/main/resources/addresources/values-pl-rPL/strings.xml
+++ b/patches/src/main/resources/addresources/values-pl-rPL/strings.xml
@@ -1461,10 +1461,18 @@ Włączenie tego może odblokować wyższe jakości wideo"
Przycisk jest widoczny. Dotknij i przytrzymaj, aby zresetować prędkość odtwarzania do domyślnej
Przycisk nie jest widoczny
+
+ Pokaż przycisk jakości wideo
+ Przycisk jest widoczny. Dotknij i przytrzymaj, aby zresetować jakość do wartości domyślnych
+ Przycisk nie jest widoczny
+
Niestandardowe menu prędkości odtwarzania
Niestandardowe menu prędkości jest widoczne
Niestandardowe menu prędkości nie jest widoczne
+ Przywróć stare menu prędkości odtwarzania
+ Pokazane jest stare menu prędkości
+ Pokazane jest nowoczesne menu prędkości
Niestandardowe prędkości odtwarzania
Dodaj lub zmień niestandardowe prędkości odtwarzania
Prędkości niestandardowe muszą być mniejsze niż %s
diff --git a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml
index 725d38105d..ecaebb0abd 100644
--- a/patches/src/main/resources/addresources/values-pt-rBR/strings.xml
+++ b/patches/src/main/resources/addresources/values-pt-rBR/strings.xml
@@ -1464,10 +1464,18 @@ Habilitar isso pode desbloquear qualidades de vídeo mais altas"
O botão é exibido. Toque e mantenha pressionado para redefinir a velocidade de reprodução para o padrão
Botão não está visível
+
+ Mostrar botão de qualidade de vídeo
+ O botão é exibido. Toque e segure para redefinir a qualidade para o padrão
+ O botão não é exibido
+
Menu de velocidade de reprodução personalizado
O menu de velocidade personalizado é mostrado
O menu de velocidade personalizado não é mostrado
+ Restaurar menu antigo de velocidade de reprodução
+ Menu antigo de velocidade de reprodução é exibido
+ Menu moderno de velocidade de reprodução é exibido
Velocidade de reprodução personalizada
Adicionar ou mudar as velocidades de reprodução personalizadas
Velocidades personalizadas devem ser menores que %s
diff --git a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml
index bbeaf27eb2..e8a9d139a4 100644
--- a/patches/src/main/resources/addresources/values-pt-rPT/strings.xml
+++ b/patches/src/main/resources/addresources/values-pt-rPT/strings.xml
@@ -1465,10 +1465,18 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"O botão é mostrado. Toque e segure para redefinir a velocidade de reprodução para o padrão
O botão não está visível
+
+ Mostrar botão de qualidade de vídeo
+ O botão é exibido. Toque e segure para redefinir a qualidade para o padrão
+ O botão não é exibido
+
Menu personalizado de velocidade de reprodução
O menu de velocidade personalizado é exibido
O menu de velocidade personalizado não é mostrado
+ Restaurar menu antigo de velocidade de reprodução
+ Menu antigo de velocidade é exibido
+ Menu moderno de velocidade é exibido
Velocidade de reprodução personalizada
Adicionar ou alterar as velocidades de reprodução personalizadas
Tốc độ tùy chỉnh phải nhỏ hơn %s
diff --git a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml
index 2db750e492..8d96015198 100644
--- a/patches/src/main/resources/addresources/values-ro-rRO/strings.xml
+++ b/patches/src/main/resources/addresources/values-ro-rRO/strings.xml
@@ -1464,10 +1464,18 @@ Activarea acestei opțiuni poate debloca calități video mai mari"
Butonul este afișat. Atingeți și mențineți apăsat pentru a reseta viteza de redare la cea implicită
Butonul nu este afișat
+
+ Afișați butonul de calitate video
+ Butonul este afișat. Atingeți și mențineți apăsat pentru a reseta calitatea la valoarea implicită
+ Butonul nu este afișat.
+
Meniu de redare personalizat
Meniul de viteză personalizat este afișat
Meniul de viteză personalizat nu este afișat
+ Restaurare meniu vechi de viteză de redare
+ Meniul vechi de viteză este afișat
+ Meniul modern de viteză este afișat
Viteze de redare personalizate
Adaugă sau modifică vitezele de redare personalizate
Vitezele personalizate trebuie să fie mai mici de %s
diff --git a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml
index f6eee316c3..0c25ad385e 100644
--- a/patches/src/main/resources/addresources/values-ru-rRU/strings.xml
+++ b/patches/src/main/resources/addresources/values-ru-rRU/strings.xml
@@ -1472,10 +1472,18 @@ Second \"item\" text"
Кнопка показана. Нажмите и удерживайте, чтобы сбросить скорость воспроизведения до значения по умолчанию
Кнопка выбора скорости воспроизведения скрыта
+
+ Показать кнопку качества видео
+ Кнопка показана. Нажмите и удерживайте, чтобы сбросить качество до значения по умолчанию
+ Кнопка выбора скорости воспроизведения скрыта
+
Показать кастомное меню скорости
Кастомное меню скорости воспроизведения показано
Кастомное меню скорости воспроизведения скрыто
+ Восстановить старое меню скорости воспроизведения
+ Старое меню скорости показано
+ Современное меню скорости показано
Кастомные скорости воспроизведения
Добавить или изменить кастомные скорости воспроизведения
Кастомные скорости должны быть меньше, чем %s
diff --git a/patches/src/main/resources/addresources/values-si-rLK/strings.xml b/patches/src/main/resources/addresources/values-si-rLK/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-si-rLK/strings.xml
+++ b/patches/src/main/resources/addresources/values-si-rLK/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml
index 8ecbf1ff52..7edf222f5d 100644
--- a/patches/src/main/resources/addresources/values-sk-rSK/strings.xml
+++ b/patches/src/main/resources/addresources/values-sk-rSK/strings.xml
@@ -1458,10 +1458,18 @@ Povolením tejto možnosti môžete odomknúť vyššie kvality videa"
Zobrazuje sa tlačidlo. Ťuknite a podržte, ak chcete obnoviť predvolenú rýchlosť prehrávania
Tlačidlo nie je zobrazené
+
+ Zobraziť tlačidlo kvality videa
+ Tlačidlo sa zobrazí. Klepnite a podržte pre resetovanie kvality na predvolenú
+ Tlačidlo sa nezobrazuje
+
Menu vlastnej rýchlosti prehrávania
Menu vlastnej rýchlosti sa zobrazuje
Menu vlastnej rýchlosti sa nezobrazuje
+ Obnoviť staré menu rýchlosti prehrávania
+ Zobrazuje sa staré menu rýchlosti
+ Zobrazuje sa moderné menu rýchlosti
Vlastné rýchlosti prehrávania
Pridať alebo zmeň vlastné rýchlosti prehrávania
Vlastné rýchlosti musia byť menšie ako %s
diff --git a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml
index 493cc81779..503ce3a85d 100644
--- a/patches/src/main/resources/addresources/values-sl-rSI/strings.xml
+++ b/patches/src/main/resources/addresources/values-sl-rSI/strings.xml
@@ -1465,10 +1465,18 @@ Omogočanje tega lahko odklene višje kakovosti videa"
Gumb je prikazan. Dotaknite se ga in ga pridržite, da ponastavite hitrost predvajanja na privzeto.
Gumb ni prikazan
+
+ Prikaži gumb za kakovost videa
+ Prikazan je gumb. Dotaknite se in držite, da ponastavite kakovost na privzeto
+ Gumb ni prikazan
+
Meni za nastavitev hitrosti predvajanja
Meni za nastavitev hitrosti je prikazan
Meni za nastavitev hitrosti ni prikazan
+ Obnovi stari meni hitrosti predvajanja
+ Prikazan je stari meni hitrosti
+ Prikazan je sodoben meni hitrosti
Nastavitev hitrosti predvajanja po meri
Dodajte ali spremenite hitrosti predvajanja po meri
Hitrosti predvajanja po meri morajo biti manjše od %s
diff --git a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml
index bb43c9eeb6..fefafa9d4a 100644
--- a/patches/src/main/resources/addresources/values-sq-rAL/strings.xml
+++ b/patches/src/main/resources/addresources/values-sq-rAL/strings.xml
@@ -1463,10 +1463,18 @@ Aktivizimi i kësaj mund të zhbllokojë cilësi më të larta video"
Butoni shfaqet. Prekni dhe mbani për të rivendosur shpejtësinë e riprodhimit në atë të parazgjedhur
Butoni nuk shfaqet
+
+ Shfaq butonin e cilësisë së videos
+ Butoni shfaqet. Prekni dhe mbani shtypur për të rivendosur cilësinë në parazgjedhur
+ Butoni nuk shfaqet
+
Menyja e shpejtësisë së përsëritjes së përshtatshme
Menyja e shpejtësisë së përshtatshme shfaqet
Menyja e shpejtësisë së përshtatshme nuk shfaqet
+ Rivendos menunë e vjetër të shpejtësisë së riprodhimit
+ Menyja e vjetër e shpejtësisë shfaqet
+ Menyja moderne e shpejtësisë shfaqet
Shpejtësi të përsëritjes së përshtatshme
Shtoni ose ndryshoni shpejtësitë e përsëritjes së përshtatshme
Shpejtësitë e personalizuara duhet të jenë më të vogla se %s
diff --git a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml
index c43af89fea..f562a083fe 100644
--- a/patches/src/main/resources/addresources/values-sr-rCS/strings.xml
+++ b/patches/src/main/resources/addresources/values-sr-rCS/strings.xml
@@ -1464,10 +1464,18 @@ Ako ovo omogućite, mogu biti otključani viši kvaliteti videa"
Dugme je prikazano. Dodirnite i zadržite da biste vratili brzinu reprodukcije na podrazumevanu vrednost
Dugme dijaloga za brzinu nije prikazano
+
+ Prikaži dugme za kvalitet video zapisa
+ Dugme je prikazano. Dodirnite i zadržite za resetovanje kvaliteta na podrazumevano
+ Dugme nije prikazano
+
Meni prilagođene brzine reprodukcije
Meni prilagođene brzine reprodukcije je prikazan
Meni prilagođene brzine reprodukcije nije prikazan
+ Vrati stari meni za brzinu reprodukcije
+ Prikazan je stari meni brzine reprodukcije
+ Prikazan je moderni meni brzine reprodukcije
Prilagođene brzine reprodukcije
Dodajte ili promenite prilagođene brzine reprodukcije
Prilagođene brzine moraju biti manje od %s
diff --git a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml
index 704656a975..16d76c8a2f 100644
--- a/patches/src/main/resources/addresources/values-sr-rSP/strings.xml
+++ b/patches/src/main/resources/addresources/values-sr-rSP/strings.xml
@@ -1467,10 +1467,18 @@ Second \"item\" text"
Дугме је приказано. Додирните и задржите да бисте вратили брзину репродукције на подразумевану вредност
Дугме дијалога за брзину није приказано
+
+ Прикажи дугме за квалитет видеа
+ Дугме је приказано. Притисните и држите да бисте ресетовали квалитет на подразумевани
+ Дугме није приказано
+
Мени прилагођене брзине репродукције
Мени прилагођене брзине репродукције је приказан
Мени прилагођене брзине репродукције није приказан
+ Врати стари мени брзине репродукције
+ Приказан је стари мени брзине репродукције
+ Приказан је модерни мени брзине репродукције
Прилагођене брзине репродукције
Додајте или промените прилагођене брзине репродукције
Прилагођене брзине морају бити мање од %s
diff --git a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml
index 4881ccfc76..cc580ebd37 100644
--- a/patches/src/main/resources/addresources/values-sv-rSE/strings.xml
+++ b/patches/src/main/resources/addresources/values-sv-rSE/strings.xml
@@ -1464,10 +1464,18 @@ Om du aktiverar detta kan högre videokvaliteter låsas upp"
Knappen visas. Tryck länge för att återställa uppspelningshastigheten till standardhastigheten
Knappen visas inte
+
+ Visa videokvalitetsknapp
+ Knappen visas. Tryck länge för att återställa kvaliteten till standardkvaliteten
+ Knappen visas inte
+
Anpassad meny för uppspelningshastighet
Anpassad hastighetsmeny visas
Anpassad hastighetsmeny visas inte
+ Återställ gammal uppspelningshastighetsmeny
+ Den gamla hastighetsmenyn visas
+ Den moderna hastighetsmenyn visas
Anpassade uppspelningshastigheter
Lägg till eller ändra de anpassade uppspelningshastigheterna
Anpassade hastigheter måste vara mindre än %s
diff --git a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-sw-rKE/strings.xml
+++ b/patches/src/main/resources/addresources/values-sw-rKE/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-ta-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-ta-rIN/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-te-rIN/strings.xml b/patches/src/main/resources/addresources/values-te-rIN/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-te-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-te-rIN/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-th-rTH/strings.xml b/patches/src/main/resources/addresources/values-th-rTH/strings.xml
index 37df021ea2..a4245b734f 100644
--- a/patches/src/main/resources/addresources/values-th-rTH/strings.xml
+++ b/patches/src/main/resources/addresources/values-th-rTH/strings.xml
@@ -1467,10 +1467,18 @@ User id ของคุณเหมือนกับรหัสผ่าน
ปุ่มจะปรากฏขึ้น แตะค้างไว้เพื่อรีเซ็ตความเร็วในการเล่นเป็นค่าเริ่มต้น
ไม่แสดงปุ่ม
+
+ แสดงปุ่มคุณภาพวิดีโอ
+ แสดงปุ่มแล้ว แตะค้างไว้เพื่อรีเซ็ตคุณภาพเป็นค่าเริ่มต้น
+ ไม่ได้แสดงปุ่ม
+
เมนูกำหนดความเร็วในการเล่นแบบกำหนดเอง
แสดงเมนูกำหนดความเร็ว
ไม่แสดงเมนูกำหนดความเร็ว
+ คืนค่าเมนูความเร็วในการเล่นแบบเก่า
+ แสดงเมนูความเร็วแบบเก่า
+ แสดงเมนูความเร็วแบบใหม่
ความเร็วในการเล่นแบบกำหนดเอง
เพิ่มหรือเปลี่ยนความเร็วในการเล่นแบบกำหนดเอง
ความเร็วที่กําหนดเองต้องน้อยกว่า %s
diff --git a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml
index ab474ae585..362176aee9 100644
--- a/patches/src/main/resources/addresources/values-tr-rTR/strings.xml
+++ b/patches/src/main/resources/addresources/values-tr-rTR/strings.xml
@@ -299,28 +299,28 @@ Bir Doodle şu anda bölgenizde gösteriliyorsa ve bu gizleme ayarı açıksa, a
\'Sizin için\' rafını gizle
Sizin İçin rafı gizli
Sizin İçin rafı görünür
- Bağlantı önizlemesini gizle
- Bağlantı önizlemesi gizli
- Bağlantı önizlemesi görünür
+ Bağlantı ön izlemesini gizle
+ Bağlantı ön izlemesi gizli
+ Bağlantı ön izlemesi görünür
Üyeler rafını gizle
Üyeler rafı gizli
- Üyeler rafı gösteriliyor
+ Üyeler rafı görünür
\'Topluluğu Ziyaret Et\' düğmesini gizle
Topluluğu Ziyaret Et düğmesi gizli
Topluluğu Ziyaret Et düğmesi görünür
- Kanal sayfalarındaki \'Mağazayı ziyaret et\' düğmesini gizle
- Mağazayı Ziyaret Et düğmesi gizli
- Mağazayı Ziyaret Et düğmesi görünür
+ \'Mağazayı ziyaret et\' düğmesini gizle
+ Mağazayı ziyaret et düğmesi gizli
+ Mağazayı ziyaret et düğmesi görünür
Yorumlar
Yorumlar kısmı bileşenlerini gizle veya göster
Yapay zeka sohbet özetini gizle
Yapay zeka sohbet özeti gizli
- Yapay zeka sohbet özeti gösteriliyor
- Yapay zeka yorumlar özetini gizle
- Yapay zeka yorum özeti gizli
- Yapay zeka yorum özeti gösteriliyor
+ Yapay zeka sohbet özeti görünür
+ Yapay zeka yorumların özetini gizle
+ Yapay zeka yorumların özeti gizli
+ Yapay zeka yorumların özeti görünür
Kanal yönergelerini gizle
Kanal yönergeleri gizli
Kanal yönergeleri görünür
@@ -342,7 +342,7 @@ Bir Doodle şu anda bölgenizde gösteriliyorsa ve bu gizleme ayarı açıksa, a
Teşekkürler düğmesini gizle
Teşekkürler düğmesi gizli
Teşekkürler düğmesi görünür
- Zaman Damgası düğmesini gizle
+ Zaman damgası düğmesini gizle
Zaman damgası düğmesi gizli
Zaman damgası düğmesi görünür
Özel filtre
@@ -555,43 +555,43 @@ Ekranın sağ tarafında dikey olarak kaydırarak sesi ayarlayın"
Beğenme ve Beğenmeme düğmeleri gizli
Beğenme ve Beğenmeme düğmeleri görünür
- Paylaşmayı gizle
- Paylaşma düğmesi gizli
- Paylaşma düğmesi görünür
+ Paylaş\'ı gizle
+ Paylaş düğmesi gizli
+ Paylaş düğmesi görünür
- Reklamları Durdur\'u Gizle
- Reklamları durdur düğmesi gizlendi
- Reklamları durdur düğmesi gösterildi
+ Reklamları durdur\'u Gizle
+ Reklamları durdur düğmesi gizli
+ Reklamları durdur düğmesi görünür
- Bildirmeyi gizle
- Bildirme düğmesi gizli
- Bildirme düğmesi görünür
+ Bildir\'i gizle
+ Bildir düğmesi gizli
+ Bildir düğmesi görünür
- Remix düğmesini gizle
+ Remix\'i gizle
Remix düğmesi gizli
Remix düğmesi görünür
- İndirmeyi gizle
- İndirme düğmesi gizli
- İndirme düğmesi görünür
+ İndir\'i gizle
+ İndir düğmesi gizli
+ İndir düğmesi görünür
- Teşekkürler düğmesini gizle
+ Teşekkürler\'i gizle
Teşekkürler düğmesi gizli
Teşekkürler düğmesi görünür
- \'Sor\'u gizle
+ Sor\'u gizle
Sor düğmesi gizli
Sor düğmesi görünür
- Klip düğmesini gizle
+ Klip\'i gizle
Klip düğmesi gizli
Klip düğmesi görünür
Kaydet\'i Gizle
- Kaydet düğmesi gizlendi
- Kaydet düğmesi gösterildi
+ Kaydet düğmesi gizli
+ Kaydet düğmesi görünür
Gezinme düğmeleri
@@ -722,8 +722,8 @@ Ses parçası menüsünü göstermek için 'Video akışlarını taklit et' ayar
Tam ekranda ambiyans modunu devre dışı bırak
- Tam ekranda ambiyans modu devre dışı
- Tam ekranda ambiyans modu etkin
+ Ambiyans modu devre dışı
+ Ambiyans modu etkin
Bilgi kartlarını gizle
@@ -736,13 +736,13 @@ Ses parçası menüsünü göstermek için 'Video akışlarını taklit et' ayar
Kayan sayı animasyonları etkin
- Video oynatıcı kaydırma çubuğunu gizle
- Video oynatıcısındaki zaman çubuğu gizli
- Video oynatıcısındaki zaman çubuğu görünür
+ Video oynatıcısı zaman çubuğunu gizle
+ Video oynatıcısı zaman çubuğu gizli
+ Video oynatıcısı zaman çubuğu görünür
- Video küçük resimleri kaydırma çubuğunu gizle
- Video küçük resimleri kaydırma çubuğu gizli
- Video küçük resimleri kaydırma çubuğu gösteriliyor
+ Video kapak fotoğrafı zaman çubuğunu gizle
+ Video kapak fotoğrafı zaman çubuğu gizli
+ Video kapak fotoğrafı zaman çubuğu gösteriliyor
Shorts oynatıcı
@@ -751,22 +751,22 @@ Ses parçası menüsünü göstermek için 'Video akışlarını taklit et' ayar
Ana Sayfa akışında Shorts\'u gizle
Ana Sayfa akışında ve ilgili videolarda gizli
Ana Sayfa akışında ve ilgili videolarda görünür
- Arama sonuçlarında Shorts videolarını gizle
+ Arama sonuçlarında Shorts\'u gizle
Arama sonuçlarında gizli
Arama sonuçlarında görünür
Abonelikler akışında Shorts\'u gizle
Abonelikler akışında gizli
Abonelikler akışında görünür
- Shorts\'u izleme geçmişinde gizle
+ İzleme geçmişinde Shorts\'u gizle
İzleme geçmişinde gizli
İzleme geçmişinde görünür
Süper Teşekkürler düğmesini gizle
- Süper Teşekkürler satın al düğmesi gizli
- Süper Teşekkürler satın al düğmesi görünür
+ Süper Teşekkürler düğmesi gizli
+ Süper Teşekkürler düğmesi görünür
Efekt düğmesini gizle
Efekt düğmesi gizli
- Efekt düğmesi gösteriliyor
+ Efekt düğmesi görünür
Yeşil ekran düğmesini gizle
Yeşil ekran düğmesi gizli
Yeşil ekran düğmesi görünür
@@ -849,9 +849,9 @@ Ses parçası menüsünü göstermek için 'Video akışlarını taklit et' ayar
Video başlığı gizli
Video başlığı görünür
Ses bilgisi etiketini gizle
- Ses meta veri etiketi gizli
- Ses meta veri etiketi görünür
- Video bağlantı etiketini gizle
+ Ses bilgisi etiketi gizli
+ Ses bilgisi etiketi görünür
+ Video bağlantısı etiketini gizle
Video bağlantısı etiketi gizli
Video bağlantısı etiketi görünür
Gezinme çubuğunu gizle
@@ -864,12 +864,12 @@ Ses parçası menüsünü göstermek için 'Video akışlarını taklit et' ayar
Otomatik oynatma YouTube ayarlarından değiştirilebilir:
Ayarlar → Oynatma → Sonraki videoyu otomatik oynat"
- Bitiş ekranı önerilen videosu gösteriliyor
+ Bitiş ekranı önerilen videosu görünür
- İlgili videolar bindirmesini gizle
- Tam ekrandaki ilgili videolar bindirmesi gizli
- Tam ekrandaki ilgili videolar bindirmesi görünür
+ İlgili videolar katmanını gizle
+ Tam ekrandaki ilgili videolar katmanı gizli
+ Tam ekrandaki ilgili videolar katmanı görünür
Video zaman damgasını gizle
@@ -894,7 +894,7 @@ Ayarlar → Oynatma → Sonraki videoyu otomatik oynat"
Videolar tam ekranda açılmaz
- Oynatıcı paneli opaklığı
+ Oynatıcı katmanı opaklığı
0-100 arasında opaklık değeri, 0 şeffaftır
Oynatıcı katmanı opaklığı 0-100 arasında olmalıdır
@@ -984,13 +984,13 @@ Bu özellik, 720p veya daha düşük video kalitesi ve çok hızlı bir internet
Atlama düğmesini otomatik olarak gizle
Atlama düğmesi birkaç saniye sonra gizlenir
Atlama düğmesi bütün kısım boyunca gösterilir
- Atla düğmesi süresi
- Atla ve öne çıkanlara atla düğmelerini otomatik olarak gizlemeden önce ne kadar süreyle göster
+ Atlama düğmesi süresi
+ Atla ve vurguya atla düğmelerinin otomatik olarak gizlenmeden önce ne kadar süre gösterileceği
Atlamayı geri al bildirimini göster
- Bildirim, bir segment otomatik olarak atlandığında gösterilir. Atlamayı geri almak için bildirimine dokunun
- Toast gösterilmiyor
- Atlama toast süresi
- Geri al atla bildirimini ne kadar süreyle göster
+ Bir kısım otomatik olarak atlandığında bildirim gösterilir. Atlamayı geri almak için bildirime dokunun
+ Bildirim gösterilmez
+ Atlama bildirimi süresi
+ Atlamayı geri alma bildiriminin ne kadar süre gösterileceği
1 saniye
2 saniye
3 saniye
@@ -1001,14 +1001,14 @@ Bu özellik, 720p veya daha düşük video kalitesi ve çok hızlı bir internet
8 saniye
9 saniye
10 saniye
- Kısımlar çıkarıldığında kalan video süresini göster
- Tüm segmentler çıkarıldıktan sonra video uzunluğu arama çubuğunda gösterilir
- Tam video uzunluğu gösterilir
+ Kısımlar olmadan video süresini göster
+ Video süresi eksi bütün kısımların süresi zaman çubuğunda görünür
+ Tam video süresi görünür
Yeni kısım oluşturma
Yeni kısım oluşturma düğmesini göster
Yeni kısım oluşturma düğmesi gösterilir
Yeni kısım oluşturma düğmesi gösterilmez
- Yeni kısım oluştururken atlama süresi
+ Yeni kısım oluştururkenki atlama süresi
Yeni bölüm oluştururkenki atlama düğmelerinin atlayacağı milisaniye miktarı
Değer pozitif bir sayı olmalıdır
Yönergeleri görüntüle
@@ -1018,10 +1018,10 @@ Bu özellik, 720p veya daha düşük video kalitesi ve çok hızlı bir internet
Okudum
Göster
Genel
- API kullanılamadığında bir tost bildirimi göster
- SponsorBlock kullanılamadığında tost bildirimi gösterilir
- SponsorBlock kullanılamadığında tost bildirimi gösterilmez
- Atlama sayısı izlemeyi etkinleştir
+ API kullanılamadığında bir bildirim göster
+ SponsorBlock kullanılamadığında bir bildirim gösterilir
+ SponsorBlock kullanılamadığında bildirim gösterilmez
+ Atlama sayısı takibini etkinleştir
SponsorBlock liderlik tablosunun ne kadar zaman kazanıldığını bilmesini sağlar. Her bir kısım atlandığında liderlik tablosuna bir mesaj gönderilir
Atlama sayısı izleme etkin değil
En az kısım süresi
@@ -1103,7 +1103,7 @@ Kullanıcı kimliğiniz bir parola gibidir ve asla paylaşılmamalıdır.
Zaman çubuğunda göster
Devre dışı bırak
Kısım gönderilemedi: %s
- SponsorBlock geçici olarak kullanılamıyor
+ SponsorBlock geçici olarak kapalı
Kısım gönderilemedi (durum: %1$d %2$s)
Kısım gönderilemiyor. Kullanıcı veya IP\'den çok fazla istek
Kısım gönderilemiyor: %s
@@ -1120,7 +1120,7 @@ Aynısı mevcut"
Olumlu oy
Olumsuz oy
Kategori değiştir
- Oylanılacak bir kısım yok
+ Oylanılacak kısım bulunmuyor
%1$s - %2$s
Kısım kategorisini seçin
@@ -1218,7 +1218,7 @@ Daha sonra kapatılırsa, arayüz hatalarını önlemek için uygulama verilerin
Canlı yayın
Filmler
Müzik
- Habercilik
+ Haberler
Bildirimler
Oynatma listeleri
Arama
@@ -1228,7 +1228,7 @@ Daha sonra kapatılırsa, arayüz hatalarını önlemek için uygulama verilerin
Trendler
Sanal Gerçeklik
Daha sonra izle
- Sizin klipleriniz
+ Klipleriniz
Başlangıç sayfasını her zaman değiştir
"Başlangıç sayfası her zaman değiştirilir
@@ -1248,8 +1248,8 @@ Kısıtlama: Araç çubuğundaki geri düğmesini kullanmak işe yaramayabilir"<
Shorts\'u otomatik oynat
- Sıradaki Shorts videosu otomatik olarak oynatılacak
- Aynı Shorts videosu sürekli döngü yapacak
+ Shorts otomatik oynatılacak
+ Aynı Shorts videosu sürekli yeniden oynayacak
Arka planda Shorts\'u otomatik oynat
Shorts arka planda otomatik oynatılacak
Shorts arka planda döngüde olacak
@@ -1472,10 +1472,18 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir"
Düğme görünür. Oynatma hızını varsayılana sıfırlamak için dokunup basılı tutun
Düğme gösterilmez
+
+ Video kalitesi düğmesini göster
+ Düğme görünür. Kaliteyi varsayılana sıfırlamak için dokunup basılı tutun
+ Düğme gösterilmez
+
Özel oynatma hızı menüsü
Özel oynatma hızı menüsü gösterilir
Özel oynatma hızı menüsü gösterilmez
+ Eski oynatma hızı menüsünü geri getir
+ Eski hız menüsü gösterilir
+ Modern hız menüsü gösterilir
Özel oynatma hızları
Özel oynatma hızları ekle veya değiştir
Özel hızlar %s\'den az olmalıdır
@@ -1487,10 +1495,10 @@ Bunu etkinleştirmek daha yüksek video kalitelerini açabilir"
Oynatma hızı değişikliklerini hatırla
Oynatma hızı değişiklikleri tüm videolara uygulanır
- Oynatma hızı değişiklikleri yalnızca geçerli videoya uygulanır
+ Oynatma hızı değişiklikleri yalnızca mevcut videoya uygulanır
Oynatma hızı değişikliklerinde bildirim göster
Varsayılan oynatma hızı değiştirildiğinde bir bildirim gösterilir
- Varsayılan oynatma hızı değiştirildiğinde bir bildirim gösterilmez.
+ Varsayılan oynatma hızı değiştirildiğinde bir bildirim gösterilmez
Varsayılan oynatma hızı
Varsayılan hız %s olarak ayarlandı
diff --git a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml
index 40a72b3cd5..b9f11c10d9 100644
--- a/patches/src/main/resources/addresources/values-uk-rUA/strings.xml
+++ b/patches/src/main/resources/addresources/values-uk-rUA/strings.xml
@@ -1464,10 +1464,18 @@ Second \"item\" text"
Кнопка показується. Натисніть і утримуйте, щоб відновити стандартну швидкість відтворення
Кнопка швидкості відтворення не показується
+
+ Кнопка якості відео
+ Кнопка показується. Натисніть і утримуйте, щоб відновити стандартну якість
+ Кнопка швидкості відтворення не показується
+
Користувацьке меню швидкості відтворення
Користувацьке меню швидкості відтворення показується
Користувацьке меню швидкості відтворення не показується
+ Відновити старе меню швидкості відтворення
+ Показується старе меню швидкості
+ Показується новітнє меню швидкості
Користувацькі швидкості відтворення
Додавання або зміна користувацьких швидкостей відтворення
Користувацькі швидкості повинні бути менші ніж %s
diff --git a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-ur-rIN/strings.xml
+++ b/patches/src/main/resources/addresources/values-ur-rIN/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml
+++ b/patches/src/main/resources/addresources/values-uz-rUZ/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml
index 320bee2674..2b95d56a08 100644
--- a/patches/src/main/resources/addresources/values-vi-rVN/strings.xml
+++ b/patches/src/main/resources/addresources/values-vi-rVN/strings.xml
@@ -70,7 +70,7 @@ Second \"item\" text"
MicroG GmsCore chưa được cài đặt. Hãy cài đặt ngay.
- Hành động cần thiết
+ Cần thực hiện
"MicroG GmsCore không có quyền chạy nền.
Hãy làm theo hướng dẫn \"Don't kill my app\" dành cho điện thoại của bạn và áp dụng các bước đó để cài đặt MicroG.
@@ -90,7 +90,7 @@ Nhấn nút tiếp tục và cho phép thay đổi lựa chọn tối ưu hóa."
Giới thiệu
Quảng cáo
Hình thu nhỏ thay thế
- Bảng tin
+ Trang video
Chung
Trình phát
Thanh tiến trình
@@ -126,12 +126,12 @@ Tuy nhiên, bật tính năng này cũng sẽ ghi lại một số dữ liệu n
Ghi nhật ký truy vết ngăn xếp
Nhật ký gỡ lỗi bao gồm truy vết ngăn xếp
Nhật ký gỡ lỗi không bao gồm truy vết ngăn xếp
- Hiện thông báo nổi về lỗi ReVanced
- Thông báo nổi được hiển thị nếu xảy ra lỗi
- Thông báo nổi không được hiển thị nếu xảy ra lỗi
- "Tắt thông báo lỗi sẽ ẩn tất cả thông báo lỗi của ReVanced.
+ Hiện thông báo ngắn về lỗi ReVanced
+ Thông báo ngắn sẽ hiện nếu xảy ra lỗi
+ Thông báo ngắn không hiện nếu xảy ra lỗi
+ "Tắt thông báo lỗi sẽ ẩn mọi thông báo lỗi từ ReVanced.
-Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ nào."
+Bạn sẽ không được thông báo khi xẩy ra lỗi bất ngờ."
Xuất nhật ký gỡ lỗi
Sao chép nhật ký gỡ lỗi ReVanced vào bảng nhớ tạm
Tính năng ghi nhật ký gỡ lỗi đã tắt
@@ -209,8 +209,8 @@ Bạn sẽ không được thông báo về bất kỳ sự kiện bất ngờ n
Kệ vé đang hiển thị
Ẩn nhãn video đề xuất
- Nhãn \"Mọi người cũng xem\" và \"Bạn có thể thích\" trong kết quả tìm kiếm đã bị ẩn
- Nhãn \"Mọi người cũng xem\" và \"Bạn có thể thích\" trong kết quả tìm kiếm được hiển thị
+ Nhãn \"Mọi người cũng xem video này\" và \"Có thể bạn cũng thích nội dung này\" trong kết quả tìm kiếm đã bị ẩn
+ Nhãn \"Mọi người cũng xem video này\" và \"Có thể bạn cũng thích nội dung này\" trong kết quả tìm kiếm được hiển thị
Ẩn YouTube Doodles
Hoạt ảnh YouTube Doodles trên logo đã bị ẩn
@@ -281,9 +281,9 @@ Nếu cài đặt này được bật và Doodle đang hiển thị tại khu v
Ẩn hoặc hiện các thành phần mô tả video
Thanh bộ lọc
Ẩn hoặc hiện thanh bộ lọc trong trang video, video liên quan, kết quả tìm kiếm và nhật ký xem
- Ẩn trong bảng tin
- Đã ẩn trong bảng tin
- Đã hiển thị trong bảng tin
+ Ẩn trong các trang video
+ Đã ẩn trong trang video
+ Đã hiển thị trong trang video
Ẩn trong video liên quan
Đã ẩn trong video liên quan
Đã hiển thị trong video liên quan
@@ -355,10 +355,10 @@ Nếu cài đặt này được bật và Doodle đang hiển thị tại khu v
Danh sách các chuỗi dựng đường dẫn thành phần để lọc được ngăn cách bởi dòng mới
Bộ lọc tuỳ chỉnh không hợp lệ: %s
Ẩn nội dung từ khóa
- Ẩn video trong tìm kiếm và bảng tin bằng bộ lọc từ khóa
- Ẩn video trang chủ bằng từ khóa
- Video ở thẻ trang chủ đã được lọc bằng từ khóa
- Video ở thẻ trang chủ không được lọc bằng từ khóa
+ Ẩn video trong trang video và tìm kiếm bằng bộ lọc từ khóa
+ Ẩn video Trang chủ theo từ khóa
+ Video trong thẻ Trang chủ được lọc theo từ khóa
+ Video trong thẻ Trang chủ không được lọc theo từ khóa
Ẩn kết quả tìm kiếm bằng từ khóa
Kết quả tìm kiếm đã được lọc bằng từ khóa
Kết quả tìm kiếm không được lọc bằng từ khóa
@@ -374,7 +374,7 @@ Từ khóa có thể là tên kênh hoặc bất kỳ văn bản nào hiển th
Từ có chữ in hoa ở giữa phải được nhập cùng với chữ viết hoa (ví dụ: iPhone, TikTok, LeBlanc)"
Giới thiệu về bộ lọc từ khóa
- "Trang chủ/Đăng ký/Kết quả tìm kiếm được lọc để ẩn nội dung khớp với cụm từ khóa
+ "Trang chủ/Kênh đăng ký/Kết quả tìm kiếm được lọc để ẩn nội dung khớp với cụm từ khóa
Hạn chế
• Video ngắn không thể bị ẩn theo tên kênh
@@ -440,10 +440,10 @@ Tính năng này chỉ khả dụng trên các thiết bị cũ"
Đã sao chép URL vào bảng nhớ tạm
Đã sao chép URL kèm dấu thời gian
Hiện nút sao chép URL video
- Nút được hiển thị. Nhấn để sao chép URL video. Nhấn và giữ để sao chép kèm dấu thời gian
+ Nút đã được hiển thị. Nhấn để sao chép URL video. Nhấn và giữ để sao chép kèm dấu thời gian
Nút không được hiển thị
Hiện nút sao chép URL kèm dấu thời gian
- Nút được hiển thị. Nhấn để sao chép URL video kèm dấu thời gian. Nhấn giữ để sao chép không kèm dấu thời gian
+ Nút đã được hiển thị. Nhấn để sao chép URL video kèm dấu thời gian. Nhấn giữ để sao chép không kèm dấu thời gian
Nút không được hiển thị
@@ -688,7 +688,7 @@ Nếu thay đổi cài đặt này không có hiệu lực, hãy thử chuyển
"Trình đơn bản âm thanh đã bị ẩn
-Để hiển thị trình đơn Bản âm thanh, hãy thay đổi 'Giả mạo luồng phát video' thành iOS TV"
+Để hiển thị trình đơn bản âm thanh, hãy đổi 'Giả mạo luồng video' thành iOS TV"
Ẩn Xem ở chế độ thực tế ảo
Trình đơn xem ở chế độ thực tế ảo đã bị ẩn
@@ -752,7 +752,7 @@ Nếu thay đổi cài đặt này không có hiệu lực, hãy thử chuyển
Đã ẩn trong thẻ Trang chủ và video liên quan
Đã hiển thị trong thẻ Trang chủ và video liên quan
Ẩn Shorts trong kết quả tìm kiếm
- Bị ẩn trong kết quả tìm kiếm
+ Đã ẩn trong kết quả tìm kiếm
Được hiển thị trong kết quả tìm kiếm
Ẩn Shorts trong thẻ Kênh đăng ký
@@ -900,14 +900,14 @@ Cài đặt → Phát → Tự động phát video tiếp theo"
- Lượt không thích tạm thời không khả dụng (API hết thời gian chờ)
+ Không thể hiện số Dislike (API hết thời gian chờ)
Lượt không thích không khả dụng ( trạng thái %d)
- Lượt không thích không khả dụng (giới hạn API máy khách)
+ Không thể hiện số dislike (đạt giới hạn API ứng dụng)
Số lượt không thích không khả dụng (%s)
- Tải lại video để bình chọn bằng Return YouTube Dislike
+ Tải lại video để bỏ phiếu bằng ReturnYouTubeDislike
- Bị ẩn bởi chủ sở hữu
+ Đã ẩn bởi chủ sở hữu
Số lượt không thích được hiển thị
Số lượt không thích không được hiển thị
Hiện số lượt không thích trong Shorts
@@ -925,26 +925,26 @@ Hạn chế: Số lượt không thích có thể không xuất hiện ở chế
Hiện lượt thích ước tính
Video có lượt thích bị tắt hiển thị số lượt thích ước tính
Không hiển thị lượt thích ước tính
- Hiện thông báo nổi nếu API không khả dụng
- Thông báo nổi được hiển thị nếu Return YouTube Dislike không khả dụng
- Thông báo nổi không được hiển thị nếu Return YouTube Dislike không khả dụng
+ Hiện thông báo ngắn nếu API không khả dụng
+ Thông báo ngắn sẽ hiện nếu Return YouTube Dislike không khả dụng
+ Thông báo ngắn không hiện nếu Return YouTube Dislike không khả dụng
Dữ liệu được cung cấp bởi API Return YouTube Dislike. Nhấn vào đây để tìm hiểu thêm
Thống kê API ReturnYouTubeDislike của thiết bị này
- Thời gian phản hồi của API, trung binh
- Thời gian phản hồi của API, tối thiểu
- Thời gian phản hồi của API, tối đa
- Thời gian phản hồi của API, video cuối
- Lượt không thích tạm thời không khả dụng - Đạt giới hạn API máy khách có hiệu lực
+ Thời gian phản hồi API, trung binh
+ Thời gian phản hồi API, tối thiểu
+ Thời gian phản hồi API, tối đa
+ Thời gian phản hồi API, video gần nhất
+ Tạm thời không thể hiển thị số lượt không thích - Đang bị giới hạn API ứng dụng
Số lượt truy vấn API, số lần gọi
Không gọi mạng lần nào
%d lần gọi mạng
Số lượt truy vấn API, số lần hết hạn
Không gọi mạng lần nào bị hết hạn
%d lần gọi mạng bị hết hạn
- Số lần đạt giới hạn API máy khách
- Không gặp phải giới hạn truy cập máy khách
- Gặp phải %d lần đạt giới hạn truy cập máy khách
+ Giới hạn truy cập API ứng dụng
+ Chưa từng bị giới hạn API
+ Đã bị giới hạn API %d lần
%d mili-giây
@@ -971,9 +971,9 @@ Hoạt động tốt nhất với chất lượng video 720p trở xuống và k
Bật SponsorBlock
SponsorBlock là một hệ thống dựa trên đóng góp bởi cộng đồng để bỏ qua các phần gây khó chịu trong video YouTube
Giao diện
- Hiện nút bình chọn
- Nút bình chọn phân đoạn được hiển thị
- Nút bình chọn phân đoạn không được hiển thị
+ Hiện nút bỏ phiếu
+ Nút bỏ phiếu phân đoạn được hiển thị
+ Nút bỏ phiếu phân đoạn không được hiển thị
Dùng bố cục vuông
Các nút và điều khiển có hình vuông
Các nút và điều khiển được bo tròn
@@ -986,11 +986,11 @@ Hoạt động tốt nhất với chất lượng video 720p trở xuống và k
Nút bỏ qua được hiển thị cho toàn bộ phân đoạn
Thời gian hiển thị nút bỏ qua
Thời gian hiển thị nút bỏ qua và nút bỏ qua đến phần nổi bật trước khi tự động ẩn
- Hiện thông báo nổi hoàn tác bỏ qua
- Thông báo nổi được hiển thị mỗi khi tự động bỏ qua một phân đoạn. Chạm vào thông báo nổi để hoàn tác bỏ qua phân đoạn vừa rồi
- Thông báo nổi không được hiển thị
- Thời gian hiển thị thông báo nổi bỏ qua
- Thời gian hiển thị thông báo nổi hoàn tác bỏ qua
+ Hiện thông báo ngắn hoàn tác bỏ qua
+ Thông báo ngắn sẽ hiện mỗi khi tự động bỏ qua một phân đoạn.\n\nChạm vào thông báo đó để hoàn tác bỏ qua
+ Thông báo ngắn không hiện
+ Thời gian thông báo ngắn tồn tại
+ Thời gian thông báo ngắn tồn tại sau khi bỏ qua phân đoạn
1 giây
2 giây
3 giây
@@ -1018,9 +1018,9 @@ Hoạt động tốt nhất với chất lượng video 720p trở xuống và k
Đã đọc
Hiện cho tôi
Chung
- Hiện một thông báo nổi nếu API không khả dụng
- Thông báo nổi được hiển thị nếu SponsorBlock không khả dụng
- Thông báo nổi không được hiển thị nếu SponsorBlock không khả dụng
+ Hiện thông báo ngắn nếu API không khả dụng
+ Thông báo ngắn sẽ hiện nếu SponsorBlock không khả dụng
+ Thông báo ngắn không hiện nếu SponsorBlock không khả dụng
Bật theo dõi số lần bỏ qua
Cho phép bảng xếp hạng SponsorBlock biết đã tiết kiệm được bao nhiêu thời gian. Một tin nhắn được gửi đến bảng xếp hạng mỗi khi một phân đoạn bị bỏ qua
Theo dõi số lần bỏ qua không được bật
@@ -1099,7 +1099,7 @@ ID người dùng của bạn giống như mật khẩu và không bao giờ đ
Tự động bỏ qua
Tự động bỏ qua một lần
Hiện nút Bỏ qua
- Hiển thị trên thanh tiến trình
+ Đã hiển thị trên thanh tiến trình
Tắt
Không thể gửi phân đoạn: %s
SponsorBlock bị sập tạm thời
@@ -1110,16 +1110,16 @@ ID người dùng của bạn giống như mật khẩu và không bao giờ đ
Đã tồn tại"
Phân đoạn được gửi thành công
- SponsorBlock tạm thời không khả dụng (API hết thời gian chờ)
+ SponsorBlock tạm thời không khả dụng (hết thời gian chờ API)
SponsorBlock tạm thời không khả dụng (trạng thái %d)
SponsorBlock tạm thời không khả dụng
- Không thể bình chọn cho phân đoạn (API hết hạn)
- Ko thể bình chọn cho phân đoạn (t.thái: %1$d %2$s)
- Không thể bình chọn cho phân đoạn: %s
+ Không thể bỏ phiếu phân đoạn (hết thời gian chờ API)
+ Không thể bỏ phiếu phân đoạn (trạng thái: %1$d %2$s)
+ Không thể bỏ phiếu cho phân đoạn: %s
Ủng hộ
Phản đối
Thay đổi danh mục
- Không có phân đoạn nào để bình chọn
+ Không có phân đoạn nào để bỏ phiếu
%1$s đến %2$s
Chọn danh mục phân đoạn
@@ -1205,7 +1205,7 @@ Nếu tắt đi sau đó, bạn nên xóa dữ liệu ứng dụng để tránh
Thay đổi trang bắt đầu
Mặc định
- Tất cả đăng ký
+ Tất cả kênh đăng ký
Duyệt kênh
Khóa học / Học tập
Khám phá
@@ -1223,7 +1223,7 @@ Nếu tắt đi sau đó, bạn nên xóa dữ liệu ứng dụng để tránh
Tìm kiếm
Mua sắm
Thể thao
- Đăng ký
+ Kênh đăng ký
Xu hướng
Thực tế ảo
Xem sau
@@ -1269,11 +1269,11 @@ Hạn chế: Nút quay lại trên thanh công cụ có thể không hoạt đ
Góc được bo tròn
Góc vuông
Bật chạm hai lần và chụm để thay đổi kích thước
- "Đã bật thao tác chạm hai lần và chụm để thay đổi kích thước
+ "Thao tác chạm hai lần và chụm để thay đổi kích thước đã bật
• Chạm hai lần để tăng kích thước trình phát thu nhỏ
• Chạm hai lần nữa để khôi phục kích thước ban đầu"
- Đã tắt thao tác chạm hai lần và chụm để thay đổi kích thước
+ Thao tác chạm hai lần và chụm để thay đổi kích thước đã tắt
Bật kéo và thả
"Kéo và thả đã được bật
@@ -1303,7 +1303,7 @@ Vuốt để mở rộng hoặc đóng"
Pixel phải nằm giữa %1$s và %2$s
Độ mờ lớp phủ
Giá trị độ mờ của lớp phủ trình phát trong khoảng từ 0 đến 100, trong đó 0 là trong suốt
- Độ mờ lớp phủ trình phát thu nhỏ phải nằm trong khoảng từ 0 đến 100
+ Độ mờ lớp phủ phải nằm trong khoảng từ 0-100
Bật màn hình tải màu dốc
@@ -1330,11 +1330,11 @@ Vuốt để mở rộng hoặc đóng"
Tùy chỉnh
- Vượt qua hạn chế khu vực cho hình ảnh
- Đang dùng máy chủ hình ảnh yt4.ggpht.com
- "Đang dùng máy chủ hình ảnh gốc
+ Bỏ qua hạn chế khu vực khi tải ảnh
+ Đang dùng máy chủ ảnh yt4.ggpht.com
+ "Đang dùng máy chủ ảnh gốc
-Bật tính năng này có thể khắc phục hình ảnh bị thiếu khi bị chặn ở một số khu vực"
+Bật tính năng này có thể khắc phục tình trạng hình ảnh không hiển thị ở một số quốc gia"
@@ -1354,9 +1354,9 @@ Bật tính năng này có thể khắc phục hình ảnh bị thiếu khi bị
Nếu được bật, URL video sẽ được gửi đến máy chủ API và không có dữ liệu nào khác được gửi. Nếu video không có hình thu nhỏ DeArrow, thì hình thu nhỏ gốc hoặc ảnh chụp tĩnh sẽ được hiển thị
Nhấn vào đây để tìm hiểu thêm về DeArrow"
- Hiện một thông báo nổi nếu API không khả dụng
- Thông báo nổi được hiển thị nếu DeArrow không khả dụng
- Thông báo nổi không được hiển thị nếu DeArrow không khả dụng
+ Hiện thông báo ngắn nếu API không khả dụng
+ Thông báo ngắn sẽ hiện nếu DeArrow không khả dụng
+ Thông báo ngắn không hiện nếu DeArrow không khả dụng
Điểm cuối API DeArrow
URL của điểm cuối bộ đệm hình thu nhỏ DeArrow
Chụp tĩnh video
@@ -1373,12 +1373,12 @@ Nhấn vào đây để tìm hiểu thêm về DeArrow"
DeArrow tạm thời không khả dụng
- Hiện công bố của ReVanced
- Thông báo khi khởi động được hiển thị
- Thông báo khi khởi động không được hiển thị
- Hiện công bố khi khởi chạy
- Kết nối đến nguồn cấp công bố thất bại
- Từ bỏ
+ Hiện thông báo của ReVanced
+ Thông báo sẽ được hiển thị khi khởi động ứng dụng
+ Thông báo không được hiển thị khi khởi động ứng dụng
+ Hiện thông báo khi khởi động
+ Không thể tải thông báo từ máy chủ
+ Đóng
Cảnh báo
@@ -1394,7 +1394,7 @@ Nhấn vào đây để tìm hiểu thêm về DeArrow"
Giả mạo kích thước thiết bị
"Kích thước thiết bị đã được giả mạo
-Chất lượng video cao hơn có thể được mở khóa nhưng bạn có thể gặp hiện tượng giật lag khi phát video, hao pin hơn và các sự cố không xác định"
+Có thể mở khóa chất lượng video cao hơn nhưng bạn có thể gặp hiện tượng giật lag khi phát video, hao pin và các sự cố không xác định khác"
"Kích thước thiết bị không được giả mạo
Bật tính năng này có thể mở khóa chất lượng video cao hơn"
@@ -1424,9 +1424,9 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Nếu gần đây bạn đã cập nhật thông tin đăng nhập tài khoản của mình, hãy gỡ và cài đặt lại MicroG.
- Vượt chuyển hướng URL
- Chuyển hướng URL được vượt
- Chuyển hướng URL không được vượt
+ Bỏ qua chuyển hướng URL
+ Chuyển hướng URL đã được bỏ qua
+ Chuyển hướng URL không được bỏ qua
Mở liên kết trong trình duyệt
@@ -1443,7 +1443,7 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Đang dùng ngôn ngữ âm thanh gốc
Đang dùng âm thanh mặc định
- Để dùng tính năng này, hãy thay đổi \'Giả mạo luồng phát video\' thành iOS TV
+ Để dùng tính năng này, hãy đổi \'Giả mạo luồng video\' thành iOS TV
@@ -1451,9 +1451,9 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Nhớ các thay đổi chất lượng video
Thay đổi chất lượng áp dụng cho tất cả video
Thay đổi chất lượng chỉ áp dụng cho video hiện tại
- Hiện thông báo nổi khi chất lượng video thay đổi
- Thông báo nổi sẽ hiển thị khi chất lượng video mặc định được thay đổi
- Thông báo nổi sẽ không hiển thị khi chất lượng video mặc định được thay đổi
+ Hiện thông báo ngắn khi thay đổi chất lượng video
+ Thông báo ngắn sẽ hiện khi chất lượng video mặc định được thay đổi
+ Thông báo ngắn không hiện khi chất lượng video mặc định được thay đổi
Chất lượng mặc định trên mạng Wi-Fi
Chất lượng mặc định trên mạng di động
Nhớ các thay đổi chất lượng Shorts
@@ -1463,18 +1463,26 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Chất lượng Shorts mặc định trên mạng di động
di động
wifi
- Đã thay đổi chất lượng %1$s mặc định: %2$s
+ Đã thay đổi chất lượng mặc định %1$s: %2$s
Đã thay đổi chất lượng Shorts %1$s: %2$s
Hiện nút hộp thoại tốc độ phát
- Nút được hiển thị. Nhấn và giữ để đặt lại tốc độ phát về mặc định
+ Nút đã được hiển thị. Nhấn và giữ để đặt lại tốc độ phát về mặc định
Nút không được hiển thị
+
+ Hiện nút chất lượng video
+ Nút đã được hiển thị. Nhấn và giữ để đặt lại chất lượng về mặc định
+ Nút không được hiển thị
+
Trình đơn tốc độ phát tùy chỉnh
Trình đơn tốc độ phát tùy chỉnh được hiển thị
Trình đơn tốc độ phát tùy chỉnh không được hiển thị
+ Khôi phục trình đơn tốc độ phát cũ
+ Trình đơn tốc độ cũ được hiển thị
+ Trình đơn tốc độ hiện đại được hiển thị
Tốc độ phát tùy chỉnh
Thêm hoặc thay đổi tốc độ phát tùy chỉnh
Tốc độ tùy chỉnh phải nhỏ hơn %s
@@ -1487,9 +1495,9 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Nhớ các thay đổi tốc độ phát
Thay đổi tốc độ phát áp dụng cho tất cả video
Thay đổi tốc độ phát chỉ áp dụng cho video hiện tại
- Hiện thông báo nổi khi tốc độ phát thay đổi
- Thông báo nổi sẽ hiển thị khi tốc độ phát mặc định được thay đổi
- Thông báo nổi không hiển thị khi tốc độ phát mặc định được thay đổi
+ Hiện thông báo ngắn khi thay đổi tốc độ phát
+ Thông báo ngắn sẽ hiện khi tốc độ phát mặc định được thay đổi
+ Thông báo ngắn không hiện khi tốc độ phát mặc định được thay đổi
Tốc độ phát mặc định
Đã thay đổi tốc độ phát mặc định thành: %s
@@ -1509,35 +1517,35 @@ Bật tính năng này có thể mở khóa chất lượng video cao hơn"Vuốt để tua không được bật
- Giả mạo luồng phát video
- Giả mạo luồng video máy khách để ngăn ngừa sự cố phát
- Giả mạo luồng phát video
+ Giả mạo luồng video
+ Giả mạo luồng video của thiết bị nhằm ngăn chặn lỗi khi phát
+ Giả mạo luồng video
Luồng video đã được giả mạo
"Luồng video không được giả mạo
-Có thể gặp sự cố phát video"
- Tắt cài đặt này có thể gây ra sự cố phát video.
- Máy khách mặc định
- Buộc iOS AVC (H.264)
- Bộ giải mã video bị buộc thành AVC (H.264)
- Bộ giải mã video được xác định tự động
- "Bật tính năng này có thể cải thiện thời lượng pin và khắc phục tình trạng giật lag khi phát.
+Có thể gặp lỗi khi phát video"
+ Tắt cài đặt này có thể gây ra lỗi khi phát video.
+ Loại thiết bị mặc định
+ Bắt buộc iOS AVC (H.264)
+ Codec video bị buộc phải là AVC (H.264)
+ Codec video sẽ được xác định tự động
+ "Bật tuỳ chọn này có thể giúp tiết kiệm pin và khắc phục tình trạng giật lag khi phát video.
-AVC có độ phân giải tối đa là 1080p, bộ giải mã âm thanh OPUS không khả dụng và phát video sẽ sử dụng nhiều dữ liệu di động hơn VP9 hoặc AV1."
- Các hạn chế khi giả mạo iOS
+AVC hỗ trợ độ phân giải tối đa là 1080p, codec âm thanh OPUS không khả dụng và phát video sẽ tiêu tốn nhiều dữ liệu di động hơn so với VP9 hoặc AV1."
+ Hạn chế khi giả mạo iOS
"• Phim hoặc video có trả phí có thể không phát được
• Âm lượng ổn định không khả dụng
-• Video có thể kết thúc sớm hơn 1 giây"
- Các hạn chế khi giả mạo Android
+• Video kết thúc sớm hơn 1 giây"
+ Hạn chế khi giả mạo Android
"• Trình đơn bản âm thanh bị thiếu
• Âm lượng ổn định không khả dụng
• Tùy chọn âm thanh gốc không khả dụng"
- • Không có bộ giải mã video AV1
+ • Không có codec video AV1
• Video dành cho trẻ em có thể không phát được khi đăng xuất hoặc ở chế độ ẩn danh
Hiện trong Thống kê chi tiết
- Loại máy khách được hiển thị trong Thống kê chi tiết
- Máy khách đã bị ẩn trong Thống kê chi tiết
- Ngôn ngữ âm thanh mặc định của VR
+ Loại máy khách đã được hiển thị trong Thống kê chi tiết
+ Loại thiết bị đã ẩn trong Thống kê chi tiết
+ Ngôn ngữ âm thanh mặc định (VR)
diff --git a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml
index e5128929fa..6386f8b492 100644
--- a/patches/src/main/resources/addresources/values-zh-rCN/strings.xml
+++ b/patches/src/main/resources/addresources/values-zh-rCN/strings.xml
@@ -1470,10 +1470,18 @@ Second \"item\" text"
按钮已显示。点住即可将播放速度重置为默认值
按钮未显示
+
+ 显示视频质量按钮
+ 按钮已显示。点按并按住以将画质重置为默认值
+ 按钮未显示
+
自定义播放速度菜单
显示自定义速度菜单
不显示自定义速度菜单
+ 恢复旧版播放速度菜单
+ 显示旧版速度菜单
+ 显示新版速度菜单
自定义播放速度
添加或更改自定义播放速度
自定义速度必须小于 %s
diff --git a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml
index 2cf7c20a9f..d82cf6bf90 100644
--- a/patches/src/main/resources/addresources/values-zh-rTW/strings.xml
+++ b/patches/src/main/resources/addresources/values-zh-rTW/strings.xml
@@ -1475,10 +1475,15 @@ Second \"item\" text"
按鈕已顯示。長按可將播放速度重設為預設值
不顯示按鈕
+
+
自訂播放速度選單
已顯示自訂播放速度選單
不顯示自訂播放速度選單
+ 恢復舊版播放速度選單
+ 已顯示舊版速度選單
+ 已顯示新版速度選單
自訂播放速度
新增或變更自訂播放速度
自訂速度必須小於 %s
diff --git a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml
index 7fe0f179cc..b64730dc01 100644
--- a/patches/src/main/resources/addresources/values-zu-rZA/strings.xml
+++ b/patches/src/main/resources/addresources/values-zu-rZA/strings.xml
@@ -222,6 +222,8 @@ Second \"item\" text"
+
+
diff --git a/patches/src/main/resources/addresources/values/strings.xml b/patches/src/main/resources/addresources/values/strings.xml
index 79e04133b4..3624d7f226 100644
--- a/patches/src/main/resources/addresources/values/strings.xml
+++ b/patches/src/main/resources/addresources/values/strings.xml
@@ -1543,10 +1543,18 @@ Enabling this can unlock higher video qualities"
Button is shown. Tap and hold to reset playback speed to default
Button is not shown
+
+ Show video quality button
+ Button is shown. Tap and hold to reset quality to default
+ Button is not shown
+
Custom playback speed menu
Custom speed menu is shown
Custom speed menu is not shown
+ Restore old playback speed menu
+ Old speed menu is shown
+ Modern speed menu is shown
Custom playback speeds
Add or change the custom playback speeds
Custom speeds must be less than %s
diff --git a/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_4k.xml b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_4k.xml
new file mode 100644
index 0000000000..22051e3fb8
--- /dev/null
+++ b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_4k.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_fhd.xml b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_fhd.xml
new file mode 100644
index 0000000000..b7a8f5c73e
--- /dev/null
+++ b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_fhd.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_fhd_plus.xml b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_fhd_plus.xml
new file mode 100644
index 0000000000..18e163ca2b
--- /dev/null
+++ b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_fhd_plus.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_hd.xml b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_hd.xml
new file mode 100644
index 0000000000..db2bad1b1f
--- /dev/null
+++ b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_hd.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_ld.xml b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_ld.xml
new file mode 100644
index 0000000000..a49f5a200c
--- /dev/null
+++ b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_ld.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_qhd.xml b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_qhd.xml
new file mode 100644
index 0000000000..7609d368ec
--- /dev/null
+++ b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_qhd.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_sd.xml b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_sd.xml
new file mode 100644
index 0000000000..150ede8502
--- /dev/null
+++ b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_sd.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_unknown.xml b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_unknown.xml
new file mode 100644
index 0000000000..4e5750cfe3
--- /dev/null
+++ b/patches/src/main/resources/qualitybutton/drawable/revanced_video_quality_dialog_button_unknown.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/patches/src/main/resources/qualitybutton/host/layout/youtube_controls_bottom_ui_container.xml b/patches/src/main/resources/qualitybutton/host/layout/youtube_controls_bottom_ui_container.xml
new file mode 100644
index 0000000000..deb534fbaf
--- /dev/null
+++ b/patches/src/main/resources/qualitybutton/host/layout/youtube_controls_bottom_ui_container.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/patches/src/main/resources/speedbutton/host/layout/youtube_controls_bottom_ui_container.xml b/patches/src/main/resources/speedbutton/host/layout/youtube_controls_bottom_ui_container.xml
index 315251b0c0..c0109ebc59 100644
--- a/patches/src/main/resources/speedbutton/host/layout/youtube_controls_bottom_ui_container.xml
+++ b/patches/src/main/resources/speedbutton/host/layout/youtube_controls_bottom_ui_container.xml
@@ -13,7 +13,6 @@
android:layout_height="60.0dip"
android:paddingTop="6.0dp"
android:paddingBottom="0dp"
- android:longClickable="false"
android:scaleType="center"
android:src="@drawable/revanced_playback_speed_dialog_button"
yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container"