CtsMediaV2: add media-type-prefix to filter codecs by mediaType
Bug: 220996045
Test: atest CtsMediaV2TestCases -- --module-arg \
CtsMediaV2TestCases:instrumentation-arg:media-type-prefix:=audio
Change-Id: I232b0abb4d96f0d1fc1f9d50822ac7250beeb332
diff --git a/tests/media/src/android/mediav2/cts/CodecTestBase.java b/tests/media/src/android/mediav2/cts/CodecTestBase.java
index a529d97..559f6eb 100644
--- a/tests/media/src/android/mediav2/cts/CodecTestBase.java
+++ b/tests/media/src/android/mediav2/cts/CodecTestBase.java
@@ -595,6 +595,7 @@
}
static final String CODEC_PREFIX_KEY = "codec-prefix";
+ static final String MEDIA_TYPE_PREFIX_KEY = "media-type-prefix";
static final String MIME_SEL_KEY = "mime-sel";
static final Map<String, String> codecSelKeyMimeMap = new HashMap<>();
static final Map<String, String> mDefaultEncoders = new HashMap<>();
@@ -649,6 +650,7 @@
static final PackageManager pm = mContext.getPackageManager();
static String mimeSelKeys;
static String codecPrefix;
+ static String mediaTypePrefix;
CodecAsyncHandler mAsyncHandle;
boolean mIsCodecInAsyncMode;
@@ -696,6 +698,7 @@
android.os.Bundle args = InstrumentationRegistry.getArguments();
mimeSelKeys = args.getString(MIME_SEL_KEY);
codecPrefix = args.getString(CODEC_PREFIX_KEY);
+ mediaTypePrefix = args.getString(MEDIA_TYPE_PREFIX_KEY);
mProfileSdrMap.put(MediaFormat.MIMETYPE_VIDEO_AVC, AVC_SDR_PROFILES);
mProfileSdrMap.put(MediaFormat.MIMETYPE_VIDEO_HEVC, HEVC_SDR_PROFILES);
@@ -922,6 +925,9 @@
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && codecInfo.isAlias()) continue;
String[] types = codecInfo.getSupportedTypes();
for (String type : types) {
+ if (mediaTypePrefix != null && !type.startsWith(mediaTypePrefix)) {
+ continue;
+ }
if (!needAudio && type.startsWith("audio/")) continue;
if (!needVideo && type.startsWith("video/")) continue;
if (!mimes.contains(type)) {
@@ -929,6 +935,9 @@
}
}
}
+ if (mediaTypePrefix != null) {
+ return mimes;
+ }
// feature_video_output is not exposed to package manager. Testing for video output
// ports, such as VGA, HDMI, DisplayPort, or a wireless port for display is also not
// direct.