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

Commit 0e6db8c6 authored by Robert Shih's avatar Robert Shih Committed by Android (Google) Code Review
Browse files

Merge "libmediadrm: query secure codec requirement w/o session"

parents 50826cd6 fbe581e5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ cc_library {
        "android.hardware.drm@1.1",
        "android.hardware.drm@1.2",
        "android.hardware.drm@1.3",
        "android.hardware.drm@1.4",
        "libhidlallocatorutils",
        "libhidlbase",
    ],
+21 −0
Original line number Diff line number Diff line
@@ -387,6 +387,7 @@ void DrmHal::cleanup() {
    mPlugin.clear();
    mPluginV1_1.clear();
    mPluginV1_2.clear();
    mPluginV1_4.clear();
}

std::vector<sp<IDrmFactory>> DrmHal::makeDrmFactories() {
@@ -622,6 +623,7 @@ status_t DrmHal::createPlugin(const uint8_t uuid[16],
                mPlugin = plugin;
                mPluginV1_1 = drm::V1_1::IDrmPlugin::castFrom(mPlugin);
                mPluginV1_2 = drm::V1_2::IDrmPlugin::castFrom(mPlugin);
                mPluginV1_4 = drm::V1_4::IDrmPlugin::castFrom(mPlugin);
                break;
            }
        }
@@ -642,6 +644,7 @@ status_t DrmHal::createPlugin(const uint8_t uuid[16],
            mPlugin.clear();
            mPluginV1_1.clear();
            mPluginV1_2.clear();
            mPluginV1_4.clear();
        }
    }

@@ -1564,4 +1567,22 @@ void DrmHal::reportPluginMetrics() const
    }
}

bool DrmHal::requiresSecureDecoder(const char *mime) const {
    Mutex::Autolock autoLock(mLock);
    if (mPluginV1_4 == NULL) {
        return false;
    }
    return mPluginV1_4->requiresSecureDecoderDefault(hidl_string(mime));
}

bool DrmHal::requiresSecureDecoder(const char *mime,
        DrmPlugin::SecurityLevel securityLevel) const {
    Mutex::Autolock autoLock(mLock);
    if (mPluginV1_4 == NULL) {
        return false;
    }
    auto hLevel = toHidlSecurityLevel(securityLevel);
    return mPluginV1_4->requiresSecureDecoder(hidl_string(mime), hLevel);
}

}  // namespace android
+1 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ cc_fuzz {
        "android.hardware.drm@1.1",
        "android.hardware.drm@1.2",
        "android.hardware.drm@1.3",
        "android.hardware.drm@1.4",
        "libhidlallocatorutils",
        "libhidlbase",
    ],
+9 −0
Original line number Diff line number Diff line
@@ -25,7 +25,9 @@
#include <android/hardware/drm/1.2/IDrmFactory.h>
#include <android/hardware/drm/1.2/IDrmPlugin.h>
#include <android/hardware/drm/1.2/IDrmPluginListener.h>
#include <android/hardware/drm/1.4/IDrmPlugin.h>

#include <media/drm/DrmAPI.h>
#include <mediadrm/DrmMetrics.h>
#include <mediadrm/DrmSessionManager.h>
#include <mediadrm/IDrm.h>
@@ -176,6 +178,12 @@ struct DrmHal : public IDrm,

    virtual status_t setListener(const sp<IDrmClient>& listener);

    virtual bool requiresSecureDecoder(const char *mime) const;

    virtual bool requiresSecureDecoder(
            const char *mime,
            DrmPlugin::SecurityLevel securityLevel) const;

    // Methods of IDrmPluginListener
    Return<void> sendEvent(EventType eventType,
            const hidl_vec<uint8_t>& sessionId, const hidl_vec<uint8_t>& data);
@@ -202,6 +210,7 @@ private:
    sp<IDrmPlugin> mPlugin;
    sp<drm::V1_1::IDrmPlugin> mPluginV1_1;
    sp<drm::V1_2::IDrmPlugin> mPluginV1_2;
    sp<drm::V1_4::IDrmPlugin> mPluginV1_4;
    String8 mAppPackageName;

    // Mutable to allow modification within GetPropertyByteArray.
+7 −0
Original line number Diff line number Diff line
@@ -145,6 +145,13 @@ struct IDrm : public virtual RefBase {

    virtual status_t setListener(const sp<IDrmClient>& listener) = 0;

    virtual bool requiresSecureDecoder(
            const char *mime) const = 0;

    virtual bool requiresSecureDecoder(
            const char *mime,
            DrmPlugin::SecurityLevel securityLevel) const = 0;

protected:
    IDrm() {}