diff options
author | Marco Nelissen <marcone@google.com> | 2015-06-12 15:31:23 -0700 |
---|---|---|
committer | Marco Nelissen <marcone@google.com> | 2015-06-12 15:31:23 -0700 |
commit | 6155085b781a81af66d42d907c9f4d1063999594 (patch) | |
tree | 8296eeaa60734e6f5711b1487aa793fa5eef0a99 | |
parent | ad9ef61e770c0751a9983aa5c9844dfeb9ed665b (diff) | |
download | frameworks_av-6155085b781a81af66d42d907c9f4d1063999594.zip frameworks_av-6155085b781a81af66d42d907c9f4d1063999594.tar.gz frameworks_av-6155085b781a81af66d42d907c9f4d1063999594.tar.bz2 |
Serialize calls to getFrameAtTime in the mediaserver
to avoid running out of memory.
Bug: 21277449
Change-Id: I7210806a24958f38d86aadab0310fc263e4c0edf
-rw-r--r-- | media/libmediaplayerservice/MetadataRetrieverClient.cpp | 3 | ||||
-rw-r--r-- | media/libmediaplayerservice/MetadataRetrieverClient.h | 1 |
2 files changed, 4 insertions, 0 deletions
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 @@ status_t MetadataRetrieverClient::setDataSource( 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 @@ private: virtual ~MetadataRetrieverClient(); mutable Mutex mLock; + static Mutex sLock; sp<MediaMetadataRetrieverBase> mRetriever; pid_t mPid; |