diff options
author | Ronghua Wu <ronghuawu@google.com> | 2015-06-01 15:33:18 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-01 15:33:19 +0000 |
commit | bac850e61b63f6932aa880924c5d8effd0bb8079 (patch) | |
tree | 84ff9f5da75e6e66b175a5e09034038181081eee /media | |
parent | 11804f5ca4ebd3527e7cc3bcc529e8358a519f8e (diff) | |
parent | 19352b3287480394aa9963276305d5168a7adf85 (diff) | |
download | frameworks_av-bac850e61b63f6932aa880924c5d8effd0bb8079.zip frameworks_av-bac850e61b63f6932aa880924c5d8effd0bb8079.tar.gz frameworks_av-bac850e61b63f6932aa880924c5d8effd0bb8079.tar.bz2 |
Merge "libstagefright: add version string to profile results." into mnc-dev
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/MediaCodecList.cpp | 18 | ||||
-rw-r--r-- | media/libstagefright/MediaCodecListOverrides.cpp | 12 | ||||
-rw-r--r-- | media/libstagefright/MediaCodecListOverrides.h | 3 | ||||
-rw-r--r-- | media/libstagefright/tests/MediaCodecListOverrides_test.cpp | 6 |
4 files changed, 36 insertions, 3 deletions
diff --git a/media/libstagefright/MediaCodecList.cpp b/media/libstagefright/MediaCodecList.cpp index 6708828..f366b1f 100644 --- a/media/libstagefright/MediaCodecList.cpp +++ b/media/libstagefright/MediaCodecList.cpp @@ -73,10 +73,24 @@ sp<IMediaCodecList> MediaCodecList::getLocalInstance() { if (gCodecList->initCheck() == OK) { sCodecList = gCodecList; - struct stat s; - if (stat(kProfilingResults, &s) == -1) { + FILE *resultsFile = fopen(kProfilingResults, "r"); + if (resultsFile) { + AString currentVersion = getProfilingVersionString(); + size_t currentVersionSize = currentVersion.size(); + char *versionString = new char[currentVersionSize]; + fgets(versionString, currentVersionSize, resultsFile); + if (strncmp(versionString, currentVersion.c_str(), currentVersionSize) != 0) { + // profiling result out of date + profilingNeeded = true; + } + fclose(resultsFile); + delete[] versionString; + } else { // profiling results doesn't existed profilingNeeded = true; + } + + if (profilingNeeded) { for (size_t i = 0; i < gCodecList->countCodecs(); ++i) { infos.push_back(gCodecList->getCodecInfo(i)); } diff --git a/media/libstagefright/MediaCodecListOverrides.cpp b/media/libstagefright/MediaCodecListOverrides.cpp index 006454d..a928163 100644 --- a/media/libstagefright/MediaCodecListOverrides.cpp +++ b/media/libstagefright/MediaCodecListOverrides.cpp @@ -20,6 +20,7 @@ #include "MediaCodecListOverrides.h" +#include <cutils/properties.h> #include <gui/Surface.h> #include <media/ICrypto.h> #include <media/IMediaCodecList.h> @@ -34,6 +35,15 @@ namespace android { const char *kProfilingResults = "/data/misc/media/media_codecs_profiling_results.xml"; +AString getProfilingVersionString() { + char val[PROPERTY_VALUE_MAX]; + if (property_get("ro.build.display.id", val, NULL) && (strlen(val) > 0)) { + return AStringPrintf("<!-- Profiled-with: %s -->", val); + } + + return "<!-- Profiled-with: UNKNOWN_BUILD_ID -->"; +} + // a limit to avoid allocating unreasonable number of codec instances in the measurement. // this should be in sync with the MAX_SUPPORTED_INSTANCES defined in MediaCodecInfo.java. static const int kMaxInstances = 32; @@ -375,6 +385,8 @@ void exportResultsToXML( } AString overrides; + overrides.append(getProfilingVersionString()); + overrides.append("\n"); overrides.append("<MediaCodecs>\n"); if (global_results.size() > 0) { overrides.append(" <Settings>\n"); diff --git a/media/libstagefright/MediaCodecListOverrides.h b/media/libstagefright/MediaCodecListOverrides.h index e350d2a..d4bb225 100644 --- a/media/libstagefright/MediaCodecListOverrides.h +++ b/media/libstagefright/MediaCodecListOverrides.h @@ -26,10 +26,13 @@ namespace android { +extern const char *kProfilingVersionString; extern const char *kProfilingResults; struct MediaCodecInfo; +AString getProfilingVersionString(); + bool splitString(const AString &s, const AString &delimiter, AString *s1, AString *s2); // profile codecs and save the result to xml file named kProfilingResults. diff --git a/media/libstagefright/tests/MediaCodecListOverrides_test.cpp b/media/libstagefright/tests/MediaCodecListOverrides_test.cpp index cee62a3..ab547be 100644 --- a/media/libstagefright/tests/MediaCodecListOverrides_test.cpp +++ b/media/libstagefright/tests/MediaCodecListOverrides_test.cpp @@ -150,7 +150,11 @@ TEST_F(MediaCodecListOverridesTest, exportTestResultsToXML) { fclose(f); free(buf); - EXPECT_TRUE(overrides == kTestOverridesStr); + AString expected; + expected.append(getProfilingVersionString()); + expected.append("\n"); + expected.append(kTestOverridesStr); + EXPECT_TRUE(overrides == expected); remove(fileName); } |