Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7581056 authored by Wei Jia's avatar Wei Jia
Browse files

MediaExtractor: move DRMExtractor to mediaserver process.

Change-Id: I5785c74191c95e6c8bf6b6a17319e1fc2431241e
parent 0093efba
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -146,10 +146,6 @@ sp<IMediaExtractor> MediaExtractor::Create(
        ALOGW("creating media extractor in calling process");
        return CreateFromService(source, mime);
    } else {
        // remote extractor
        ALOGV("get service manager");
        sp<IBinder> binder = defaultServiceManager()->getService(String16("media.extractor"));

        // Check if it's WVM, since WVMExtractor needs to be created in the media server process,
        // not the extractor process.
        String8 mime8;
@@ -160,6 +156,21 @@ sp<IMediaExtractor> MediaExtractor::Create(
            return new WVMExtractor(source);
        }

        // Check if it's es-based DRM, since DRMExtractor needs to be created in the media server
        // process, not the extractor process.
        if (SniffDRM(source, &mime8, &confidence, &meta)) {
            const char *drmMime = mime8.string();
            ALOGV("Detected media content as '%s' with confidence %.2f", drmMime, confidence);
            if (!strncmp(drmMime, "drm+es_based+", 13)) {
                // DRMExtractor sets container metadata kKeyIsDRM to 1
                return new DRMExtractor(source, drmMime + 14);
            }
        }

        // remote extractor
        ALOGV("get service manager");
        sp<IBinder> binder = defaultServiceManager()->getService(String16("media.extractor"));

        if (binder != 0) {
            sp<IMediaExtractorService> mediaExService(interface_cast<IMediaExtractorService>(binder));
            sp<IMediaExtractor> ex = mediaExService->makeExtractor(RemoteDataSource::wrap(source), mime);