Loading media/libstagefright/MediaCodecList.cpp +16 −2 Original line number Diff line number Diff line Loading @@ -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)); } Loading media/libstagefright/MediaCodecListOverrides.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include "MediaCodecListOverrides.h" #include <cutils/properties.h> #include <gui/Surface.h> #include <media/ICrypto.h> #include <media/IMediaCodecList.h> Loading @@ -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; Loading Loading @@ -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"); Loading media/libstagefright/MediaCodecListOverrides.h +3 −0 Original line number Diff line number Diff line Loading @@ -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. Loading media/libstagefright/tests/MediaCodecListOverrides_test.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading
media/libstagefright/MediaCodecList.cpp +16 −2 Original line number Diff line number Diff line Loading @@ -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)); } Loading
media/libstagefright/MediaCodecListOverrides.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include "MediaCodecListOverrides.h" #include <cutils/properties.h> #include <gui/Surface.h> #include <media/ICrypto.h> #include <media/IMediaCodecList.h> Loading @@ -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; Loading Loading @@ -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"); Loading
media/libstagefright/MediaCodecListOverrides.h +3 −0 Original line number Diff line number Diff line Loading @@ -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. Loading
media/libstagefright/tests/MediaCodecListOverrides_test.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -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); } Loading