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

Commit 30c31856 authored by Jeff Tinker's avatar Jeff Tinker
Browse files

Add support for HDCP 2.3

bug:120040804
Change-Id: Id4643829bce31131e3bc7b628737579bb597e736
parent 9bed22a4
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -183,6 +183,40 @@ interface IDrmPlugin extends @1.1::IDrmPlugin {
    getProvisionRequest_1_2(string certificateType, string certificateAuthority)
        generates (Status status, vec<uint8_t> request, string defaultUrl);

    /**
     * Return the currently negotiated and max supported HDCP levels.
     *
     * This method only differs from @1.1 version by the addition of
     * support for HDCP 2.3.
     *
     * The current level is based on the display(s) the device is connected to.
     * If multiple HDCP-capable displays are simultaneously connected to
     * separate interfaces, this method returns the lowest negotiated HDCP level
     * of all interfaces.
     *
     * The maximum HDCP level is the highest level that can potentially be
     * negotiated. It is a constant for any device, i.e. it does not depend on
     * downstream receiving devices that could be connected. For example, if
     * the device has HDCP 1.x keys and is capable of negotiating HDCP 1.x, but
     * does not have HDCP 2.x keys, then the maximum HDCP capability would be
     * reported as 1.x. If multiple HDCP-capable interfaces are present, it
     * indicates the highest of the maximum HDCP levels of all interfaces.
     *
     * This method should only be used for informational purposes, not for
     * enforcing compliance with HDCP requirements. Trusted enforcement of HDCP
     * policies must be handled by the DRM system.
     *
     * @return status the status of the call. The status must be OK or
     *         ERROR_DRM_INVALID_STATE if the HAL is in a state where the HDCP
     *         level cannot be queried.
     * @return connectedLevel the lowest HDCP level for any connected
     *         displays
     * @return maxLevel the highest HDCP level that can be supported
     *         by the device
     */
    getHdcpLevels_1_2() generates (Status status, HdcpLevel connectedLevel,
            HdcpLevel maxLevel);

    /**
     * Send a session lost state event to the listener. This event
     * indicates that a session's state has become invalid because the
+14 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.hardware.drm@1.2;

import @1.0::Status;
import @1.1::HdcpLevel;

enum OfflineLicenseState : uint32_t {
    /**
@@ -71,6 +72,19 @@ enum Status : @1.0::Status {
    ERROR_DRM_RESOURCE_CONTENTION,
};

/**
 * HDCP specifications are defined by Digital Content Protection LLC (DCP).
 *   "HDCP Specification Rev. 2.3 Interface Independent Adaptation"
 *   "HDCP 2.3 on HDMI Specification"
 */
enum HdcpLevel : @1.1::HdcpLevel {
    /**
     * HDCP version 2.3 Type 1.
     */
    HDCP_V2_3
};


/**
 * KeySetId is an identifier that references a set of keys in an
 * offline license. The keySetId is created by the HAL implementation