Loading media/libmedia/IMediaExtractor.cpp +18 −10 Original line number Diff line number Diff line Loading @@ -216,13 +216,15 @@ String8 ExtractorInstance::toString() const { return str; } static Vector<ExtractorInstance> extractors; static Vector<ExtractorInstance> sExtractors; static Mutex sExtractorsLock; void registerMediaSource( const sp<IMediaExtractor> &ex, const sp<IMediaSource> &source) { for (size_t i = 0; i < extractors.size(); i++) { ExtractorInstance &instance = extractors.editItemAt(i); Mutex::Autolock lock(sExtractorsLock); for (size_t i = 0; i < sExtractors.size(); i++) { ExtractorInstance &instance = sExtractors.editItemAt(i); sp<IMediaExtractor> extractor = instance.extractor.promote(); if (extractor != NULL && extractor == ex) { if (instance.tracks.size() > 5) { Loading @@ -246,20 +248,26 @@ void registerMediaExtractor( ex.owner = IPCThreadState::self()->getCallingPid(); ex.extractor = extractor; if (extractors.size() > 10) { extractors.resize(10); { Mutex::Autolock lock(sExtractorsLock); if (sExtractors.size() > 10) { sExtractors.resize(10); } sExtractors.push_front(ex); } extractors.push_front(ex); } status_t dumpExtractors(int fd, const Vector<String16>&) { String8 out; out.append("Recent extractors, most recent first:\n"); for (size_t i = 0; i < extractors.size(); i++) { const ExtractorInstance &instance = extractors.itemAt(i); { Mutex::Autolock lock(sExtractorsLock); for (size_t i = 0; i < sExtractors.size(); i++) { const ExtractorInstance &instance = sExtractors.itemAt(i); out.append(" "); out.append(instance.toString()); } } write(fd, out.string(), out.size()); return OK; } Loading Loading
media/libmedia/IMediaExtractor.cpp +18 −10 Original line number Diff line number Diff line Loading @@ -216,13 +216,15 @@ String8 ExtractorInstance::toString() const { return str; } static Vector<ExtractorInstance> extractors; static Vector<ExtractorInstance> sExtractors; static Mutex sExtractorsLock; void registerMediaSource( const sp<IMediaExtractor> &ex, const sp<IMediaSource> &source) { for (size_t i = 0; i < extractors.size(); i++) { ExtractorInstance &instance = extractors.editItemAt(i); Mutex::Autolock lock(sExtractorsLock); for (size_t i = 0; i < sExtractors.size(); i++) { ExtractorInstance &instance = sExtractors.editItemAt(i); sp<IMediaExtractor> extractor = instance.extractor.promote(); if (extractor != NULL && extractor == ex) { if (instance.tracks.size() > 5) { Loading @@ -246,20 +248,26 @@ void registerMediaExtractor( ex.owner = IPCThreadState::self()->getCallingPid(); ex.extractor = extractor; if (extractors.size() > 10) { extractors.resize(10); { Mutex::Autolock lock(sExtractorsLock); if (sExtractors.size() > 10) { sExtractors.resize(10); } sExtractors.push_front(ex); } extractors.push_front(ex); } status_t dumpExtractors(int fd, const Vector<String16>&) { String8 out; out.append("Recent extractors, most recent first:\n"); for (size_t i = 0; i < extractors.size(); i++) { const ExtractorInstance &instance = extractors.itemAt(i); { Mutex::Autolock lock(sExtractorsLock); for (size_t i = 0; i < sExtractors.size(); i++) { const ExtractorInstance &instance = sExtractors.itemAt(i); out.append(" "); out.append(instance.toString()); } } write(fd, out.string(), out.size()); return OK; } Loading