Skip to content

Commit f92bc96

Browse files
committed
fix original video resolution option
1 parent 6c50003 commit f92bc96

File tree

2 files changed

+27
-41
lines changed

2 files changed

+27
-41
lines changed

app/src/main/java/com/wmods/wppenhacer/xposed/core/devkit/Unobfuscator.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -456,22 +456,19 @@ public synchronized static Method loadMediaQualityVideoMethod2(ClassLoader class
456456
});
457457
}
458458

459-
public synchronized static Field[] loadMediaQualityVideoFields(ClassLoader classLoader) throws Exception {
460-
var clazz = loadMediaQualityVideoMethod2(classLoader).getReturnType();
461-
var method = dexkit.findMethod(FindMethod.create()
462-
.searchPackages(List.of("X."))
463-
.matcher(MethodMatcher.create().addUsingString("videotranscodequeue/uumos_cs"))
464-
);
465-
if (method.isEmpty()) throw new Exception("MediaQualityVideoTargetFields method not found");
466-
var fields = method.get(0).getUsingFields();
467-
ArrayList<Field> result = new ArrayList<>();
468-
for (var field : fields) {
469-
var realField = field.getField().getFieldInstance(classLoader);
470-
if (realField.getDeclaringClass().equals(clazz)) result.add(realField);
459+
public synchronized static HashMap<String, Field> loadMediaQualityVideoFields(ClassLoader classLoader) throws Exception {
460+
var method = loadMediaQualityVideoMethod2(classLoader);
461+
var methodString = method.getReturnType().getDeclaredMethod("toString");
462+
var methodData = dexkit.getMethodData(methodString);
463+
var usingFields = Objects.requireNonNull(methodData).getUsingFields();
464+
var usingStrings = Objects.requireNonNull(methodData).getUsingStrings();
465+
var result = new HashMap<String, Field>();
466+
for (int i = 0; i < usingStrings.size(); i++) {
467+
if (i == usingFields.size()) break;
468+
var field = usingFields.get(i).getField().getFieldInstance(classLoader);
469+
result.put(usingStrings.get(i), field);
471470
}
472-
if (result.size() < 4)
473-
throw new Exception("MediaQualityVideoTargetFields method not found");
474-
return result.toArray(new Field[0]);
471+
return result;
475472
}
476473

477474
public synchronized static Class loadMediaQualityVideoLimitClass(ClassLoader classLoader) throws Exception {

app/src/main/java/com/wmods/wppenhacer/xposed/features/media/MediaQuality.java

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -81,39 +81,28 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
8181
var videoMethod = Unobfuscator.loadMediaQualityVideoMethod2(classLoader);
8282
logDebug(Unobfuscator.getMethodDescriptor(videoMethod));
8383

84-
// var targetFields = Unobfuscator.loadMediaQualityVideoFields(classLoader);
84+
var fields = Unobfuscator.loadMediaQualityVideoFields(classLoader);
8585

8686
XposedBridge.hookMethod(videoMethod, new XC_MethodHook() {
8787
@SuppressLint("DefaultLocale")
8888
@Override
8989
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
9090
if ((int) param.args[1] == 3) {
9191
var resizeVideo = param.getResult();
92-
// var originalVieo = param.args[0];
93-
// if (prefs.getBoolean("video_real_resolution", false)) {
94-
//
95-
//// var targetWidth = targetFields[3].getInt(resizeVideo);
96-
//// var targetHeight = targetFields[4].getInt(resizeVideo);
97-
//// var landscapeDest = targetWidth > targetHeight;
98-
//
99-
//// var sourceWidth = targetFields[0].getInt(resizeVideo);
100-
//// var sourceHeight = targetFields[1].getInt(resizeVideo);
101-
//// var landscapeSource = sourceWidth > sourceHeight;
102-
//
103-
// var widthSrc = XposedHelpers.getIntField(originalVieo, "A05");
104-
// var heightSrc = XposedHelpers.getIntField(originalVieo, "A03");
105-
//// var rotation = (landscapeSource != landscapeDest);
106-
//// logDebug("[targetWidth] = " + targetWidth);
107-
//// logDebug("[targetHeight] = " + targetHeight);
108-
//
109-
//// logDebug(String.format("[sourceWidth][%s] = %d",targetFields[0].getName(), sourceWidth));
110-
//// logDebug(String.format("[sourceHeight][%s] = %d",targetFields[1].getName(), sourceHeight));
111-
//
112-
//// logDebug("[rotation] = " + rotation);
113-
//
114-
// targetFields[3].setInt(resizeVideo, widthSrc);
115-
// targetFields[4].setInt(resizeVideo, heightSrc);
116-
// }
92+
if (prefs.getBoolean("video_real_resolution", false)) {
93+
94+
var sourceWidthField = fields.get("sourceWidth");
95+
var sourceHeightField = fields.get("sourceHeight");
96+
97+
var sourceWidth = sourceWidthField.getInt(resizeVideo);
98+
var sourceHeight = sourceHeightField.getInt(resizeVideo);
99+
100+
var targetWidthField = fields.get("targetWidth");
101+
var targetHeightField = fields.get("targetHeight");
102+
103+
targetHeightField.setInt(resizeVideo, sourceHeight);
104+
targetWidthField.setInt(resizeVideo, sourceWidth);
105+
}
117106
if (prefs.getBoolean("video_maxfps", false)) {
118107
XposedHelpers.setIntField(resizeVideo, "A01", 60);
119108
}

0 commit comments

Comments
 (0)