xref: /aosp_15_r20/frameworks/av/include/drm/DrmInfo.h (revision ec779b8e0859a360c3d303172224686826e6e0e1)
1*ec779b8eSAndroid Build Coastguard Worker /*
2*ec779b8eSAndroid Build Coastguard Worker  * Copyright (C) 2010 The Android Open Source Project
3*ec779b8eSAndroid Build Coastguard Worker  *
4*ec779b8eSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*ec779b8eSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*ec779b8eSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*ec779b8eSAndroid Build Coastguard Worker  *
8*ec779b8eSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*ec779b8eSAndroid Build Coastguard Worker  *
10*ec779b8eSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*ec779b8eSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*ec779b8eSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*ec779b8eSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*ec779b8eSAndroid Build Coastguard Worker  * limitations under the License.
15*ec779b8eSAndroid Build Coastguard Worker  */
16*ec779b8eSAndroid Build Coastguard Worker 
17*ec779b8eSAndroid Build Coastguard Worker #ifndef __DRM_INFO_H__
18*ec779b8eSAndroid Build Coastguard Worker #define __DRM_INFO_H__
19*ec779b8eSAndroid Build Coastguard Worker 
20*ec779b8eSAndroid Build Coastguard Worker #include "drm_framework_common.h"
21*ec779b8eSAndroid Build Coastguard Worker 
22*ec779b8eSAndroid Build Coastguard Worker namespace android {
23*ec779b8eSAndroid Build Coastguard Worker 
24*ec779b8eSAndroid Build Coastguard Worker /**
25*ec779b8eSAndroid Build Coastguard Worker  * This is an utility class in which necessary information required to transact
26*ec779b8eSAndroid Build Coastguard Worker  * between device and online DRM server is described. DRM Framework achieves
27*ec779b8eSAndroid Build Coastguard Worker  * server registration, license acquisition and any other server related transaction
28*ec779b8eSAndroid Build Coastguard Worker  * by passing an instance of this class to DrmManagerClient::processDrmInfo(const DrmInfo*).
29*ec779b8eSAndroid Build Coastguard Worker  *
30*ec779b8eSAndroid Build Coastguard Worker  * The Caller can retrieve the DrmInfo instance by using
31*ec779b8eSAndroid Build Coastguard Worker  * DrmManagerClient::acquireDrmInfo(const DrmInfoRequest*) by passing DrmInfoRequest instance.
32*ec779b8eSAndroid Build Coastguard Worker  *
33*ec779b8eSAndroid Build Coastguard Worker  */
34*ec779b8eSAndroid Build Coastguard Worker class DrmInfo {
35*ec779b8eSAndroid Build Coastguard Worker public:
36*ec779b8eSAndroid Build Coastguard Worker     /**
37*ec779b8eSAndroid Build Coastguard Worker      * Constructor for DrmInfo
38*ec779b8eSAndroid Build Coastguard Worker      *
39*ec779b8eSAndroid Build Coastguard Worker      * @param[in] infoType Type of information
40*ec779b8eSAndroid Build Coastguard Worker      * @param[in] drmBuffer Trigger data
41*ec779b8eSAndroid Build Coastguard Worker      * @param[in] mimeType MIME type
42*ec779b8eSAndroid Build Coastguard Worker      */
43*ec779b8eSAndroid Build Coastguard Worker     DrmInfo(int infoType, const DrmBuffer& drmBuffer, const String8& mimeType);
44*ec779b8eSAndroid Build Coastguard Worker 
45*ec779b8eSAndroid Build Coastguard Worker     /**
46*ec779b8eSAndroid Build Coastguard Worker      * Destructor for DrmInfo
47*ec779b8eSAndroid Build Coastguard Worker      */
~DrmInfo()48*ec779b8eSAndroid Build Coastguard Worker     virtual ~DrmInfo() {}
49*ec779b8eSAndroid Build Coastguard Worker 
50*ec779b8eSAndroid Build Coastguard Worker public:
51*ec779b8eSAndroid Build Coastguard Worker     /**
52*ec779b8eSAndroid Build Coastguard Worker      * Iterator for key
53*ec779b8eSAndroid Build Coastguard Worker      */
54*ec779b8eSAndroid Build Coastguard Worker     class KeyIterator {
55*ec779b8eSAndroid Build Coastguard Worker         friend class DrmInfo;
56*ec779b8eSAndroid Build Coastguard Worker 
57*ec779b8eSAndroid Build Coastguard Worker     private:
KeyIterator(const DrmInfo * drmInfo)58*ec779b8eSAndroid Build Coastguard Worker         explicit KeyIterator(const DrmInfo* drmInfo)
59*ec779b8eSAndroid Build Coastguard Worker             : mDrmInfo(const_cast <DrmInfo*> (drmInfo)), mIndex(0) {}
60*ec779b8eSAndroid Build Coastguard Worker 
61*ec779b8eSAndroid Build Coastguard Worker     public:
62*ec779b8eSAndroid Build Coastguard Worker         KeyIterator(const KeyIterator& keyIterator);
63*ec779b8eSAndroid Build Coastguard Worker         KeyIterator& operator=(const KeyIterator& keyIterator);
~KeyIterator()64*ec779b8eSAndroid Build Coastguard Worker         virtual ~KeyIterator() {}
65*ec779b8eSAndroid Build Coastguard Worker 
66*ec779b8eSAndroid Build Coastguard Worker     public:
67*ec779b8eSAndroid Build Coastguard Worker         bool hasNext();
68*ec779b8eSAndroid Build Coastguard Worker         const String8& next();
69*ec779b8eSAndroid Build Coastguard Worker 
70*ec779b8eSAndroid Build Coastguard Worker     private:
71*ec779b8eSAndroid Build Coastguard Worker         DrmInfo* mDrmInfo;
72*ec779b8eSAndroid Build Coastguard Worker         unsigned int mIndex;
73*ec779b8eSAndroid Build Coastguard Worker     };
74*ec779b8eSAndroid Build Coastguard Worker 
75*ec779b8eSAndroid Build Coastguard Worker     /**
76*ec779b8eSAndroid Build Coastguard Worker      * Iterator
77*ec779b8eSAndroid Build Coastguard Worker      */
78*ec779b8eSAndroid Build Coastguard Worker     class Iterator {
79*ec779b8eSAndroid Build Coastguard Worker         friend class DrmInfo;
80*ec779b8eSAndroid Build Coastguard Worker 
81*ec779b8eSAndroid Build Coastguard Worker     private:
Iterator(const DrmInfo * drmInfo)82*ec779b8eSAndroid Build Coastguard Worker         explicit Iterator(const DrmInfo* drmInfo)
83*ec779b8eSAndroid Build Coastguard Worker             : mDrmInfo(const_cast <DrmInfo*> (drmInfo)), mIndex(0) {}
84*ec779b8eSAndroid Build Coastguard Worker 
85*ec779b8eSAndroid Build Coastguard Worker     public:
86*ec779b8eSAndroid Build Coastguard Worker         Iterator(const Iterator& iterator);
87*ec779b8eSAndroid Build Coastguard Worker         Iterator& operator=(const Iterator& iterator);
~Iterator()88*ec779b8eSAndroid Build Coastguard Worker         virtual ~Iterator() {}
89*ec779b8eSAndroid Build Coastguard Worker 
90*ec779b8eSAndroid Build Coastguard Worker     public:
91*ec779b8eSAndroid Build Coastguard Worker         bool hasNext();
92*ec779b8eSAndroid Build Coastguard Worker         String8& next();
93*ec779b8eSAndroid Build Coastguard Worker 
94*ec779b8eSAndroid Build Coastguard Worker     private:
95*ec779b8eSAndroid Build Coastguard Worker         DrmInfo* mDrmInfo;
96*ec779b8eSAndroid Build Coastguard Worker         unsigned int mIndex;
97*ec779b8eSAndroid Build Coastguard Worker     };
98*ec779b8eSAndroid Build Coastguard Worker 
99*ec779b8eSAndroid Build Coastguard Worker public:
100*ec779b8eSAndroid Build Coastguard Worker     /**
101*ec779b8eSAndroid Build Coastguard Worker      * Returns information type associated with this instance
102*ec779b8eSAndroid Build Coastguard Worker      *
103*ec779b8eSAndroid Build Coastguard Worker      * @return Information type
104*ec779b8eSAndroid Build Coastguard Worker      */
105*ec779b8eSAndroid Build Coastguard Worker     int getInfoType(void) const;
106*ec779b8eSAndroid Build Coastguard Worker 
107*ec779b8eSAndroid Build Coastguard Worker     /**
108*ec779b8eSAndroid Build Coastguard Worker      * Returns MIME type associated with this instance
109*ec779b8eSAndroid Build Coastguard Worker      *
110*ec779b8eSAndroid Build Coastguard Worker      * @return MIME type
111*ec779b8eSAndroid Build Coastguard Worker      */
112*ec779b8eSAndroid Build Coastguard Worker     String8 getMimeType(void) const;
113*ec779b8eSAndroid Build Coastguard Worker 
114*ec779b8eSAndroid Build Coastguard Worker     /**
115*ec779b8eSAndroid Build Coastguard Worker      * Returns the trigger data associated with this instance
116*ec779b8eSAndroid Build Coastguard Worker      *
117*ec779b8eSAndroid Build Coastguard Worker      * @return Trigger data
118*ec779b8eSAndroid Build Coastguard Worker      */
119*ec779b8eSAndroid Build Coastguard Worker     const DrmBuffer& getData(void) const;
120*ec779b8eSAndroid Build Coastguard Worker 
121*ec779b8eSAndroid Build Coastguard Worker     /**
122*ec779b8eSAndroid Build Coastguard Worker      * Returns the number of attributes contained in this instance
123*ec779b8eSAndroid Build Coastguard Worker      *
124*ec779b8eSAndroid Build Coastguard Worker      * @return Number of attributes
125*ec779b8eSAndroid Build Coastguard Worker      */
126*ec779b8eSAndroid Build Coastguard Worker     int getCount(void) const;
127*ec779b8eSAndroid Build Coastguard Worker 
128*ec779b8eSAndroid Build Coastguard Worker     /**
129*ec779b8eSAndroid Build Coastguard Worker      * Adds optional information as <key, value> pair to this instance
130*ec779b8eSAndroid Build Coastguard Worker      *
131*ec779b8eSAndroid Build Coastguard Worker      * @param[in] key Key to add
132*ec779b8eSAndroid Build Coastguard Worker      * @param[in] value Value to add
133*ec779b8eSAndroid Build Coastguard Worker      * @return Returns the error code
134*ec779b8eSAndroid Build Coastguard Worker      */
135*ec779b8eSAndroid Build Coastguard Worker     status_t put(const String8& key, const String8& value);
136*ec779b8eSAndroid Build Coastguard Worker 
137*ec779b8eSAndroid Build Coastguard Worker     /**
138*ec779b8eSAndroid Build Coastguard Worker      * Retrieves the value of given key
139*ec779b8eSAndroid Build Coastguard Worker      *
140*ec779b8eSAndroid Build Coastguard Worker      * @param key Key whose value to be retrieved
141*ec779b8eSAndroid Build Coastguard Worker      * @return The value
142*ec779b8eSAndroid Build Coastguard Worker      */
143*ec779b8eSAndroid Build Coastguard Worker     String8 get(const String8& key) const;
144*ec779b8eSAndroid Build Coastguard Worker 
145*ec779b8eSAndroid Build Coastguard Worker     /**
146*ec779b8eSAndroid Build Coastguard Worker      * Returns KeyIterator object to walk through the keys associated with this instance
147*ec779b8eSAndroid Build Coastguard Worker      *
148*ec779b8eSAndroid Build Coastguard Worker      * @return KeyIterator object
149*ec779b8eSAndroid Build Coastguard Worker      */
150*ec779b8eSAndroid Build Coastguard Worker     KeyIterator keyIterator() const;
151*ec779b8eSAndroid Build Coastguard Worker 
152*ec779b8eSAndroid Build Coastguard Worker     /**
153*ec779b8eSAndroid Build Coastguard Worker      * Returns Iterator object to walk through the values associated with this instance
154*ec779b8eSAndroid Build Coastguard Worker      *
155*ec779b8eSAndroid Build Coastguard Worker      * @return Iterator object
156*ec779b8eSAndroid Build Coastguard Worker      */
157*ec779b8eSAndroid Build Coastguard Worker     Iterator iterator() const;
158*ec779b8eSAndroid Build Coastguard Worker 
159*ec779b8eSAndroid Build Coastguard Worker     /**
160*ec779b8eSAndroid Build Coastguard Worker      * Returns index of the given key
161*ec779b8eSAndroid Build Coastguard Worker      *
162*ec779b8eSAndroid Build Coastguard Worker      * @return index
163*ec779b8eSAndroid Build Coastguard Worker      */
164*ec779b8eSAndroid Build Coastguard Worker     int indexOfKey(const String8& key) const;
165*ec779b8eSAndroid Build Coastguard Worker 
166*ec779b8eSAndroid Build Coastguard Worker protected:
167*ec779b8eSAndroid Build Coastguard Worker     int mInfoType;
168*ec779b8eSAndroid Build Coastguard Worker     DrmBuffer mData;
169*ec779b8eSAndroid Build Coastguard Worker     String8 mMimeType;
170*ec779b8eSAndroid Build Coastguard Worker     KeyedVector<String8, String8> mAttributes;
171*ec779b8eSAndroid Build Coastguard Worker };
172*ec779b8eSAndroid Build Coastguard Worker 
173*ec779b8eSAndroid Build Coastguard Worker };
174*ec779b8eSAndroid Build Coastguard Worker 
175*ec779b8eSAndroid Build Coastguard Worker #endif /* __DRM_INFO_H__ */
176*ec779b8eSAndroid Build Coastguard Worker 
177