xref: /aosp_15_r20/hardware/interfaces/drm/1.4/IDrmPlugin.hal (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1*4d7e907cSAndroid Build Coastguard Worker/**
2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2021 The Android Open Source Project
3*4d7e907cSAndroid Build Coastguard Worker *
4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*4d7e907cSAndroid Build Coastguard Worker *
8*4d7e907cSAndroid Build Coastguard Worker *      http://www.apache.org/licenses/LICENSE-2.0
9*4d7e907cSAndroid Build Coastguard Worker *
10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License.
15*4d7e907cSAndroid Build Coastguard Worker */
16*4d7e907cSAndroid Build Coastguard Workerpackage [email protected];
17*4d7e907cSAndroid Build Coastguard Worker
18*4d7e907cSAndroid Build Coastguard Workerimport @1.0::Status;
19*4d7e907cSAndroid Build Coastguard Workerimport @1.0::SessionId;
20*4d7e907cSAndroid Build Coastguard Workerimport @1.1::SecurityLevel;
21*4d7e907cSAndroid Build Coastguard Workerimport @1.2::IDrmPlugin;
22*4d7e907cSAndroid Build Coastguard Workerimport @1.4::LogMessage;
23*4d7e907cSAndroid Build Coastguard Workerimport @1.4::Status;
24*4d7e907cSAndroid Build Coastguard Worker
25*4d7e907cSAndroid Build Coastguard Worker/**
26*4d7e907cSAndroid Build Coastguard Worker * IDrmPlugin is used to interact with a specific drm plugin that was
27*4d7e907cSAndroid Build Coastguard Worker * created by IDrmFactory::createPlugin. A drm plugin provides methods for
28*4d7e907cSAndroid Build Coastguard Worker * obtaining drm keys to be used by a codec to decrypt protected video
29*4d7e907cSAndroid Build Coastguard Worker * content.
30*4d7e907cSAndroid Build Coastguard Worker */
31*4d7e907cSAndroid Build Coastguard Workerinterface IDrmPlugin extends @1.2::IDrmPlugin {
32*4d7e907cSAndroid Build Coastguard Worker
33*4d7e907cSAndroid Build Coastguard Worker    /**
34*4d7e907cSAndroid Build Coastguard Worker     * Check if the specified mime-type & security level require a secure decoder
35*4d7e907cSAndroid Build Coastguard Worker     * component.
36*4d7e907cSAndroid Build Coastguard Worker     *
37*4d7e907cSAndroid Build Coastguard Worker     * @param mime The content mime-type
38*4d7e907cSAndroid Build Coastguard Worker     * @param level the requested security level
39*4d7e907cSAndroid Build Coastguard Worker     * @return secureRequired must be true if and only if a secure decoder is required
40*4d7e907cSAndroid Build Coastguard Worker     * for the specified mime-type & security level
41*4d7e907cSAndroid Build Coastguard Worker     */
42*4d7e907cSAndroid Build Coastguard Worker    requiresSecureDecoder(string mime, @1.1::SecurityLevel level) generates (bool secureRequired);
43*4d7e907cSAndroid Build Coastguard Worker
44*4d7e907cSAndroid Build Coastguard Worker    /**
45*4d7e907cSAndroid Build Coastguard Worker     * Check if the specified mime-type requires a secure decoder component
46*4d7e907cSAndroid Build Coastguard Worker     * at the highest security level supported on the device.
47*4d7e907cSAndroid Build Coastguard Worker     *
48*4d7e907cSAndroid Build Coastguard Worker     * @param mime The content mime-type
49*4d7e907cSAndroid Build Coastguard Worker     * @return secureRequired must be true if and only if a secure decoder is required
50*4d7e907cSAndroid Build Coastguard Worker     * for the specified mime-type
51*4d7e907cSAndroid Build Coastguard Worker     */
52*4d7e907cSAndroid Build Coastguard Worker    requiresSecureDecoderDefault(string mime) generates (bool secureRequired);
53*4d7e907cSAndroid Build Coastguard Worker
54*4d7e907cSAndroid Build Coastguard Worker    /**
55*4d7e907cSAndroid Build Coastguard Worker     * Set playback id of a drm session. The playback id can be used to join drm session metrics
56*4d7e907cSAndroid Build Coastguard Worker     * with metrics from other low level media components, e.g. codecs, or metrics from the high
57*4d7e907cSAndroid Build Coastguard Worker     * level player.
58*4d7e907cSAndroid Build Coastguard Worker     *
59*4d7e907cSAndroid Build Coastguard Worker     * @param sessionId drm session id
60*4d7e907cSAndroid Build Coastguard Worker     * @param playbackId high level playback id
61*4d7e907cSAndroid Build Coastguard Worker     * @return status the status of the call. The status must be OK on success, or
62*4d7e907cSAndroid Build Coastguard Worker     *     ERROR_DRM_SESSION_NOT_OPENED if the drm session cannot be found
63*4d7e907cSAndroid Build Coastguard Worker     */
64*4d7e907cSAndroid Build Coastguard Worker    setPlaybackId(SessionId sessionId, string playbackId) generates (@1.0::Status status);
65*4d7e907cSAndroid Build Coastguard Worker
66*4d7e907cSAndroid Build Coastguard Worker    /**
67*4d7e907cSAndroid Build Coastguard Worker     * @return logMessages latest plugin level log messages. Can be used
68*4d7e907cSAndroid Build Coastguard Worker     *     by apps in diagnosis of errors.
69*4d7e907cSAndroid Build Coastguard Worker     * @return status the status of the call. The status must be:
70*4d7e907cSAndroid Build Coastguard Worker     *     OK on success;
71*4d7e907cSAndroid Build Coastguard Worker     *     GENERAL_OEM_ERROR on OEM-provided, low-level component failures;
72*4d7e907cSAndroid Build Coastguard Worker     *     GENERAL_PLUGIN_ERROR on unexpected plugin-level errors.
73*4d7e907cSAndroid Build Coastguard Worker     */
74*4d7e907cSAndroid Build Coastguard Worker    getLogMessages() generates (@1.4::Status status, vec<LogMessage> logMessages);
75*4d7e907cSAndroid Build Coastguard Worker
76*4d7e907cSAndroid Build Coastguard Worker};
77