summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/tests
diff options
context:
space:
mode:
authorRonghua Wu <ronghuawu@google.com>2015-05-08 00:45:15 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-08 00:45:16 +0000
commit2a834fc09e1b22e7f70250c55ae2f462f5f60987 (patch)
tree4b1627f8c579b42a4aa2396f3f094764d2faf5b8 /media/libstagefright/tests
parent6ff06612638a13faa85c6219d42a9c4b645003d9 (diff)
parent65c8fbcf91f0f0b5f60a45d2777c36d396c4ba16 (diff)
downloadframeworks_av-2a834fc09e1b22e7f70250c55ae2f462f5f60987.zip
frameworks_av-2a834fc09e1b22e7f70250c55ae2f462f5f60987.tar.gz
frameworks_av-2a834fc09e1b22e7f70250c55ae2f462f5f60987.tar.bz2
Merge "libstagefright: export profiling results directly to xml." into mnc-dev
Diffstat (limited to 'media/libstagefright/tests')
-rw-r--r--media/libstagefright/tests/MediaCodecListOverrides_test.cpp236
1 files changed, 38 insertions, 198 deletions
diff --git a/media/libstagefright/tests/MediaCodecListOverrides_test.cpp b/media/libstagefright/tests/MediaCodecListOverrides_test.cpp
index 170cde3..146a244 100644
--- a/media/libstagefright/tests/MediaCodecListOverrides_test.cpp
+++ b/media/libstagefright/tests/MediaCodecListOverrides_test.cpp
@@ -31,29 +31,8 @@ namespace android {
static const char kTestOverridesStr[] =
"<MediaCodecs>\n"
" <Settings>\n"
-" <Setting name=\"max-max-supported-instances\" value=\"8\" update=\"true\" />\n"
-" </Settings>\n"
-" <Encoders>\n"
-" <MediaCodec name=\"OMX.qcom.video.encoder.mpeg4\" type=\"video/mp4v-es\" update=\"true\" >\n"
-" <Quirk name=\"requires-allocate-on-input-ports\" />\n"
-" <Limit name=\"bitrate\" range=\"1-20000000\" />\n"
-" <Feature name=\"can-swap-width-height\" />\n"
-" </MediaCodec>\n"
-" </Encoders>\n"
-" <Decoders>\n"
-" <MediaCodec name=\"OMX.qcom.video.decoder.avc\" type=\"video/avc\" update=\"true\" >\n"
-" <Quirk name=\"requires-allocate-on-input-ports\" />\n"
-" <Limit name=\"size\" min=\"64x64\" max=\"1920x1088\" />\n"
-" </MediaCodec>\n"
-" <MediaCodec name=\"OMX.qcom.video.decoder.mpeg2\" type=\"different_mime\" update=\"true\" >\n"
-" </MediaCodec>\n"
-" </Decoders>\n"
-"</MediaCodecs>\n";
-
-static const char kTestOverridesStrNew1[] =
-"<MediaCodecs>\n"
-" <Settings>\n"
-" <Setting name=\"max-max-supported-instances\" value=\"8\" update=\"true\" />\n"
+" <Setting name=\"supports-multiple-secure-codecs\" value=\"false\" />\n"
+" <Setting name=\"supports-secure-with-non-secure-codec\" value=\"true\" />\n"
" </Settings>\n"
" <Encoders>\n"
" <MediaCodec name=\"OMX.qcom.video.encoder.avc\" type=\"video/avc\" update=\"true\" >\n"
@@ -61,57 +40,21 @@ static const char kTestOverridesStrNew1[] =
" </MediaCodec>\n"
" <MediaCodec name=\"OMX.qcom.video.encoder.mpeg4\" type=\"video/mp4v-es\" update=\"true\" >\n"
" <Limit name=\"max-supported-instances\" value=\"4\" />\n"
-" <Quirk name=\"requires-allocate-on-input-ports\" />\n"
-" <Limit name=\"bitrate\" range=\"1-20000000\" />\n"
-" <Feature name=\"can-swap-width-height\" />\n"
" </MediaCodec>\n"
" </Encoders>\n"
" <Decoders>\n"
-" <MediaCodec name=\"OMX.qcom.video.decoder.mpeg4\" type=\"video/mp4v-es\" update=\"true\" >\n"
-" <Limit name=\"max-supported-instances\" value=\"3\" />\n"
-" </MediaCodec>\n"
-" <MediaCodec name=\"OMX.qcom.video.decoder.h263\" type=\"video/3gpp\" update=\"true\" >\n"
-" <Limit name=\"max-supported-instances\" value=\"4\" />\n"
-" </MediaCodec>\n"
" <MediaCodec name=\"OMX.qcom.video.decoder.avc.secure\" type=\"video/avc\" update=\"true\" >\n"
" <Limit name=\"max-supported-instances\" value=\"1\" />\n"
" </MediaCodec>\n"
-" <MediaCodec name=\"OMX.qcom.video.decoder.avc\" type=\"video/avc\" update=\"true\" >\n"
-" <Quirk name=\"requires-allocate-on-input-ports\" />\n"
-" <Limit name=\"size\" min=\"64x64\" max=\"1920x1088\" />\n"
-" </MediaCodec>\n"
-" <MediaCodec name=\"OMX.qcom.video.decoder.mpeg2\" type=\"different_mime\" update=\"true\" >\n"
+" <MediaCodec name=\"OMX.qcom.video.decoder.h263\" type=\"video/3gpp\" update=\"true\" >\n"
+" <Limit name=\"max-supported-instances\" value=\"4\" />\n"
" </MediaCodec>\n"
" <MediaCodec name=\"OMX.qcom.video.decoder.mpeg2\" type=\"video/mpeg2\" update=\"true\" >\n"
" <Limit name=\"max-supported-instances\" value=\"3\" />\n"
" </MediaCodec>\n"
-" </Decoders>\n"
-"</MediaCodecs>\n";
-
-static const char kTestOverridesStrNew2[] =
-"\n"
-"<MediaCodecs>\n"
-" <Encoders>\n"
-" <MediaCodec name=\"OMX.qcom.video.encoder.mpeg4\" type=\"video/mp4v-es\" update=\"true\" >\n"
-" <Limit name=\"max-supported-instances\" value=\"4\" />\n"
-" </MediaCodec>\n"
-" <MediaCodec name=\"OMX.qcom.video.encoder.avc\" type=\"video/avc\" update=\"true\" >\n"
-" <Limit name=\"max-supported-instances\" value=\"4\" />\n"
-" </MediaCodec>\n"
-" </Encoders>\n"
-" <Decoders>\n"
" <MediaCodec name=\"OMX.qcom.video.decoder.mpeg4\" type=\"video/mp4v-es\" update=\"true\" >\n"
" <Limit name=\"max-supported-instances\" value=\"3\" />\n"
" </MediaCodec>\n"
-" <MediaCodec name=\"OMX.qcom.video.decoder.mpeg2\" type=\"video/mpeg2\" update=\"true\" >\n"
-" <Limit name=\"max-supported-instances\" value=\"3\" />\n"
-" </MediaCodec>\n"
-" <MediaCodec name=\"OMX.qcom.video.decoder.h263\" type=\"video/3gpp\" update=\"true\" >\n"
-" <Limit name=\"max-supported-instances\" value=\"4\" />\n"
-" </MediaCodec>\n"
-" <MediaCodec name=\"OMX.qcom.video.decoder.avc.secure\" type=\"video/avc\" update=\"true\" >\n"
-" <Limit name=\"max-supported-instances\" value=\"1\" />\n"
-" </MediaCodec>\n"
" </Decoders>\n"
"</MediaCodecs>\n";
@@ -119,53 +62,6 @@ class MediaCodecListOverridesTest : public ::testing::Test {
public:
MediaCodecListOverridesTest() {}
- void verifyOverrides(const KeyedVector<AString, CodecSettings> &overrides) {
- EXPECT_EQ(3u, overrides.size());
-
- EXPECT_TRUE(overrides.keyAt(0) == "OMX.qcom.video.decoder.avc video/avc decoder");
- const CodecSettings &settings0 = overrides.valueAt(0);
- EXPECT_EQ(1u, settings0.size());
- EXPECT_TRUE(settings0.keyAt(0) == "max-supported-instances");
- EXPECT_TRUE(settings0.valueAt(0) == "4");
-
- EXPECT_TRUE(overrides.keyAt(1) == "OMX.qcom.video.encoder.avc video/avc encoder");
- const CodecSettings &settings1 = overrides.valueAt(1);
- EXPECT_EQ(1u, settings1.size());
- EXPECT_TRUE(settings1.keyAt(0) == "max-supported-instances");
- EXPECT_TRUE(settings1.valueAt(0) == "3");
-
- EXPECT_TRUE(overrides.keyAt(2) == "global");
- const CodecSettings &settings2 = overrides.valueAt(2);
- EXPECT_EQ(3u, settings2.size());
- EXPECT_TRUE(settings2.keyAt(0) == "max-max-supported-instances");
- EXPECT_TRUE(settings2.valueAt(0) == "8");
- EXPECT_TRUE(settings2.keyAt(1) == "supports-multiple-secure-codecs");
- EXPECT_TRUE(settings2.valueAt(1) == "false");
- EXPECT_TRUE(settings2.keyAt(2) == "supports-secure-with-non-secure-codec");
- EXPECT_TRUE(settings2.valueAt(2) == "true");
- }
-
- void verifySetting(const sp<AMessage> &details, const char *name, const char *value) {
- AString value1;
- EXPECT_TRUE(details->findString(name, &value1));
- EXPECT_TRUE(value1 == value);
- }
-
- void createTestInfos(Vector<sp<MediaCodecInfo>> *infos) {
- const char *name = "OMX.qcom.video.decoder.avc";
- const bool encoder = false;
- const char *mime = "video/avc";
- sp<MediaCodecInfo> info = new MediaCodecInfo(name, encoder, mime);
- infos->push_back(info);
- const sp<MediaCodecInfo::Capabilities> caps = info->getCapabilitiesFor(mime);
- const sp<AMessage> details = caps->getDetails();
- details->setString("cap1", "value1");
- details->setString("max-max-supported-instances", "16");
-
- info = new MediaCodecInfo("anothercodec", true, "anothermime");
- infos->push_back(info);
- }
-
void addMaxInstancesSetting(
const AString &key,
const AString &value,
@@ -175,16 +71,34 @@ public:
results->add(key, settings);
}
- void exportTestResultsToXML(const char *fileName) {
- KeyedVector<AString, CodecSettings> r;
- addMaxInstancesSetting("OMX.qcom.video.decoder.avc.secure video/avc decoder", "1", &r);
- addMaxInstancesSetting("OMX.qcom.video.decoder.h263 video/3gpp decoder", "4", &r);
- addMaxInstancesSetting("OMX.qcom.video.decoder.mpeg2 video/mpeg2 decoder", "3", &r);
- addMaxInstancesSetting("OMX.qcom.video.decoder.mpeg4 video/mp4v-es decoder", "3", &r);
- addMaxInstancesSetting("OMX.qcom.video.encoder.avc video/avc encoder", "4", &r);
- addMaxInstancesSetting("OMX.qcom.video.encoder.mpeg4 video/mp4v-es encoder", "4", &r);
+ void verifyProfileResults(const KeyedVector<AString, CodecSettings> &results) {
+ EXPECT_LT(0u, results.size());
+ for (size_t i = 0; i < results.size(); ++i) {
+ AString key = results.keyAt(i);
+ CodecSettings settings = results.valueAt(i);
+ EXPECT_EQ(1u, settings.size());
+ EXPECT_TRUE(settings.keyAt(0) == "max-supported-instances");
+ AString valueS = settings.valueAt(0);
+ int32_t value = strtol(valueS.c_str(), NULL, 10);
+ EXPECT_LT(0, value);
+ ALOGV("profileCodecs results %s %s", key.c_str(), valueS.c_str());
+ }
+ }
- exportResultsToXML(fileName, r);
+ void exportTestResultsToXML(const char *fileName) {
+ CodecSettings gR;
+ gR.add("supports-multiple-secure-codecs", "false");
+ gR.add("supports-secure-with-non-secure-codec", "true");
+ KeyedVector<AString, CodecSettings> eR;
+ addMaxInstancesSetting("OMX.qcom.video.encoder.avc video/avc", "4", &eR);
+ addMaxInstancesSetting("OMX.qcom.video.encoder.mpeg4 video/mp4v-es", "4", &eR);
+ KeyedVector<AString, CodecSettings> dR;
+ addMaxInstancesSetting("OMX.qcom.video.decoder.avc.secure video/avc", "1", &dR);
+ addMaxInstancesSetting("OMX.qcom.video.decoder.h263 video/3gpp", "4", &dR);
+ addMaxInstancesSetting("OMX.qcom.video.decoder.mpeg2 video/mpeg2", "3", &dR);
+ addMaxInstancesSetting("OMX.qcom.video.decoder.mpeg4 video/mp4v-es", "3", &dR);
+
+ exportResultsToXML(fileName, gR, eR, dR);
}
};
@@ -198,18 +112,6 @@ TEST_F(MediaCodecListOverridesTest, splitString) {
EXPECT_TRUE(splitString(s, delimiter, &s1, &s2));
EXPECT_TRUE(s1 == "abc");
EXPECT_TRUE(s2 == "123");
-
- s = "abc123xyz";
- delimiter = ",";
- AString s3;
- EXPECT_FALSE(splitString(s, delimiter, &s1, &s2, &s3));
- s = "abc,123xyz";
- EXPECT_FALSE(splitString(s, delimiter, &s1, &s2, &s3));
- s = "abc,123,xyz";
- EXPECT_TRUE(splitString(s, delimiter, &s1, &s2, &s3));
- EXPECT_TRUE(s1 == "abc");
- EXPECT_TRUE(s2 == "123" );
- EXPECT_TRUE(s3 == "xyz");
}
// TODO: the codec component never returns OMX_EventCmdComplete in unit test.
@@ -219,76 +121,14 @@ TEST_F(MediaCodecListOverridesTest, DISABLED_profileCodecs) {
for (size_t i = 0; i < list->countCodecs(); ++i) {
infos.push_back(list->getCodecInfo(i));
}
- KeyedVector<AString, CodecSettings> results;
- profileCodecs(infos, &results, true /* forceToMeasure */);
- EXPECT_LT(0u, results.size());
- for (size_t i = 0; i < results.size(); ++i) {
- AString key = results.keyAt(i);
- CodecSettings settings = results.valueAt(i);
- EXPECT_EQ(1u, settings.size());
- EXPECT_TRUE(settings.keyAt(0) == "max-supported-instances");
- AString valueS = settings.valueAt(0);
- int32_t value = strtol(valueS.c_str(), NULL, 10);
- EXPECT_LT(0, value);
- ALOGV("profileCodecs results %s %s", key.c_str(), valueS.c_str());
- }
-}
-
-TEST_F(MediaCodecListOverridesTest, applyCodecSettings) {
- AString codecInfo = "OMX.qcom.video.decoder.avc video/avc decoder";
- Vector<sp<MediaCodecInfo>> infos;
- createTestInfos(&infos);
- CodecSettings settings;
- settings.add("max-supported-instances", "3");
- settings.add("max-max-supported-instances", "8");
- applyCodecSettings(codecInfo, settings, &infos);
-
- EXPECT_EQ(2u, infos.size());
- EXPECT_TRUE(AString(infos[0]->getCodecName()) == "OMX.qcom.video.decoder.avc");
- const sp<AMessage> details = infos[0]->getCapabilitiesFor("video/avc")->getDetails();
- verifySetting(details, "max-supported-instances", "3");
- verifySetting(details, "max-max-supported-instances", "8");
-
- EXPECT_TRUE(AString(infos[1]->getCodecName()) == "anothercodec");
- EXPECT_EQ(0u, infos[1]->getCapabilitiesFor("anothermime")->getDetails()->countEntries());
-}
-
-TEST_F(MediaCodecListOverridesTest, exportResultsToExistingFile) {
- const char *fileName = "/sdcard/mediacodec_list_overrides_test.xml";
- remove(fileName);
-
- FILE *f = fopen(fileName, "wb");
- if (f == NULL) {
- ALOGW("Failed to open %s for writing.", fileName);
- return;
- }
- EXPECT_EQ(
- strlen(kTestOverridesStr),
- fwrite(kTestOverridesStr, 1, strlen(kTestOverridesStr), f));
- fclose(f);
-
- exportTestResultsToXML(fileName);
-
- // verify
- AString overrides;
- f = fopen(fileName, "rb");
- ASSERT_TRUE(f != NULL);
- fseek(f, 0, SEEK_END);
- long size = ftell(f);
- rewind(f);
-
- char *buf = (char *)malloc(size);
- EXPECT_EQ((size_t)1, fread(buf, size, 1, f));
- overrides.setTo(buf, size);
- fclose(f);
- free(buf);
-
- EXPECT_TRUE(overrides == kTestOverridesStrNew1);
-
- remove(fileName);
+ KeyedVector<AString, CodecSettings> encoder_results;
+ KeyedVector<AString, CodecSettings> decoder_results;
+ profileCodecs(infos, &encoder_results, &decoder_results, true /* forceToMeasure */);
+ verifyProfileResults(encoder_results);
+ verifyProfileResults(decoder_results);
}
-TEST_F(MediaCodecListOverridesTest, exportResultsToEmptyFile) {
+TEST_F(MediaCodecListOverridesTest, exportTestResultsToXML) {
const char *fileName = "/sdcard/mediacodec_list_overrides_test.xml";
remove(fileName);
@@ -308,7 +148,7 @@ TEST_F(MediaCodecListOverridesTest, exportResultsToEmptyFile) {
fclose(f);
free(buf);
- EXPECT_TRUE(overrides == kTestOverridesStrNew2);
+ EXPECT_TRUE(overrides == kTestOverridesStr);
remove(fileName);
}