Remove direct dependency on libbinder from extractor impls
This change removes dependency on IMediaExtractor/Source binder
interfaces from MediaExtractor implementations. Wrapper classes,
RemoteXXX and CallbackXXX, have been added to convert the
implementations to binder objects or the other way around.
Test: build, boot, and play mp4 video file
Bug: 65851881
Change-Id: I351fb7bbaf8e0154295ccf258f85b8b2f2a4b8fb
diff --git a/services/mediaextractor/MediaExtractorService.cpp b/services/mediaextractor/MediaExtractorService.cpp
index 08cbef6..50a4191 100644
--- a/services/mediaextractor/MediaExtractorService.cpp
+++ b/services/mediaextractor/MediaExtractorService.cpp
@@ -33,17 +33,18 @@
sp<DataSource> localSource = DataSource::CreateFromIDataSource(remoteSource);
- sp<IMediaExtractor> ret = MediaExtractor::CreateFromService(localSource, mime);
+ sp<MediaExtractor> extractor = MediaExtractor::CreateFromService(localSource, mime);
ALOGV("extractor service created %p (%s)",
- ret.get(),
- ret == NULL ? "" : ret->name());
+ extractor.get(),
+ extractor == nullptr ? "" : extractor->name());
- if (ret != NULL) {
+ if (extractor != nullptr) {
+ sp<IMediaExtractor> ret = extractor->asIMediaExtractor();
registerMediaExtractor(ret, localSource, mime);
+ return ret;
}
-
- return ret;
+ return nullptr;
}
sp<IDataSource> MediaExtractorService::makeIDataSource(int fd, int64_t offset, int64_t length)