Loading media/libmedia/IMediaSource.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ public: data.writeInterfaceToken(BpMediaSource::getInterfaceDescriptor()); status_t ret = remote()->transact(GETFORMAT, data, &reply); if (ret == NO_ERROR) { AutoMutex _l(mLock); AutoMutex _l(mBpLock); mMetaData = MetaData::createFromParcel(reply); return mMetaData; } Loading Loading @@ -224,7 +224,7 @@ private: // XXX: could we use this for caching, or does metadata change on the fly? sp<MetaData> mMetaData; // ensure synchronize access to mMetaData Mutex mLock; Mutex mBpLock; // Cache all IMemory objects received from MediaExtractor. // We gc IMemory objects that are no longer active (referenced by a MediaBuffer). Loading Loading @@ -301,6 +301,7 @@ status_t BnMediaSource::onTransact( CHECK_INTERFACE(IMediaSource, data, reply); mGroup->signalBufferReturned(nullptr); status_t status = stop(); AutoMutex _l(mBnLock); mIndexCache.reset(); mBuffersSinceStop = 0; return status; Loading Loading @@ -340,6 +341,7 @@ status_t BnMediaSource::onTransact( && len == sizeof(opts) && data.read((void *)&opts, len) == NO_ERROR; AutoMutex _l(mBnLock); mGroup->signalBufferReturned(nullptr); mIndexCache.gc(); size_t inlineTransferSize = 0; Loading media/libmedia/include/media/IMediaSource.h +1 −0 Original line number Diff line number Diff line Loading @@ -135,6 +135,7 @@ protected: private: uint32_t mBuffersSinceStop; // Buffer tracking variable Mutex mBnLock; // to guard readMultiple against concurrent access to the buffer cache std::unique_ptr<MediaBufferGroup> mGroup; Loading Loading
media/libmedia/IMediaSource.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ public: data.writeInterfaceToken(BpMediaSource::getInterfaceDescriptor()); status_t ret = remote()->transact(GETFORMAT, data, &reply); if (ret == NO_ERROR) { AutoMutex _l(mLock); AutoMutex _l(mBpLock); mMetaData = MetaData::createFromParcel(reply); return mMetaData; } Loading Loading @@ -224,7 +224,7 @@ private: // XXX: could we use this for caching, or does metadata change on the fly? sp<MetaData> mMetaData; // ensure synchronize access to mMetaData Mutex mLock; Mutex mBpLock; // Cache all IMemory objects received from MediaExtractor. // We gc IMemory objects that are no longer active (referenced by a MediaBuffer). Loading Loading @@ -301,6 +301,7 @@ status_t BnMediaSource::onTransact( CHECK_INTERFACE(IMediaSource, data, reply); mGroup->signalBufferReturned(nullptr); status_t status = stop(); AutoMutex _l(mBnLock); mIndexCache.reset(); mBuffersSinceStop = 0; return status; Loading Loading @@ -340,6 +341,7 @@ status_t BnMediaSource::onTransact( && len == sizeof(opts) && data.read((void *)&opts, len) == NO_ERROR; AutoMutex _l(mBnLock); mGroup->signalBufferReturned(nullptr); mIndexCache.gc(); size_t inlineTransferSize = 0; Loading
media/libmedia/include/media/IMediaSource.h +1 −0 Original line number Diff line number Diff line Loading @@ -135,6 +135,7 @@ protected: private: uint32_t mBuffersSinceStop; // Buffer tracking variable Mutex mBnLock; // to guard readMultiple against concurrent access to the buffer cache std::unique_ptr<MediaBufferGroup> mGroup; Loading