Add more details to --list-encoders output
Add more information about each codec (hw/sw, vendor, alias). Before: [server] INFO: List of video encoders: --video-codec=h264 --video-encoder=c2.exynos.h264.encoder --video-codec=h264 --video-encoder=c2.android.avc.encoder --video-codec=h264 --video-encoder=OMX.google.h264.encoder --video-codec=h265 --video-encoder=c2.exynos.hevc.encoder --video-codec=h265 --video-encoder=c2.android.hevc.encoder --video-codec=av1 --video-encoder=c2.google.av1.encoder --video-codec=av1 --video-encoder=c2.android.av1.encoder // audio encoders omitted After: [server] INFO: List of video encoders: --video-codec=h264 --video-encoder=c2.exynos.h264.encoder (hw) [vendor] --video-codec=h264 --video-encoder=c2.android.avc.encoder (sw) --video-codec=h264 --video-encoder=OMX.google.h264.encoder (sw) (alias for c2.android.avc.encoder) --video-codec=h265 --video-encoder=c2.exynos.hevc.encoder (hw) [vendor] --video-codec=h265 --video-encoder=c2.android.hevc.encoder (sw) --video-codec=av1 --video-encoder=c2.google.av1.encoder (hw) [vendor] --video-codec=av1 --video-encoder=c2.android.av1.encoder (sw) // audio encoders omitted PR #5416 <https://github.com/Genymobile/scrcpy/pull/5416>
This commit is contained in:
parent
5474ae6bd6
commit
acff5b005c
@ -1,5 +1,6 @@
|
||||
package com.genymobile.scrcpy.util;
|
||||
|
||||
import com.genymobile.scrcpy.AndroidVersions;
|
||||
import com.genymobile.scrcpy.audio.AudioCodec;
|
||||
import com.genymobile.scrcpy.device.Device;
|
||||
import com.genymobile.scrcpy.device.DeviceApp;
|
||||
@ -10,6 +11,7 @@ import com.genymobile.scrcpy.wrappers.DisplayManager;
|
||||
import com.genymobile.scrcpy.wrappers.ServiceManager;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
import android.graphics.Rect;
|
||||
import android.hardware.camera2.CameraAccessException;
|
||||
import android.hardware.camera2.CameraCharacteristics;
|
||||
@ -18,6 +20,7 @@ import android.hardware.camera2.params.StreamConfigurationMap;
|
||||
import android.media.MediaCodec;
|
||||
import android.media.MediaCodecInfo;
|
||||
import android.media.MediaCodecList;
|
||||
import android.os.Build;
|
||||
import android.util.Range;
|
||||
|
||||
import java.util.Collections;
|
||||
@ -38,8 +41,25 @@ public final class LogUtils {
|
||||
for (Codec codec : codecs) {
|
||||
MediaCodecInfo[] encoders = CodecUtils.getEncoders(codecList, codec.getMimeType());
|
||||
for (MediaCodecInfo info : encoders) {
|
||||
int lineStart = builder.length();
|
||||
builder.append("\n --").append(type).append("-codec=").append(codec.getName());
|
||||
builder.append(" --").append(type).append("-encoder=").append(info.getName());
|
||||
if (Build.VERSION.SDK_INT >= AndroidVersions.API_29_ANDROID_10) {
|
||||
int lineLength = builder.length() - lineStart;
|
||||
final int column = 70;
|
||||
if (lineLength < column) {
|
||||
int padding = column - lineLength;
|
||||
builder.append(String.format("%" + padding + "s", " "));
|
||||
}
|
||||
builder.append(" (").append(getHwCodecType(info)).append(')');
|
||||
if (info.isVendor()) {
|
||||
builder.append(" [vendor]");
|
||||
}
|
||||
if (info.isAlias()) {
|
||||
builder.append(" (alias for ").append(info.getCanonicalName()).append(')');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,6 +74,17 @@ public final class LogUtils {
|
||||
return buildEncoderListMessage("audio", AudioCodec.values());
|
||||
}
|
||||
|
||||
@TargetApi(AndroidVersions.API_29_ANDROID_10)
|
||||
private static String getHwCodecType(MediaCodecInfo info) {
|
||||
if (info.isSoftwareOnly()) {
|
||||
return "sw";
|
||||
}
|
||||
if (info.isHardwareAccelerated()) {
|
||||
return "hw";
|
||||
}
|
||||
return "hybrid";
|
||||
}
|
||||
|
||||
public static String buildDisplayListMessage() {
|
||||
StringBuilder builder = new StringBuilder("List of displays:");
|
||||
DisplayManager displayManager = ServiceManager.getDisplayManager();
|
||||
|
Loading…
x
Reference in New Issue
Block a user