commit | 6155085b781a81af66d42d907c9f4d1063999594 | [log] [tgz] |
---|---|---|
author | Marco Nelissen <marcone@google.com> | Fri Jun 12 15:31:23 2015 -0700 |
committer | Marco Nelissen <marcone@google.com> | Fri Jun 12 15:31:23 2015 -0700 |
tree | 8296eeaa60734e6f5711b1487aa793fa5eef0a99 | |
parent | ad9ef61e770c0751a9983aa5c9844dfeb9ed665b [diff] |
Serialize calls to getFrameAtTime in the mediaserver to avoid running out of memory. Bug: 21277449 Change-Id: I7210806a24958f38d86aadab0310fc263e4c0edf
diff --git a/media/libmediaplayerservice/MetadataRetrieverClient.cpp b/media/libmediaplayerservice/MetadataRetrieverClient.cpp index 9a37302..a5a1fa5 100644 --- a/media/libmediaplayerservice/MetadataRetrieverClient.cpp +++ b/media/libmediaplayerservice/MetadataRetrieverClient.cpp
@@ -191,10 +191,13 @@ return ret; } +Mutex MetadataRetrieverClient::sLock; + sp<IMemory> MetadataRetrieverClient::getFrameAtTime(int64_t timeUs, int option) { ALOGV("getFrameAtTime: time(%lld us) option(%d)", timeUs, option); Mutex::Autolock lock(mLock); + Mutex::Autolock glock(sLock); mThumbnail.clear(); if (mRetriever == NULL) { ALOGE("retriever is not initialized");
diff --git a/media/libmediaplayerservice/MetadataRetrieverClient.h b/media/libmediaplayerservice/MetadataRetrieverClient.h index e71a29e..fe7547c 100644 --- a/media/libmediaplayerservice/MetadataRetrieverClient.h +++ b/media/libmediaplayerservice/MetadataRetrieverClient.h
@@ -63,6 +63,7 @@ virtual ~MetadataRetrieverClient(); mutable Mutex mLock; + static Mutex sLock; sp<MediaMetadataRetrieverBase> mRetriever; pid_t mPid;