mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Add possibility of forcing a specific license URL in HttpMediaDrmCallback
- Renamed some license URL related variables to keep consistency across the code. - Added a new parameter to HttpMediaDrmCallback that enables forcing defaultLicenseURL as the license acquisition URL.
This commit is contained in:
parent
3c6ad40481
commit
768a73b377
2 changed files with 45 additions and 22 deletions
|
|
@ -47,29 +47,29 @@ public final class HttpMediaDrmCallback implements MediaDrmCallback {
|
||||||
}
|
}
|
||||||
|
|
||||||
private final HttpDataSource.Factory dataSourceFactory;
|
private final HttpDataSource.Factory dataSourceFactory;
|
||||||
private final String defaultUrl;
|
private final String defaultLicenseUrl;
|
||||||
|
private final boolean forceDefaultLicenseUrl;
|
||||||
private final Map<String, String> keyRequestProperties;
|
private final Map<String, String> keyRequestProperties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param defaultUrl The default license URL.
|
* @param defaultLicenseUrl The default license URL.
|
||||||
* @param dataSourceFactory A factory from which to obtain {@link HttpDataSource} instances.
|
* @param dataSourceFactory A factory from which to obtain {@link HttpDataSource} instances.
|
||||||
*/
|
*/
|
||||||
public HttpMediaDrmCallback(String defaultUrl, HttpDataSource.Factory dataSourceFactory) {
|
public HttpMediaDrmCallback(String defaultLicenseUrl, HttpDataSource.Factory dataSourceFactory) {
|
||||||
this(defaultUrl, dataSourceFactory, null);
|
this(defaultLicenseUrl, false, dataSourceFactory, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Use {@link HttpMediaDrmCallback#HttpMediaDrmCallback(String, Factory)}. Request
|
* @param defaultLicenseUrl The default license URL.
|
||||||
* properties can be set by calling {@link #setKeyRequestProperty(String, String)}.
|
* @param forceDefaultLicenseUrl Whether to force use of {@code defaultLicenseUrl} even for key
|
||||||
* @param defaultUrl The default license URL.
|
* requests that include their own license URL.
|
||||||
* @param dataSourceFactory A factory from which to obtain {@link HttpDataSource} instances.
|
* @param dataSourceFactory A factory from which to obtain {@link HttpDataSource} instances.
|
||||||
* @param keyRequestProperties Request properties to set when making key requests, or null.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
public HttpMediaDrmCallback(String defaultLicenseUrl, boolean forceDefaultLicenseUrl,
|
||||||
public HttpMediaDrmCallback(String defaultUrl, HttpDataSource.Factory dataSourceFactory,
|
HttpDataSource.Factory dataSourceFactory, Map<String, String> keyRequestProperties) {
|
||||||
Map<String, String> keyRequestProperties) {
|
|
||||||
this.dataSourceFactory = dataSourceFactory;
|
this.dataSourceFactory = dataSourceFactory;
|
||||||
this.defaultUrl = defaultUrl;
|
this.defaultLicenseUrl = defaultLicenseUrl;
|
||||||
|
this.forceDefaultLicenseUrl = forceDefaultLicenseUrl;
|
||||||
this.keyRequestProperties = new HashMap<>();
|
this.keyRequestProperties = new HashMap<>();
|
||||||
if (keyRequestProperties != null) {
|
if (keyRequestProperties != null) {
|
||||||
this.keyRequestProperties.putAll(keyRequestProperties);
|
this.keyRequestProperties.putAll(keyRequestProperties);
|
||||||
|
|
@ -120,8 +120,8 @@ public final class HttpMediaDrmCallback implements MediaDrmCallback {
|
||||||
@Override
|
@Override
|
||||||
public byte[] executeKeyRequest(UUID uuid, KeyRequest request) throws Exception {
|
public byte[] executeKeyRequest(UUID uuid, KeyRequest request) throws Exception {
|
||||||
String url = request.getDefaultUrl();
|
String url = request.getDefaultUrl();
|
||||||
if (TextUtils.isEmpty(url)) {
|
if (forceDefaultLicenseUrl || TextUtils.isEmpty(url)) {
|
||||||
url = defaultUrl;
|
url = defaultLicenseUrl;
|
||||||
}
|
}
|
||||||
Map<String, String> requestProperties = new HashMap<>();
|
Map<String, String> requestProperties = new HashMap<>();
|
||||||
requestProperties.put("Content-Type", "application/octet-stream");
|
requestProperties.put("Content-Type", "application/octet-stream");
|
||||||
|
|
|
||||||
|
|
@ -43,23 +43,44 @@ public final class OfflineLicenseHelper<T extends ExoMediaCrypto> {
|
||||||
* Instantiates a new instance which uses Widevine CDM. Call {@link #release()} when the instance
|
* Instantiates a new instance which uses Widevine CDM. Call {@link #release()} when the instance
|
||||||
* is no longer required.
|
* is no longer required.
|
||||||
*
|
*
|
||||||
* @param licenseUrl The default license URL.
|
* @param defaultLicenseUrl The default license URL.
|
||||||
* @param httpDataSourceFactory A factory from which to obtain {@link HttpDataSource} instances.
|
* @param httpDataSourceFactory A factory from which to obtain {@link HttpDataSource} instances.
|
||||||
* @return A new instance which uses Widevine CDM.
|
* @return A new instance which uses Widevine CDM.
|
||||||
* @throws UnsupportedDrmException If the Widevine DRM scheme is unsupported or cannot be
|
* @throws UnsupportedDrmException If the Widevine DRM scheme is unsupported or cannot be
|
||||||
* instantiated.
|
* instantiated.
|
||||||
*/
|
*/
|
||||||
public static OfflineLicenseHelper<FrameworkMediaCrypto> newWidevineInstance(
|
public static OfflineLicenseHelper<FrameworkMediaCrypto> newWidevineInstance(
|
||||||
String licenseUrl, Factory httpDataSourceFactory) throws UnsupportedDrmException {
|
String defaultLicenseUrl, Factory httpDataSourceFactory)
|
||||||
return newWidevineInstance(
|
throws UnsupportedDrmException {
|
||||||
new HttpMediaDrmCallback(licenseUrl, httpDataSourceFactory), null);
|
return newWidevineInstance(defaultLicenseUrl, false, httpDataSourceFactory, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new instance which uses Widevine CDM. Call {@link #release()} when the instance
|
* Instantiates a new instance which uses Widevine CDM. Call {@link #release()} when the instance
|
||||||
* is no longer required.
|
* is no longer required.
|
||||||
*
|
*
|
||||||
* @param callback Performs key and provisioning requests.
|
* @param defaultLicenseUrl The default license URL.
|
||||||
|
* @param forceDefaultLicenseUrl Whether to force use of {@code defaultLicenseUrl} even for key
|
||||||
|
* requests that include their own license URL.
|
||||||
|
* @param httpDataSourceFactory A factory from which to obtain {@link HttpDataSource} instances.
|
||||||
|
* @return A new instance which uses Widevine CDM.
|
||||||
|
* @throws UnsupportedDrmException If the Widevine DRM scheme is unsupported or cannot be
|
||||||
|
* instantiated.
|
||||||
|
*/
|
||||||
|
public static OfflineLicenseHelper<FrameworkMediaCrypto> newWidevineInstance(
|
||||||
|
String defaultLicenseUrl, boolean forceDefaultLicenseUrl, Factory httpDataSourceFactory)
|
||||||
|
throws UnsupportedDrmException {
|
||||||
|
return newWidevineInstance(defaultLicenseUrl, forceDefaultLicenseUrl, httpDataSourceFactory,
|
||||||
|
null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new instance which uses Widevine CDM. Call {@link #release()} when the instance
|
||||||
|
* is no longer required.
|
||||||
|
*
|
||||||
|
* @param defaultLicenseUrl The default license URL.
|
||||||
|
* @param forceDefaultLicenseUrl Whether to force use of {@code defaultLicenseUrl} even for key
|
||||||
|
* requests that include their own license URL.
|
||||||
* @param optionalKeyRequestParameters An optional map of parameters to pass as the last argument
|
* @param optionalKeyRequestParameters An optional map of parameters to pass as the last argument
|
||||||
* to {@link MediaDrm#getKeyRequest(byte[], byte[], String, int, HashMap)}. May be null.
|
* to {@link MediaDrm#getKeyRequest(byte[], byte[], String, int, HashMap)}. May be null.
|
||||||
* @return A new instance which uses Widevine CDM.
|
* @return A new instance which uses Widevine CDM.
|
||||||
|
|
@ -69,10 +90,12 @@ public final class OfflineLicenseHelper<T extends ExoMediaCrypto> {
|
||||||
* MediaDrmCallback, HashMap, Handler, EventListener)
|
* MediaDrmCallback, HashMap, Handler, EventListener)
|
||||||
*/
|
*/
|
||||||
public static OfflineLicenseHelper<FrameworkMediaCrypto> newWidevineInstance(
|
public static OfflineLicenseHelper<FrameworkMediaCrypto> newWidevineInstance(
|
||||||
MediaDrmCallback callback, HashMap<String, String> optionalKeyRequestParameters)
|
String defaultLicenseUrl, boolean forceDefaultLicenseUrl, Factory httpDataSourceFactory,
|
||||||
|
HashMap<String, String> optionalKeyRequestParameters)
|
||||||
throws UnsupportedDrmException {
|
throws UnsupportedDrmException {
|
||||||
return new OfflineLicenseHelper<>(FrameworkMediaDrm.newInstance(C.WIDEVINE_UUID), callback,
|
return new OfflineLicenseHelper<>(FrameworkMediaDrm.newInstance(C.WIDEVINE_UUID),
|
||||||
optionalKeyRequestParameters);
|
new HttpMediaDrmCallback(defaultLicenseUrl, forceDefaultLicenseUrl, httpDataSourceFactory,
|
||||||
|
null), optionalKeyRequestParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue