public IDrmSession CreateDRMSession(DRMInitData initData, DRMDescription drmDescription) { var iemeKeySystemName = CencUtils.GetKeySystemName(initData.SystemId); if (IEME.isKeySystemSupported(iemeKeySystemName) != Status.kSupported) { Logger.Warn($"Key System: {iemeKeySystemName} is not supported"); return(null); } return(CencSession.Create(initData, drmDescription)); }
public bool SupportsSystemId(byte[] uuid) { if (!CencUtils.SupportsSystemId(uuid)) { return(false); } var iemeKeySystemName = CencUtils.GetKeySystemName(uuid); return(IEME.isKeySystemSupported(iemeKeySystemName) == Status.kSupported); }
private async Task <IDrmSession> CreateDrmSession(DrmInitData initData, IEnumerable <byte[]> keys, List <DrmDescription> clipDrmConfigurations) { Logger.Warn("Creating new DRM session."); var scheme = EmeUtils.GetScheme(initData.SystemId); var drmDescription = clipDrmConfigurations.FirstOrDefault(o => SchemeEquals(o.Scheme, scheme)); if (drmDescription == null) { Logger.Warn("DRM not configured."); throw new DrmException("DRM not configured."); } var iemeKeySystemName = EmeUtils.GetKeySystemName(initData.SystemId); if (IEME.isKeySystemSupported(iemeKeySystemName) != Status.kSupported) { Logger.Warn($"Key System: {iemeKeySystemName} is not supported"); throw new DrmException($"Key System: {iemeKeySystemName} is not supported"); } var session = new MediaKeySession(initData, drmDescription, keys, this); SessionInitializing(); try { await thread.Factory.Run(() => InitializeSessionOnIemeThread(session, initData)).ConfigureAwait(false); } catch (Exception e) { Logger.Error($"EME session creation fail: {e}"); SessionInitializingDone(); CloseSession(session.GetSessionId()); session.Release(); return(null); } return(session); }