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();