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