-
Notifications
You must be signed in to change notification settings - Fork 27
/
Tweak.xm
107 lines (82 loc) · 2.58 KB
/
Tweak.xm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#import <substrate.h>
#import "Header.h"
BOOL UseVP9() {
return [[NSUserDefaults standardUserDefaults] boolForKey:UseVP9Key];
}
BOOL AllVP9() {
return [[NSUserDefaults standardUserDefaults] boolForKey:AllVP9Key];
}
// Remove any <= 1080p VP9 formats if AllVP9 is disabled
NSArray <MLFormat *> *filteredFormats(NSArray <MLFormat *> *formats) {
if (AllVP9()) return formats;
NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(MLFormat *format, NSDictionary *bindings) {
return [format height] > 1080 || [[format MIMEType] videoCodec] != 'vp09';
}];
return [formats filteredArrayUsingPredicate:predicate];
}
%hook YTIMediaCommonConfig
%new(B@:)
- (BOOL)useServerDrivenAbr {
return NO;
}
%end
static void hookFormats(MLABRPolicy *self) {
YTIHamplayerConfig *config = [self valueForKey:@"_hamplayerConfig"];
if ([config.videoAbrConfig respondsToSelector:@selector(setPreferSoftwareHdrOverHardwareSdr:)])
config.videoAbrConfig.preferSoftwareHdrOverHardwareSdr = YES;
if ([config respondsToSelector:@selector(setDisableResolveOverlappingQualitiesByCodec:)])
config.disableResolveOverlappingQualitiesByCodec = NO;
YTIHamplayerStreamFilter *filter = config.streamFilter;
filter.enableVideoCodecSplicing = YES;
filter.av1.maxArea = MAX_PIXELS;
filter.av1.maxFps = MAX_FPS;
filter.vp9.maxArea = MAX_PIXELS;
filter.vp9.maxFps = MAX_FPS;
}
%hook MLABRPolicy
- (void)setFormats:(NSArray *)formats {
hookFormats(self);
%orig(filteredFormats(formats));
}
%end
%hook MLABRPolicyOld
- (void)setFormats:(NSArray *)formats {
hookFormats(self);
%orig(filteredFormats(formats));
}
%end
%hook MLABRPolicyNew
- (void)setFormats:(NSArray *)formats {
hookFormats(self);
%orig(filteredFormats(formats));
}
%end
%hook YTHotConfig
- (BOOL)iosClientGlobalConfigEnableNewMlabrpolicy {
return NO;
}
- (BOOL)iosPlayerClientSharedConfigEnableNewMlabrpolicy {
return NO;
}
- (BOOL)iosPlayerClientSharedConfigPostponeCabrPreferredFormatFiltering {
return YES;
}
%end
%hook HAMDefaultABRPolicy
- (void)setFormats:(NSArray *)formats {
@try {
HAMDefaultABRPolicyConfig config = MSHookIvar<HAMDefaultABRPolicyConfig>(self, "_config");
config.softwareAV1Filter.maxArea = MAX_PIXELS;
config.softwareAV1Filter.maxFPS = MAX_FPS;
config.softwareVP9Filter.maxArea = MAX_PIXELS;
config.softwareVP9Filter.maxFPS = MAX_FPS;
MSHookIvar<HAMDefaultABRPolicyConfig>(self, "_config") = config;
} @catch (id ex) {}
%orig;
}
%end
%ctor {
if (UseVP9()) {
%init;
}
}