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

Commit 50d6fc34 authored by Wei Jia's avatar Wei Jia Committed by gitbuildkicker
Browse files

MediaExtractor: move DRMExtractor to mediaserver process.

Change-Id: I5785c74191c95e6c8bf6b6a17319e1fc2431241e
(cherry picked from commit d7581056)
parent 83d9698c
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -151,10 +151,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;
@@ -165,6 +161,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);