summaryrefslogtreecommitdiff
path: root/media/java/android/media/metrics/PlaybackMetrics.java
diff options
context:
space:
mode:
Diffstat (limited to 'media/java/android/media/metrics/PlaybackMetrics.java')
-rw-r--r--media/java/android/media/metrics/PlaybackMetrics.java65
1 files changed, 61 insertions, 4 deletions
diff --git a/media/java/android/media/metrics/PlaybackMetrics.java b/media/java/android/media/metrics/PlaybackMetrics.java
index 4aa61662ba52..7e7f44a97b9c 100644
--- a/media/java/android/media/metrics/PlaybackMetrics.java
+++ b/media/java/android/media/metrics/PlaybackMetrics.java
@@ -20,6 +20,7 @@ import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
@@ -58,6 +59,10 @@ public final class PlaybackMetrics implements Parcelable {
/** SS (HTTP Smooth Streaming) stream type. */
public static final int STREAM_TYPE_SS = 5;
+ /** Unknown playback type. */
+ // TODO: change the PLAYBACK_TYPE_ values
+ /** @hide */
+ public static final int PLAYBACK_TYPE_UNKNOWN = 0;
/** VOD (Video on Demand) playback type. */
public static final int PLAYBACK_TYPE_VOD = 0;
/** Live playback type. */
@@ -80,6 +85,10 @@ public final class PlaybackMetrics implements Parcelable {
/** Clear key DRM type. */
public static final int DRM_TYPE_CLEARKEY = 6;
+ /** Unknown content type. */
+ // TODO: change the CONTENT_TYPE_ values
+ /** @hide */
+ public static final int CONTENT_TYPE_UNKNOWN = 0;
/** Main contents. */
public static final int CONTENT_TYPE_MAIN = 0;
/** Advertisement contents. */
@@ -112,6 +121,7 @@ public final class PlaybackMetrics implements Parcelable {
/** @hide */
@IntDef(prefix = "PLAYBACK_TYPE_", value = {
+ PLAYBACK_TYPE_UNKNOWN,
PLAYBACK_TYPE_VOD,
PLAYBACK_TYPE_LIVE,
PLAYBACK_TYPE_OTHER
@@ -134,6 +144,7 @@ public final class PlaybackMetrics implements Parcelable {
/** @hide */
@IntDef(prefix = "CONTENT_TYPE_", value = {
+ CONTENT_TYPE_UNKNOWN,
CONTENT_TYPE_MAIN,
CONTENT_TYPE_AD,
CONTENT_TYPE_OTHER
@@ -158,6 +169,8 @@ public final class PlaybackMetrics implements Parcelable {
private final long mNetworkBytesRead;
private final long mLocalBytesRead;
private final long mNetworkTransferDurationMillis;
+ private final byte[] mDrmSessionId;
+ private final Bundle mExtras;
/**
* Creates a new PlaybackMetrics.
@@ -179,7 +192,9 @@ public final class PlaybackMetrics implements Parcelable {
int audioUnderrunCount,
long networkBytesRead,
long localBytesRead,
- long networkTransferDurationMillis) {
+ long networkTransferDurationMillis,
+ byte[] drmSessionId,
+ Bundle extras) {
this.mMediaDurationMillis = mediaDurationMillis;
this.mStreamSource = streamSource;
this.mStreamType = streamType;
@@ -196,6 +211,8 @@ public final class PlaybackMetrics implements Parcelable {
this.mNetworkBytesRead = networkBytesRead;
this.mLocalBytesRead = localBytesRead;
this.mNetworkTransferDurationMillis = networkTransferDurationMillis;
+ this.mDrmSessionId = drmSessionId;
+ this.mExtras = extras.deepCopy();
}
/**
@@ -321,6 +338,12 @@ public final class PlaybackMetrics implements Parcelable {
return mNetworkTransferDurationMillis;
}
+ /** @hide */
+ @NonNull
+ public byte[] getDrmSessionId() {
+ return mDrmSessionId;
+ }
+
@Override
public String toString() {
return "PlaybackMetrics { "
@@ -339,6 +362,7 @@ public final class PlaybackMetrics implements Parcelable {
+ "networkBytesRead = " + mNetworkBytesRead + ", "
+ "localBytesRead = " + mLocalBytesRead + ", "
+ "networkTransferDurationMillis = " + mNetworkTransferDurationMillis
+ + "drmSessionId = " + Arrays.toString(mDrmSessionId)
+ " }";
}
@@ -361,7 +385,8 @@ public final class PlaybackMetrics implements Parcelable {
&& mAudioUnderrunCount == that.mAudioUnderrunCount
&& mNetworkBytesRead == that.mNetworkBytesRead
&& mLocalBytesRead == that.mLocalBytesRead
- && mNetworkTransferDurationMillis == that.mNetworkTransferDurationMillis;
+ && mNetworkTransferDurationMillis == that.mNetworkTransferDurationMillis
+ && Arrays.equals(mDrmSessionId, that.mDrmSessionId);
}
@Override
@@ -369,7 +394,7 @@ public final class PlaybackMetrics implements Parcelable {
return Objects.hash(mMediaDurationMillis, mStreamSource, mStreamType, mPlaybackType,
mDrmType, mContentType, mPlayerName, mPlayerVersion, mExperimentIds,
mVideoFramesPlayed, mVideoFramesDropped, mAudioUnderrunCount, mNetworkBytesRead,
- mLocalBytesRead, mNetworkTransferDurationMillis);
+ mLocalBytesRead, mNetworkTransferDurationMillis, mDrmSessionId);
}
@Override
@@ -377,6 +402,7 @@ public final class PlaybackMetrics implements Parcelable {
long flg = 0;
if (mPlayerName != null) flg |= 0x80;
if (mPlayerVersion != null) flg |= 0x100;
+ if (mExtras != null) flg |= 0x200;
dest.writeLong(flg);
dest.writeLong(mMediaDurationMillis);
dest.writeInt(mStreamSource);
@@ -386,6 +412,7 @@ public final class PlaybackMetrics implements Parcelable {
dest.writeInt(mContentType);
if (mPlayerName != null) dest.writeString(mPlayerName);
if (mPlayerVersion != null) dest.writeString(mPlayerVersion);
+ if (mExtras != null) dest.writeBundle(mExtras);
dest.writeLongArray(mExperimentIds);
dest.writeInt(mVideoFramesPlayed);
dest.writeInt(mVideoFramesDropped);
@@ -393,6 +420,8 @@ public final class PlaybackMetrics implements Parcelable {
dest.writeLong(mNetworkBytesRead);
dest.writeLong(mLocalBytesRead);
dest.writeLong(mNetworkTransferDurationMillis);
+ dest.writeInt(mDrmSessionId.length);
+ dest.writeByteArray(mDrmSessionId);
}
@Override
@@ -411,6 +440,7 @@ public final class PlaybackMetrics implements Parcelable {
int contentType = in.readInt();
String playerName = (flg & 0x80) == 0 ? null : in.readString();
String playerVersion = (flg & 0x100) == 0 ? null : in.readString();
+ Bundle extras = (flg & 0x200) == 0 ? null : in.readBundle();
long[] experimentIds = in.createLongArray();
int videoFramesPlayed = in.readInt();
int videoFramesDropped = in.readInt();
@@ -418,6 +448,9 @@ public final class PlaybackMetrics implements Parcelable {
long networkBytesRead = in.readLong();
long localBytesRead = in.readLong();
long networkTransferDurationMillis = in.readLong();
+ int drmSessionIdLen = in.readInt();
+ byte[] drmSessionId = new byte[drmSessionIdLen];
+ in.readByteArray(drmSessionId);
this.mMediaDurationMillis = mediaDurationMillis;
this.mStreamSource = streamSource;
@@ -435,6 +468,8 @@ public final class PlaybackMetrics implements Parcelable {
this.mNetworkBytesRead = networkBytesRead;
this.mLocalBytesRead = localBytesRead;
this.mNetworkTransferDurationMillis = networkTransferDurationMillis;
+ this.mDrmSessionId = drmSessionId;
+ this.mExtras = extras;
}
public static final @NonNull Parcelable.Creator<PlaybackMetrics> CREATOR =
@@ -470,6 +505,8 @@ public final class PlaybackMetrics implements Parcelable {
private long mNetworkBytesRead = -1;
private long mLocalBytesRead = -1;
private long mNetworkTransferDurationMillis = -1;
+ private byte[] mDrmSessionId = new byte[0];
+ private Bundle mExtras;
/**
* Creates a new Builder.
@@ -608,6 +645,24 @@ public final class PlaybackMetrics implements Parcelable {
return this;
}
+ /**
+ * @hide
+ */
+ public @NonNull Builder setDrmSessionId(@NonNull byte[] drmSessionId) {
+ mDrmSessionId = drmSessionId;
+ return this;
+ }
+
+ /**
+ * Set extras for compatibility.
+ * <p>Should be used by support library only.
+ * @hide
+ */
+ public @NonNull Builder setExtras(@NonNull Bundle extras) {
+ mExtras = extras;
+ return this;
+ }
+
/** Builds the instance. This builder should not be touched after calling this! */
public @NonNull PlaybackMetrics build() {
@@ -626,7 +681,9 @@ public final class PlaybackMetrics implements Parcelable {
mAudioUnderrunCount,
mNetworkBytesRead,
mLocalBytesRead,
- mNetworkTransferDurationMillis);
+ mNetworkTransferDurationMillis,
+ mDrmSessionId,
+ mExtras);
return o;
}