Fix EncodeVirtualDisplayTest CTS test.
If there are no media codecs present, then don’t
run the test.
Bug: 15449286
Change-Id: I44d34fb75d9bd2b25f1b95faa02a7078c532f045
diff --git a/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
index fce343e..39c7b77 100644
--- a/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
+++ b/tests/tests/media/src/android/media/cts/EncodeVirtualDisplayTest.java
@@ -19,6 +19,7 @@
import android.app.Presentation;
import android.media.MediaCodec;
import android.media.MediaCodecInfo;
+import android.media.MediaCodecList;
import android.media.MediaFormat;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
@@ -150,6 +151,25 @@
}
}
+ private static boolean hasCodec(String mimeType) {
+ int numCodecs = MediaCodecList.getCodecCount();
+ for (int i = 0; i < numCodecs; i++) {
+ MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);
+
+ if (!codecInfo.isEncoder()) {
+ continue;
+ }
+
+ String[] types = codecInfo.getSupportedTypes();
+ for (int j = 0; j < types.length; j++) {
+ if (types[j].equalsIgnoreCase(mimeType)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
/**
* Prepares the encoder, decoder, and virtual display.
*/
@@ -159,6 +179,11 @@
OutputSurface outputSurface = null;
VirtualDisplay virtualDisplay = null;
+ // Don't run the test of the codec isn't present.
+ if (!hasCodec(MIME_TYPE)) {
+ return;
+ }
+
try {
// Encoded video resolution matches virtual display.
MediaFormat encoderFormat = MediaFormat.createVideoFormat(MIME_TYPE, WIDTH, HEIGHT);