/** * Signals that the {@link DrmInitData} passed to {@link #acquireSession} does not contain does * not contain scheme data for the required UUID. */ public static final class MissingSchemeDataException extends Exception { private MissingSchemeDataException(UUID uuid) { super("Media does not support uuid: " + uuid); } }
/** * @deprecated Use {@link #newWidevineInstance(MediaDrmCallback, HashMap)} and {@link * #addListener(Handler, DefaultDrmSessionEventListener)}. */ @Deprecated public static DefaultDrmSessionManager<FrameworkMediaCrypto> newWidevineInstance( MediaDrmCallback callback, HashMap<String, String> optionalKeyRequestParameters, Handler eventHandler, DefaultDrmSessionEventListener eventListener) throws UnsupportedDrmException { DefaultDrmSessionManager<FrameworkMediaCrypto> drmSessionManager = newWidevineInstance(callback, optionalKeyRequestParameters); if (eventHandler != null && eventListener != null) { drmSessionManager.addListener(eventHandler, eventListener); } return drmSessionManager; }
/** * @see DefaultDrmSessionManager#setPropertyString */ public synchronized void setPropertyString(String key, String value) { drmSessionManager.setPropertyString(key, value); }
/** * @deprecated Use {@link #newPlayReadyInstance(MediaDrmCallback, String)} and {@link * #addListener(Handler, DefaultDrmSessionEventListener)}. */ @Deprecated public static DefaultDrmSessionManager<FrameworkMediaCrypto> newPlayReadyInstance( MediaDrmCallback callback, String customData, Handler eventHandler, DefaultDrmSessionEventListener eventListener) throws UnsupportedDrmException { DefaultDrmSessionManager<FrameworkMediaCrypto> drmSessionManager = newPlayReadyInstance(callback, customData); if (eventHandler != null && eventListener != null) { drmSessionManager.addListener(eventHandler, eventListener); } return drmSessionManager; }
/** * @deprecated Use {@link #newFrameworkInstance(UUID, MediaDrmCallback, HashMap)} and {@link * #addListener(Handler, DefaultDrmSessionEventListener)}. */ @Deprecated public static DefaultDrmSessionManager<FrameworkMediaCrypto> newFrameworkInstance( UUID uuid, MediaDrmCallback callback, HashMap<String, String> optionalKeyRequestParameters, Handler eventHandler, DefaultDrmSessionEventListener eventListener) throws UnsupportedDrmException { DefaultDrmSessionManager<FrameworkMediaCrypto> drmSessionManager = newFrameworkInstance(uuid, callback, optionalKeyRequestParameters); if (eventHandler != null && eventListener != null) { drmSessionManager.addListener(eventHandler, eventListener); } return drmSessionManager; }
new DefaultDrmSessionManager<>(uuid, mediaDrm, callback, optionalKeyRequestParameters); drmSessionManager.addListener(new Handler(handlerThread.getLooper()), eventListener);
@Override public DrmSessionManager<FrameworkMediaCrypto> create(DefaultDrmSessionEventListener eventListener) { FrameworkMediaDrm frameworkMediaDrm = frameworkMediaDrmCreator.create(WIDEVINE_MODULAR_UUID); DefaultDrmSessionManager<FrameworkMediaCrypto> defaultDrmSessionManager = new DefaultDrmSessionManager<>( WIDEVINE_MODULAR_UUID, frameworkMediaDrm, mediaDrmCallback, NO_OPTIONAL_PARAMETERS ); defaultDrmSessionManager.removeListener(eventListener); defaultDrmSessionManager.addListener(handler, eventListener); return defaultDrmSessionManager; } }
@Override protected DefaultDrmSessionManager<FrameworkMediaCrypto> buildDrmSessionManager( final String userAgent) { if (widevineLicenseUrl == null) { return null; } try { MediaDrmCallback drmCallback = new HttpMediaDrmCallback(widevineLicenseUrl, new DefaultHttpDataSourceFactory(userAgent)); DefaultDrmSessionManager<FrameworkMediaCrypto> drmSessionManager = DefaultDrmSessionManager.newWidevineInstance(drmCallback, null); if (!useL1Widevine) { drmSessionManager.setPropertyString( SECURITY_LEVEL_PROPERTY, WIDEVINE_SECURITY_LEVEL_3); } if (offlineLicenseKeySetId != null) { drmSessionManager.setMode(DefaultDrmSessionManager.MODE_PLAYBACK, offlineLicenseKeySetId); } return drmSessionManager; } catch (UnsupportedDrmException e) { throw new IllegalStateException(e); } }
/** * Instantiates a new instance. * * @param uuid The UUID of the drm scheme. * @param callback Performs key and provisioning requests. * @param optionalKeyRequestParameters An optional map of parameters to pass as the last argument * to {@link ExoMediaDrm#getKeyRequest(byte[], List, int, HashMap)}. May be null. * @throws UnsupportedDrmException If the specified DRM scheme is not supported. */ public static DefaultDrmSessionManager<FrameworkMediaCrypto> newFrameworkInstance( UUID uuid, MediaDrmCallback callback, HashMap<String, String> optionalKeyRequestParameters) throws UnsupportedDrmException { return new DefaultDrmSessionManager<>( uuid, FrameworkMediaDrm.newInstance(uuid), callback, optionalKeyRequestParameters, /* multiSession= */ false, INITIAL_DRM_REQUEST_RETRY_COUNT); }
private DrmSession<T> openBlockingKeyRequest(@Mode int licenseMode, byte[] offlineLicenseKeySetId, DrmInitData drmInitData) { drmSessionManager.setMode(licenseMode, offlineLicenseKeySetId); conditionVariable.close(); DrmSession<T> drmSession = drmSessionManager.acquireSession(handlerThread.getLooper(), drmInitData); // Block current thread until key loading is finished conditionVariable.block(); return drmSession; }
/** * @see DefaultDrmSessionManager#getPropertyByteArray */ public synchronized byte[] getPropertyByteArray(String key) { return drmSessionManager.getPropertyByteArray(key); }
/** * Generates the {@link DrmSessionManager} to use with the {@link RendererProvider}. This will * return null on API's < {@value Build.VERSION_CODES#JELLY_BEAN_MR2} * * @return The {@link DrmSessionManager} to use or <code>null</code> */ @Nullable protected DrmSessionManager<FrameworkMediaCrypto> generateDrmSessionManager() { // DRM is only supported on API 18 + in the ExoPlayer if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { return null; } // Widevine will capture the majority of use cases however playready is supported on all AndroidTV devices UUID uuid = C.WIDEVINE_UUID; try { DefaultDrmSessionManager<FrameworkMediaCrypto> sessionManager = new DefaultDrmSessionManager<>(uuid, FrameworkMediaDrm.newInstance(uuid), new DelegatedMediaDrmCallback(), null); sessionManager.addListener(mainHandler, capabilitiesListener); return sessionManager; } catch (Exception e) { Log.d(TAG, "Unable to create a DrmSessionManager due to an exception", e); return null; } }
private DrmSessionManager<FrameworkMediaCrypto> buildDrmSessionManager(UUID uuid, String licenseUrl, String[] keyRequestPropertiesArray) throws UnsupportedDrmException { if (Util.SDK_INT < 18) { return null; } HttpMediaDrmCallback drmCallback = new HttpMediaDrmCallback(licenseUrl, buildHttpDataSourceFactory(false)); if (keyRequestPropertiesArray != null) { for (int i = 0; i < keyRequestPropertiesArray.length - 1; i += 2) { drmCallback.setKeyRequestProperty(keyRequestPropertiesArray[i], keyRequestPropertiesArray[i + 1]); } } return new DefaultDrmSessionManager<>(uuid, FrameworkMediaDrm.newInstance(uuid), drmCallback, null, mainHandler, eventLogger); }
/** * @deprecated Use {@link #DefaultDrmSessionManager(UUID, ExoMediaDrm, MediaDrmCallback, HashMap)} * and {@link #addListener(Handler, DefaultDrmSessionEventListener)}. */ @Deprecated public DefaultDrmSessionManager( UUID uuid, ExoMediaDrm<T> mediaDrm, MediaDrmCallback callback, HashMap<String, String> optionalKeyRequestParameters, Handler eventHandler, DefaultDrmSessionEventListener eventListener) { this(uuid, mediaDrm, callback, optionalKeyRequestParameters); if (eventHandler != null && eventListener != null) { addListener(eventHandler, eventListener); } }
/** * @deprecated Use {@link #DefaultDrmSessionManager(UUID, ExoMediaDrm, MediaDrmCallback, HashMap, * boolean)} and {@link #addListener(Handler, DefaultDrmSessionEventListener)}. */ @Deprecated public DefaultDrmSessionManager( UUID uuid, ExoMediaDrm<T> mediaDrm, MediaDrmCallback callback, HashMap<String, String> optionalKeyRequestParameters, Handler eventHandler, DefaultDrmSessionEventListener eventListener, boolean multiSession) { this(uuid, mediaDrm, callback, optionalKeyRequestParameters, multiSession); if (eventHandler != null && eventListener != null) { addListener(eventHandler, eventListener); } }
/** @deprecated Use {@link com.google.android.exoplayer2.video.VideoListener}. */ @Deprecated public interface VideoListener extends com.google.android.exoplayer2.video.VideoListener {}
protected void setupDamSessionManagerAnalytics(DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) { if (drmSessionManager instanceof DefaultDrmSessionManager) { ((DefaultDrmSessionManager) drmSessionManager).addListener(mainHandler, analyticsCollector); } }