package com.mbridge.msdk.playercommon.exoplayer2.drm; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.text.TextUtils; import android.util.Log; import androidx.annotation.NonNull; import com.ironsource.mediationsdk.metadata.a; import com.mbridge.msdk.playercommon.exoplayer2.C; import com.mbridge.msdk.playercommon.exoplayer2.drm.DefaultDrmSession; import com.mbridge.msdk.playercommon.exoplayer2.drm.DefaultDrmSessionEventListener; import com.mbridge.msdk.playercommon.exoplayer2.drm.DrmInitData; import com.mbridge.msdk.playercommon.exoplayer2.drm.DrmSession; import com.mbridge.msdk.playercommon.exoplayer2.drm.ExoMediaCrypto; import com.mbridge.msdk.playercommon.exoplayer2.drm.ExoMediaDrm; import com.mbridge.msdk.playercommon.exoplayer2.extractor.mp4.PsshAtomUtil; import com.mbridge.msdk.playercommon.exoplayer2.util.Assertions; import com.mbridge.msdk.playercommon.exoplayer2.util.Util; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.UUID; @TargetApi(18) /* loaded from: classes4.dex */ public class DefaultDrmSessionManager implements DefaultDrmSession.ProvisioningManager, DrmSessionManager { public static final int INITIAL_DRM_REQUEST_RETRY_COUNT = 3; public static final int MODE_DOWNLOAD = 2; public static final int MODE_PLAYBACK = 0; public static final int MODE_QUERY = 1; public static final int MODE_RELEASE = 3; public static final String PLAYREADY_CUSTOM_DATA_KEY = "PRCustomData"; private static final String TAG = "DefaultDrmSessionMgr"; private final MediaDrmCallback callback; private final DefaultDrmSessionEventListener.EventDispatcher eventDispatcher; private final int initialDrmRequestRetryCount; private final ExoMediaDrm mediaDrm; volatile DefaultDrmSessionManager.MediaDrmHandler mediaDrmHandler; private int mode; private final boolean multiSession; private byte[] offlineLicenseKeySetId; private final HashMap optionalKeyRequestParameters; private Looper playbackLooper; private final List> provisioningSessions; private final List> sessions; private final UUID uuid; @Deprecated public interface EventListener extends DefaultDrmSessionEventListener { } @Retention(RetentionPolicy.SOURCE) public @interface Mode { } public static final class MissingSchemeDataException extends Exception { private MissingSchemeDataException(UUID uuid) { super("Media does not support uuid: " + uuid); } } @Deprecated public static DefaultDrmSessionManager newWidevineInstance(MediaDrmCallback mediaDrmCallback, HashMap hashMap, Handler handler, DefaultDrmSessionEventListener defaultDrmSessionEventListener) throws UnsupportedDrmException { DefaultDrmSessionManager newWidevineInstance = newWidevineInstance(mediaDrmCallback, hashMap); if (handler != null && defaultDrmSessionEventListener != null) { newWidevineInstance.addListener(handler, defaultDrmSessionEventListener); } return newWidevineInstance; } public static DefaultDrmSessionManager newWidevineInstance(MediaDrmCallback mediaDrmCallback, HashMap hashMap) throws UnsupportedDrmException { return newFrameworkInstance(C.WIDEVINE_UUID, mediaDrmCallback, hashMap); } @Deprecated public static DefaultDrmSessionManager newPlayReadyInstance(MediaDrmCallback mediaDrmCallback, String str, Handler handler, DefaultDrmSessionEventListener defaultDrmSessionEventListener) throws UnsupportedDrmException { DefaultDrmSessionManager newPlayReadyInstance = newPlayReadyInstance(mediaDrmCallback, str); if (handler != null && defaultDrmSessionEventListener != null) { newPlayReadyInstance.addListener(handler, defaultDrmSessionEventListener); } return newPlayReadyInstance; } public static DefaultDrmSessionManager newPlayReadyInstance(MediaDrmCallback mediaDrmCallback, String str) throws UnsupportedDrmException { HashMap hashMap; if (TextUtils.isEmpty(str)) { hashMap = null; } else { hashMap = new HashMap(); hashMap.put(PLAYREADY_CUSTOM_DATA_KEY, str); } return newFrameworkInstance(C.PLAYREADY_UUID, mediaDrmCallback, hashMap); } @Deprecated public static DefaultDrmSessionManager newFrameworkInstance(UUID uuid, MediaDrmCallback mediaDrmCallback, HashMap hashMap, Handler handler, DefaultDrmSessionEventListener defaultDrmSessionEventListener) throws UnsupportedDrmException { DefaultDrmSessionManager newFrameworkInstance = newFrameworkInstance(uuid, mediaDrmCallback, hashMap); if (handler != null && defaultDrmSessionEventListener != null) { newFrameworkInstance.addListener(handler, defaultDrmSessionEventListener); } return newFrameworkInstance; } public static DefaultDrmSessionManager newFrameworkInstance(UUID uuid, MediaDrmCallback mediaDrmCallback, HashMap hashMap) throws UnsupportedDrmException { return new DefaultDrmSessionManager<>(uuid, (ExoMediaDrm) FrameworkMediaDrm.newInstance(uuid), mediaDrmCallback, hashMap, false, 3); } @Deprecated public DefaultDrmSessionManager(UUID uuid, ExoMediaDrm exoMediaDrm, MediaDrmCallback mediaDrmCallback, HashMap hashMap, Handler handler, DefaultDrmSessionEventListener defaultDrmSessionEventListener) { this(uuid, exoMediaDrm, mediaDrmCallback, hashMap); if (handler == null || defaultDrmSessionEventListener == null) { return; } addListener(handler, defaultDrmSessionEventListener); } public DefaultDrmSessionManager(UUID uuid, ExoMediaDrm exoMediaDrm, MediaDrmCallback mediaDrmCallback, HashMap hashMap) { this(uuid, (ExoMediaDrm) exoMediaDrm, mediaDrmCallback, hashMap, false, 3); } @Deprecated public DefaultDrmSessionManager(UUID uuid, ExoMediaDrm exoMediaDrm, MediaDrmCallback mediaDrmCallback, HashMap hashMap, Handler handler, DefaultDrmSessionEventListener defaultDrmSessionEventListener, boolean z) { this(uuid, exoMediaDrm, mediaDrmCallback, hashMap, z); if (handler == null || defaultDrmSessionEventListener == null) { return; } addListener(handler, defaultDrmSessionEventListener); } public DefaultDrmSessionManager(UUID uuid, ExoMediaDrm exoMediaDrm, MediaDrmCallback mediaDrmCallback, HashMap hashMap, boolean z) { this(uuid, exoMediaDrm, mediaDrmCallback, hashMap, z, 3); } @Deprecated public DefaultDrmSessionManager(UUID uuid, ExoMediaDrm exoMediaDrm, MediaDrmCallback mediaDrmCallback, HashMap hashMap, Handler handler, DefaultDrmSessionEventListener defaultDrmSessionEventListener, boolean z, int i) { this(uuid, exoMediaDrm, mediaDrmCallback, hashMap, z, i); if (handler == null || defaultDrmSessionEventListener == null) { return; } addListener(handler, defaultDrmSessionEventListener); } public DefaultDrmSessionManager(UUID uuid, ExoMediaDrm exoMediaDrm, MediaDrmCallback mediaDrmCallback, HashMap hashMap, boolean z, int i) { Assertions.checkNotNull(uuid); Assertions.checkNotNull(exoMediaDrm); Assertions.checkArgument(!C.COMMON_PSSH_UUID.equals(uuid), "Use C.CLEARKEY_UUID instead"); this.uuid = uuid; this.mediaDrm = exoMediaDrm; this.callback = mediaDrmCallback; this.optionalKeyRequestParameters = hashMap; this.eventDispatcher = new DefaultDrmSessionEventListener.EventDispatcher(); this.multiSession = z; this.initialDrmRequestRetryCount = i; this.mode = 0; this.sessions = new ArrayList(); this.provisioningSessions = new ArrayList(); if (z) { exoMediaDrm.setPropertyString("sessionSharing", a.j); } exoMediaDrm.setOnEventListener(new MediaDrmEventListener()); } public final void addListener(Handler handler, DefaultDrmSessionEventListener defaultDrmSessionEventListener) { this.eventDispatcher.addListener(handler, defaultDrmSessionEventListener); } public final void removeListener(DefaultDrmSessionEventListener defaultDrmSessionEventListener) { this.eventDispatcher.removeListener(defaultDrmSessionEventListener); } public final String getPropertyString(String str) { return this.mediaDrm.getPropertyString(str); } public final void setPropertyString(String str, String str2) { this.mediaDrm.setPropertyString(str, str2); } public final byte[] getPropertyByteArray(String str) { return this.mediaDrm.getPropertyByteArray(str); } public final void setPropertyByteArray(String str, byte[] bArr) { this.mediaDrm.setPropertyByteArray(str, bArr); } public void setMode(int i, byte[] bArr) { Assertions.checkState(this.sessions.isEmpty()); if (i == 1 || i == 3) { Assertions.checkNotNull(bArr); } this.mode = i; this.offlineLicenseKeySetId = bArr; } @Override // com.mbridge.msdk.playercommon.exoplayer2.drm.DrmSessionManager public boolean canAcquireSession(@NonNull DrmInitData drmInitData) { if (this.offlineLicenseKeySetId != null) { return true; } if (getSchemeData(drmInitData, this.uuid, true) == null) { if (drmInitData.schemeDataCount != 1 || !drmInitData.get(0).matches(C.COMMON_PSSH_UUID)) { return false; } Log.w(TAG, "DrmInitData only contains common PSSH SchemeData. Assuming support for: " + this.uuid); } String str = drmInitData.schemeType; if (str == null || C.CENC_TYPE_cenc.equals(str)) { return true; } return !(C.CENC_TYPE_cbc1.equals(str) || C.CENC_TYPE_cbcs.equals(str) || C.CENC_TYPE_cens.equals(str)) || Util.SDK_INT >= 25; } /* JADX WARN: Multi-variable type inference failed */ /* JADX WARN: Type inference failed for: r2v0, types: [com.mbridge.msdk.playercommon.exoplayer2.drm.DefaultDrmSessionManager$1] */ /* JADX WARN: Type inference failed for: r2v1 */ /* JADX WARN: Type inference failed for: r2v12 */ /* JADX WARN: Type inference failed for: r2v2 */ /* JADX WARN: Type inference failed for: r2v3, types: [com.mbridge.msdk.playercommon.exoplayer2.drm.DefaultDrmSession, com.mbridge.msdk.playercommon.exoplayer2.drm.DrmSession] */ /* JADX WARN: Type inference failed for: r2v5 */ /* JADX WARN: Type inference failed for: r2v7, types: [com.mbridge.msdk.playercommon.exoplayer2.drm.DefaultDrmSession] */ @Override // com.mbridge.msdk.playercommon.exoplayer2.drm.DrmSessionManager public DrmSession acquireSession(Looper looper, DrmInitData drmInitData) { DrmInitData.SchemeData schemeData; Looper looper2 = this.playbackLooper; Assertions.checkState(looper2 == null || looper2 == looper); if (this.sessions.isEmpty()) { this.playbackLooper = looper; if (this.mediaDrmHandler == null) { this.mediaDrmHandler = new MediaDrmHandler(looper); } } DefaultDrmSession defaultDrmSession = 0; defaultDrmSession = 0; if (this.offlineLicenseKeySetId == null) { DrmInitData.SchemeData schemeData2 = getSchemeData(drmInitData, this.uuid, false); if (schemeData2 == null) { MissingSchemeDataException missingSchemeDataException = new MissingSchemeDataException(this.uuid); this.eventDispatcher.drmSessionManagerError(missingSchemeDataException); return new ErrorStateDrmSession(new DrmSession.DrmSessionException(missingSchemeDataException)); } schemeData = schemeData2; } else { schemeData = null; } if (!this.multiSession) { if (!this.sessions.isEmpty()) { defaultDrmSession = this.sessions.get(0); } } else { byte[] bArr = schemeData != null ? schemeData.data : null; Iterator> it = this.sessions.iterator(); while (true) { if (!it.hasNext()) { break; } DefaultDrmSession next = it.next(); if (next.hasInitData(bArr)) { defaultDrmSession = next; break; } } } if (defaultDrmSession == 0) { DefaultDrmSession defaultDrmSession2 = new DefaultDrmSession<>(this.uuid, this.mediaDrm, this, schemeData, this.mode, this.offlineLicenseKeySetId, this.optionalKeyRequestParameters, this.callback, looper, this.eventDispatcher, this.initialDrmRequestRetryCount); this.sessions.add(defaultDrmSession2); defaultDrmSession = defaultDrmSession2; } ((DefaultDrmSession) defaultDrmSession).acquire(); return (DrmSession) defaultDrmSession; } @Override // com.mbridge.msdk.playercommon.exoplayer2.drm.DrmSessionManager public void releaseSession(DrmSession drmSession) { if (drmSession instanceof ErrorStateDrmSession) { return; } DefaultDrmSession defaultDrmSession = (DefaultDrmSession) drmSession; if (defaultDrmSession.release()) { this.sessions.remove(defaultDrmSession); if (this.provisioningSessions.size() > 1 && this.provisioningSessions.get(0) == defaultDrmSession) { this.provisioningSessions.get(1).provision(); } this.provisioningSessions.remove(defaultDrmSession); } } @Override // com.mbridge.msdk.playercommon.exoplayer2.drm.DefaultDrmSession.ProvisioningManager public void provisionRequired(DefaultDrmSession defaultDrmSession) { this.provisioningSessions.add(defaultDrmSession); if (this.provisioningSessions.size() == 1) { defaultDrmSession.provision(); } } @Override // com.mbridge.msdk.playercommon.exoplayer2.drm.DefaultDrmSession.ProvisioningManager public void onProvisionCompleted() { Iterator> it = this.provisioningSessions.iterator(); while (it.hasNext()) { it.next().onProvisionCompleted(); } this.provisioningSessions.clear(); } @Override // com.mbridge.msdk.playercommon.exoplayer2.drm.DefaultDrmSession.ProvisioningManager public void onProvisionError(Exception exc) { Iterator> it = this.provisioningSessions.iterator(); while (it.hasNext()) { it.next().onProvisionError(exc); } this.provisioningSessions.clear(); } private static DrmInitData.SchemeData getSchemeData(DrmInitData drmInitData, UUID uuid, boolean z) { ArrayList arrayList = new ArrayList(drmInitData.schemeDataCount); for (int i = 0; i < drmInitData.schemeDataCount; i++) { DrmInitData.SchemeData schemeData = drmInitData.get(i); if ((schemeData.matches(uuid) || (C.CLEARKEY_UUID.equals(uuid) && schemeData.matches(C.COMMON_PSSH_UUID))) && (schemeData.data != null || z)) { arrayList.add(schemeData); } } if (arrayList.isEmpty()) { return null; } if (C.WIDEVINE_UUID.equals(uuid)) { for (int i2 = 0; i2 < arrayList.size(); i2++) { DrmInitData.SchemeData schemeData2 = (DrmInitData.SchemeData) arrayList.get(i2); int parseVersion = schemeData2.hasData() ? PsshAtomUtil.parseVersion(schemeData2.data) : -1; int i3 = Util.SDK_INT; if (i3 < 23 && parseVersion == 0) { return schemeData2; } if (i3 >= 23 && parseVersion == 1) { return schemeData2; } } } return (DrmInitData.SchemeData) arrayList.get(0); } @SuppressLint({"HandlerLeak"}) public class MediaDrmHandler extends Handler { public MediaDrmHandler(Looper looper) { super(looper); } @Override // android.os.Handler public void handleMessage(Message message) { byte[] bArr = (byte[]) message.obj; for (DefaultDrmSession defaultDrmSession : DefaultDrmSessionManager.this.sessions) { if (defaultDrmSession.hasSessionId(bArr)) { defaultDrmSession.onMediaDrmEvent(message.what); return; } } } } public class MediaDrmEventListener implements ExoMediaDrm.OnEventListener { private MediaDrmEventListener() { } @Override // com.mbridge.msdk.playercommon.exoplayer2.drm.ExoMediaDrm.OnEventListener public void onEvent(ExoMediaDrm exoMediaDrm, byte[] bArr, int i, int i2, byte[] bArr2) { if (DefaultDrmSessionManager.this.mode == 0) { DefaultDrmSessionManager.this.mediaDrmHandler.obtainMessage(i, bArr).sendToTarget(); } } } }