From 391ad7dbb96bf1a3828ff5502551998b34f46b11 Mon Sep 17 00:00:00 2001 From: ibaker Date: Tue, 15 Jun 2021 16:48:46 +0100 Subject: [PATCH] Add DRM info to Format.toLogString The Widevine H264 samples in the demo app now log this from the EventLogger: ``` [X] Track:0, id=1, mimeType=video/avc, bitrate=772315, codecs=avc1.42c01e, drm=[widevine,cenc], res=320x142, fps=24.0, supported=YES ``` And the VP9 ones log: ``` [X] Track:0, id=1, mimeType=video/x-vnd.on2.vp9, bitrate=588256, codecs=vp9, drm=[widevine], res=320x142, fps=23.809525, supported=YES ``` #minor-release PiperOrigin-RevId: 379498332 --- .../com/google/android/exoplayer2/Format.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/library/common/src/main/java/com/google/android/exoplayer2/Format.java b/library/common/src/main/java/com/google/android/exoplayer2/Format.java index 83461f9626..40e4dbce2a 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/Format.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/Format.java @@ -15,6 +15,8 @@ */ package com.google.android.exoplayer2; +import static com.google.android.exoplayer2.util.Assertions.checkNotNull; + import android.os.Parcel; import android.os.Parcelable; import androidx.annotation.Nullable; @@ -22,14 +24,17 @@ import com.google.android.exoplayer2.drm.DrmInitData; import com.google.android.exoplayer2.drm.ExoMediaCrypto; import com.google.android.exoplayer2.drm.UnsupportedMediaCrypto; import com.google.android.exoplayer2.metadata.Metadata; -import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.video.ColorInfo; +import com.google.common.base.Joiner; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; +import java.util.UUID; /** * Represents a media format. @@ -984,7 +989,7 @@ public final class Format implements Parcelable { int initializationDataSize = in.readInt(); initializationData = new ArrayList<>(initializationDataSize); for (int i = 0; i < initializationDataSize; i++) { - initializationData.add(Assertions.checkNotNull(in.createByteArray())); + initializationData.add(checkNotNull(in.createByteArray())); } drmInitData = in.readParcelable(DrmInitData.class.getClassLoader()); subsampleOffsetUs = in.readLong(); @@ -1322,6 +1327,26 @@ public final class Format implements Parcelable { if (format.codecs != null) { builder.append(", codecs=").append(format.codecs); } + if (format.drmInitData != null) { + Set schemes = new LinkedHashSet<>(); + for (int i = 0; i < format.drmInitData.schemeDataCount; i++) { + UUID schemeUuid = format.drmInitData.get(i).uuid; + if (schemeUuid.equals(C.COMMON_PSSH_UUID)) { + schemes.add("cenc"); + } else if (schemeUuid.equals(C.CLEARKEY_UUID)) { + schemes.add("clearkey"); + } else if (schemeUuid.equals(C.PLAYREADY_UUID)) { + schemes.add("playready"); + } else if (schemeUuid.equals(C.WIDEVINE_UUID)) { + schemes.add("widevine"); + } else if (schemeUuid.equals(C.UUID_NIL)) { + schemes.add("universal"); + } else { + schemes.add("unknown (" + schemeUuid + ")"); + } + } + builder.append(", drm=[").append(Joiner.on(',').join(schemes)).append(']'); + } if (format.width != NO_VALUE && format.height != NO_VALUE) { builder.append(", res=").append(format.width).append("x").append(format.height); }