Skip to content

Commit 7854ed6

Browse files
add java desugaring to CodecMod
1 parent bb02162 commit 7854ed6

File tree

4 files changed

+23
-20
lines changed

4 files changed

+23
-20
lines changed

CodecMod/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ android {
99
minSdk = 16
1010
targetSdk = 35
1111
}
12+
compileOptions {
13+
isCoreLibraryDesugaringEnabled = true
14+
}
1215
}
1316
dependencies {
1417
implementation(libs.androidx.preference)
18+
coreLibraryDesugaring(libs.android.desugarJdkLibs)
1519
}

CodecMod/src/main/java/com/programminghoch10/CodecMod/Hook.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,11 @@ public class Hook implements IXposedHookLoadPackage {
2020

2121
MediaCodecInfo[] getFilteredMediaCodecInfos(MediaCodecInfo[] unfilteredMediaCodecInfos) {
2222
CodecStore codecStore = new CodecStore();
23-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
24-
return Arrays.stream(unfilteredMediaCodecInfos)
25-
.filter(mediaCodecInfo ->
26-
codecStore.getCodecPreference(new MediaCodecInfoWrapper(mediaCodecInfo))
27-
)
28-
.toArray(MediaCodecInfo[]::new);
29-
}
30-
LinkedList<MediaCodecInfo> filteredMediaCodecs = new LinkedList<>();
31-
for (MediaCodecInfo mediaCodecInfo : unfilteredMediaCodecInfos) {
32-
if (codecStore.getCodecPreference(new MediaCodecInfoWrapper(mediaCodecInfo)))
33-
filteredMediaCodecs.add(mediaCodecInfo);
34-
}
35-
return filteredMediaCodecs.toArray(new MediaCodecInfo[0]);
23+
return Arrays.stream(unfilteredMediaCodecInfos)
24+
.map(MediaCodecInfoWrapper::new)
25+
.filter(codecStore::getCodecPreference)
26+
.map(MediaCodecInfoWrapper::getOriginalMediaCodecInfo)
27+
.toArray(MediaCodecInfo[]::new);
3628
}
3729

3830
// helper function, only to be used on <LOLLIPOP
@@ -42,7 +34,7 @@ MediaCodecInfo[] getFilteredMediaCodecInfos() throws InvocationTargetException,
4234
final int codecCount = (int) XposedBridge.invokeOriginalMethod(XposedHelpers.findMethodExact(MediaCodecList.class, "getCodecCount"), null, null);
4335
for (int i = 0; i < codecCount; i++)
4436
mediaCodecs.add((MediaCodecInfo) XposedBridge.invokeOriginalMethod(XposedHelpers.findMethodExact(MediaCodecList.class, "getCodecInfoAt"), null, new Object[]{i}));
45-
return getFilteredMediaCodecInfos(mediaCodecs.toArray(new MediaCodecInfo[0]));
37+
return getFilteredMediaCodecInfos(mediaCodecs.toArray(MediaCodecInfo[]::new));
4638
}
4739

4840
@Override

CodecMod/src/main/java/com/programminghoch10/CodecMod/MediaCodecInfoWrapper.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.programminghoch10.CodecMod;
22

3+
import android.media.MediaCodecInfo;
34
import android.os.Build;
45

56
import androidx.annotation.RequiresApi;
@@ -8,15 +9,19 @@
89
* drop in replacement for MediaCodecInfo
910
* with compatibility checks for older SDKs
1011
*
11-
* @see android.media.MediaCodecInfo
12+
* @see MediaCodecInfo
1213
*/
1314
public class MediaCodecInfoWrapper {
14-
private final android.media.MediaCodecInfo mediaCodecInfo;
15+
private final MediaCodecInfo mediaCodecInfo;
1516

16-
MediaCodecInfoWrapper(android.media.MediaCodecInfo mediaCodecInfo) {
17+
MediaCodecInfoWrapper(MediaCodecInfo mediaCodecInfo) {
1718
this.mediaCodecInfo = mediaCodecInfo;
1819
}
1920

21+
public MediaCodecInfo getOriginalMediaCodecInfo() {
22+
return mediaCodecInfo;
23+
}
24+
2025
public String getCanonicalName() {
2126
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
2227
return mediaCodecInfo.getCanonicalName();

CodecMod/src/main/java/com/programminghoch10/CodecMod/SettingsActivity.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,14 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
4545
PreferenceCategory decodersPreferenceCategory = findPreference("category_decoders");
4646
PreferenceCategory encodersPreferenceCategory = findPreference("category_encoders");
4747

48-
List<MediaCodecInfoWrapper> mediaCodecs = new LinkedList<>();
48+
List<MediaCodecInfoWrapper> mediaCodecs;
4949
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
5050
MediaCodecList mediaCodecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
51-
for (android.media.MediaCodecInfo mediaCodecInfo : mediaCodecList.getCodecInfos())
52-
mediaCodecs.add(new MediaCodecInfoWrapper(mediaCodecInfo));
51+
mediaCodecs = Arrays.stream(mediaCodecList.getCodecInfos())
52+
.map(MediaCodecInfoWrapper::new)
53+
.toList();
5354
} else {
55+
mediaCodecs = new LinkedList<>();
5456
for (int i = 0; i < MediaCodecList.getCodecCount(); i++)
5557
mediaCodecs.add(new MediaCodecInfoWrapper(MediaCodecList.getCodecInfoAt(i)));
5658
}

0 commit comments

Comments
 (0)