Add supported video resolutions to MediaDeviceInfo
This is to provide details to the ADL job that will be
handled by yuzhuqin@.
Test: run gts -m GtsMediaTestCases --test com.google.android.media.gts.WidevineH264PlaybackTests#testL1With240P30
Verify MediaDeviceInfo.deviceinfo.json contains
the expected resolution changes.
Bug: 30813404
Change-Id: Ifb69107fb6c27327f2f94c4431a6068257fa9ac2
diff --git a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/MediaDeviceInfo.java b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/MediaDeviceInfo.java
index 8c3ee5a..471c359 100644
--- a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/MediaDeviceInfo.java
+++ b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/MediaDeviceInfo.java
@@ -23,7 +23,9 @@
import android.media.CamcorderProfile;
import android.media.MediaCodecInfo;
+import android.media.MediaCodecInfo.CodecCapabilities;
import android.media.MediaCodecInfo.CodecProfileLevel;
+import android.media.MediaCodecInfo.VideoCapabilities;
import android.media.MediaCodecList;
import com.android.compatibility.common.util.DeviceInfoStore;
@@ -38,9 +40,9 @@
@Override
protected void collectDeviceInfo(DeviceInfoStore store) throws Exception {
+ MediaCodecList allCodecs = new MediaCodecList(MediaCodecList.ALL_CODECS);
store.startArray("media_codec_info");
- for (int i = 0; i < MediaCodecList.getCodecCount(); i++) {
- MediaCodecInfo info = MediaCodecList.getCodecInfoAt(i);
+ for (MediaCodecInfo info : allCodecs.getCodecInfos()) {
store.startGroup();
store.addResult("name", info.getName());
@@ -51,10 +53,10 @@
store.startGroup();
store.addResult("type", type);
- if (info.getCapabilitiesForType(type).profileLevels.length > 0) {
+ CodecCapabilities codecCapabilities = info.getCapabilitiesForType(type);
+ if (codecCapabilities.profileLevels.length > 0) {
store.startArray("codec_profile_level");
- for (CodecProfileLevel profileLevel :
- info.getCapabilitiesForType(type).profileLevels) {
+ for (CodecProfileLevel profileLevel : codecCapabilities.profileLevels) {
store.startGroup();
store.addResult("level", profileLevel.level);
store.addResult("profile", profileLevel.profile);
@@ -62,6 +64,43 @@
}
store.endArray(); // codec_profile_level
}
+ store.addResult("supported_secure_playback", codecCapabilities.isFeatureSupported(
+ CodecCapabilities.FEATURE_SecurePlayback));
+ VideoCapabilities videoCapabilities = codecCapabilities.getVideoCapabilities();
+ if (videoCapabilities != null) {
+ store.startGroup("supported_resolutions");
+ store.addResult(
+ "supported_360p_30fps",
+ videoCapabilities.areSizeAndRateSupported(640, 360, 30));
+ store.addResult(
+ "supported_480p_30fps",
+ videoCapabilities.areSizeAndRateSupported(720, 480, 30));
+ store.addResult(
+ "supported_720p_30fps",
+ videoCapabilities.areSizeAndRateSupported(1280, 720, 30));
+ store.addResult(
+ "supported_1080p_30fps",
+ videoCapabilities.areSizeAndRateSupported(1920, 1080, 30));
+ store.addResult(
+ "supported_4k_30fps",
+ videoCapabilities.areSizeAndRateSupported(3840, 2160, 30));
+ store.addResult(
+ "supported_360p_60fps",
+ videoCapabilities.areSizeAndRateSupported(640, 360, 60));
+ store.addResult(
+ "supported_480p_60fps",
+ videoCapabilities.areSizeAndRateSupported(720, 480, 60));
+ store.addResult(
+ "supported_720p_60fps",
+ videoCapabilities.areSizeAndRateSupported(1280, 720, 60));
+ store.addResult(
+ "supported_1080p_60fps",
+ videoCapabilities.areSizeAndRateSupported(1920, 1080, 60));
+ store.addResult(
+ "supported_4k_60fps",
+ videoCapabilities.areSizeAndRateSupported(3840, 2160, 60));
+ store.endGroup(); // supported_resolutions
+ }
store.endGroup();
}
store.endArray();