Skip to content

Commit 6a79911

Browse files
refactor(YouTube - Spoof video streams): Add 'supportsMultiAudioTracks' field
1 parent aec17b9 commit 6a79911

File tree

5 files changed

+19
-7
lines changed

5 files changed

+19
-7
lines changed

extensions/music/src/main/java/app/revanced/extension/music/patches/ForceOriginalAudioPatch.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class ForceOriginalAudioPatch {
88
/**
99
* Injection point.
1010
*/
11-
public static void setPreferredLanguage() {
11+
public static void setEnabled() {
1212
app.revanced.extension.shared.patches.ForceOriginalAudioPatch.setEnabled(
1313
Settings.FORCE_ORIGINAL_AUDIO.get(),
1414
Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get()

extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/ForceOriginalAudioPatch.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,12 @@ public class ForceOriginalAudioPatch {
1010

1111
private static final String DEFAULT_AUDIO_TRACKS_SUFFIX = ".4";
1212

13-
private static volatile boolean enabled = false;
13+
private static volatile boolean enabled;
1414

1515
public static void setEnabled(boolean isEnabled, ClientType client) {
1616
enabled = isEnabled;
1717

18-
if (isEnabled
19-
&& SpoofVideoStreamsPatch.spoofingToClientWithNoMultiAudioStreams()
20-
&& !client.useAuth) {
18+
if (isEnabled && !client.useAuth && !client.supportsMultiAudioTracks) {
2119
// If client spoofing does not use authentication and lacks multi-audio streams,
2220
// then can use any language code for the request and if that requested language is
2321
// not available YT uses the original audio language. Authenticated requests ignore

extensions/shared/library/src/main/java/app/revanced/extension/shared/spoof/ClientType.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public enum ClientType {
3131
"132.0.6808.3",
3232
"1.61.48",
3333
false,
34+
false,
3435
"Android VR 1.61"
3536
),
3637
/**
@@ -50,6 +51,7 @@ public enum ClientType {
5051
"107.0.5284.2",
5152
"1.43.32",
5253
ANDROID_VR_1_61_48.useAuth,
54+
ANDROID_VR_1_61_48.supportsMultiAudioTracks,
5355
"Android VR 1.43"
5456
),
5557
/**
@@ -69,6 +71,7 @@ public enum ClientType {
6971
"132.0.6779.0",
7072
"23.47.101",
7173
true,
74+
false,
7275
"Android Studio"
7376
),
7477
/**
@@ -83,6 +86,7 @@ public enum ClientType {
8386
"0.1",
8487
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15",
8588
false,
89+
false,
8690
"visionOS"
8791
),
8892
/**
@@ -107,6 +111,7 @@ public enum ClientType {
107111
"19.22.3",
108112
"com.google.ios.youtube/19.22.3 (iPad7,6; U; CPU iPadOS 17_7_10 like Mac OS X; " + Locale.getDefault() + ")",
109113
false,
114+
true,
110115
"iPadOS"
111116
);
112117

@@ -180,6 +185,11 @@ public enum ClientType {
180185
*/
181186
public final boolean useAuth;
182187

188+
/**
189+
* If the client supports multiple audio tracks.
190+
*/
191+
public final boolean supportsMultiAudioTracks;
192+
183193
/**
184194
* Friendly name displayed in stats for nerds.
185195
*/
@@ -200,6 +210,7 @@ public enum ClientType {
200210
@NonNull String cronetVersion,
201211
String clientVersion,
202212
boolean useAuth,
213+
boolean supportsMultiAudioTracks,
203214
String friendlyName) {
204215
this.id = id;
205216
this.clientName = clientName;
@@ -213,6 +224,7 @@ public enum ClientType {
213224
this.cronetVersion = cronetVersion;
214225
this.clientVersion = clientVersion;
215226
this.useAuth = useAuth;
227+
this.supportsMultiAudioTracks = supportsMultiAudioTracks;
216228
this.friendlyName = friendlyName;
217229

218230
Locale defaultLocale = Locale.getDefault();
@@ -238,6 +250,7 @@ public enum ClientType {
238250
String clientVersion,
239251
String userAgent,
240252
boolean useAuth,
253+
boolean supportsMultiAudioTracks,
241254
String friendlyName) {
242255
this.id = id;
243256
this.clientName = clientName;
@@ -248,6 +261,7 @@ public enum ClientType {
248261
this.clientVersion = clientVersion;
249262
this.userAgent = userAgent;
250263
this.useAuth = useAuth;
264+
this.supportsMultiAudioTracks = supportsMultiAudioTracks;
251265
this.friendlyName = friendlyName;
252266
this.packageName = null;
253267
this.androidSdkVersion = null;

extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ForceOriginalAudioPatch.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class ForceOriginalAudioPatch {
88
/**
99
* Injection point.
1010
*/
11-
public static void setPreferredLanguage() {
11+
public static void setEnabled() {
1212
app.revanced.extension.shared.patches.ForceOriginalAudioPatch.setEnabled(
1313
Settings.FORCE_ORIGINAL_AUDIO.get(),
1414
Settings.SPOOF_VIDEO_STREAMS_CLIENT_TYPE.get()

patches/src/main/kotlin/app/revanced/patches/shared/misc/audio/ForceOriginalAudioPatch.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ internal fun forceOriginalAudioPatch(
5959

6060
mainActivityOnCreateFingerprint.method.addInstruction(
6161
0,
62-
"invoke-static { }, $subclassExtensionClassDescriptor->setPreferredLanguage()V"
62+
"invoke-static { }, $subclassExtensionClassDescriptor->setEnabled()V"
6363
)
6464

6565
// Disable feature flag that ignores the default track flag

0 commit comments

Comments
 (0)