mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Add DrmInitData (missed from a previous commit).
This commit is contained in:
parent
eba16e55b0
commit
5e11b9f008
@ -0,0 +1,103 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2014 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package com.google.android.exoplayer.drm;
|
||||||
|
|
||||||
|
import android.media.MediaDrm;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encapsulates initialization data required by a {@link MediaDrm} instance.
|
||||||
|
*/
|
||||||
|
public abstract class DrmInitData {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The container mime type.
|
||||||
|
*/
|
||||||
|
public final String mimeType;
|
||||||
|
|
||||||
|
public DrmInitData(String mimeType) {
|
||||||
|
this.mimeType = mimeType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves initialization data for a given DRM scheme, specified by its UUID.
|
||||||
|
*
|
||||||
|
* @param schemeUuid The DRM scheme's UUID.
|
||||||
|
* @return The initialization data for the scheme, or null if the scheme is not supported.
|
||||||
|
*/
|
||||||
|
public abstract byte[] get(UUID schemeUuid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A {@link DrmInitData} implementation that maps UUID onto scheme specific data.
|
||||||
|
*/
|
||||||
|
public static final class Mapped extends DrmInitData {
|
||||||
|
|
||||||
|
private final Map<UUID, byte[]> schemeData;
|
||||||
|
|
||||||
|
public Mapped(String mimeType) {
|
||||||
|
super(mimeType);
|
||||||
|
schemeData = new HashMap<UUID, byte[]>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] get(UUID schemeUuid) {
|
||||||
|
return schemeData.get(schemeUuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts scheme specific initialization data.
|
||||||
|
*
|
||||||
|
* @param schemeUuid The scheme UUID.
|
||||||
|
* @param data The corresponding initialization data.
|
||||||
|
*/
|
||||||
|
public void put(UUID schemeUuid, byte[] data) {
|
||||||
|
schemeData.put(schemeUuid, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts scheme specific initialization data.
|
||||||
|
*
|
||||||
|
* @param data A mapping from scheme UUID to initialization data.
|
||||||
|
*/
|
||||||
|
public void putAll(Map<UUID, byte[]> data) {
|
||||||
|
schemeData.putAll(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A {@link DrmInitData} implementation that returns the same initialization data for all schemes.
|
||||||
|
*/
|
||||||
|
public static final class Universal extends DrmInitData {
|
||||||
|
|
||||||
|
private byte[] data;
|
||||||
|
|
||||||
|
public Universal(String mimeType, byte[] data) {
|
||||||
|
super(mimeType);
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] get(UUID schemeUuid) {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user