Keep the in-use extractor plugins when updating.
To track usage of extractors and close the so handle when they are
destroied, MediaExtractorPlugin/RefBase class is introduced.
Test: play MP4 file. install and uninstall media update apk.
Bug: 67908547
Change-Id: I24926f943bc7247627e62d38edafd13d9c305a51
diff --git a/services/mediaextractor/MediaExtractorService.cpp b/services/mediaextractor/MediaExtractorService.cpp
index f09d7cf..0dc1fce 100644
--- a/services/mediaextractor/MediaExtractorService.cpp
+++ b/services/mediaextractor/MediaExtractorService.cpp
@@ -36,16 +36,15 @@
sp<DataSource> localSource = CreateDataSourceFromIDataSource(remoteSource);
- sp<MediaExtractor> extractor = MediaExtractorFactory::CreateFromService(localSource, mime);
+ sp<IMediaExtractor> extractor = MediaExtractorFactory::CreateFromService(localSource, mime);
ALOGV("extractor service created %p (%s)",
extractor.get(),
extractor == nullptr ? "" : extractor->name());
if (extractor != nullptr) {
- sp<IMediaExtractor> ret = CreateIMediaExtractorFromMediaExtractor(extractor);
- registerMediaExtractor(ret, localSource, mime);
- return ret;
+ registerMediaExtractor(extractor, localSource, mime);
+ return extractor;
}
return nullptr;
}