1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package android.media;
17 
18 import android.media.MediaDrm;
19 
20 import java.util.Arrays;
21 import java.util.HashMap;
22 import java.util.Map;
23 import java.util.UUID;
24 
25 /**
26  * Encapsulates initialization data required by a {@link MediaDrm} instance.
27  */
28 public abstract class DrmInitData {
29 
30     /**
31      * Prevent public constuctor access
32      */
DrmInitData()33     /* package private */ DrmInitData() {
34     }
35 
36     /**
37      * Retrieves initialization data for a given DRM scheme, specified by its UUID.
38      *
39      * @param schemeUuid The DRM scheme's UUID.
40      * @return The initialization data for the scheme, or null if the scheme is not supported.
41      */
get(UUID schemeUuid)42     public abstract SchemeInitData get(UUID schemeUuid);
43 
44     /**
45      * Scheme initialization data.
46      */
47     public static final class SchemeInitData {
48 
49         /**
50          * The mimeType of {@link #data}.
51          */
52         public final String mimeType;
53         /**
54          * The initialization data.
55          */
56         public final byte[] data;
57 
58         /**
59          * @param mimeType The mimeType of the initialization data.
60          * @param data The initialization data.
61          *
62          * @hide
63          */
SchemeInitData(String mimeType, byte[] data)64         public SchemeInitData(String mimeType, byte[] data) {
65             this.mimeType = mimeType;
66             this.data = data;
67         }
68 
69         @Override
equals(Object obj)70         public boolean equals(Object obj) {
71             if (!(obj instanceof SchemeInitData)) {
72                 return false;
73             }
74             if (obj == this) {
75                 return true;
76             }
77 
78             SchemeInitData other = (SchemeInitData) obj;
79             return mimeType.equals(other.mimeType) && Arrays.equals(data, other.data);
80         }
81 
82         @Override
hashCode()83         public int hashCode() {
84             return mimeType.hashCode() + 31 * Arrays.hashCode(data);
85         }
86 
87     }
88 
89 }
90