summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Santiago Seifert <aquilescanta@google.com> 2019-12-12 14:53:54 +0000
committer Santiago Seifert <aquilescanta@google.com> 2019-12-12 15:51:33 +0000
commitacc2d2bbf1f77e35d92492d4dfb49688b4dad409 (patch)
treec5a58301847206ca32bd3ea7f7b940c800bcf531
parentc70aa04d8371942a721f73fe0b08e379688704c8 (diff)
Add MediaParser.TrackData object
Which allows exposing new DrmInitData. Bug: 132153067 Bug: 134057371 Test: Pending. Change-Id: I106126f931c27de31af59bf2c32b575f8612b3fc
-rw-r--r--api/current.txt7
-rw-r--r--media/apex/java/android/media/MediaParser.java40
2 files changed, 40 insertions, 7 deletions
diff --git a/api/current.txt b/api/current.txt
index 00f06ec3545d..8f1440dcb72d 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -25641,10 +25641,10 @@ package android.media {
}
public static interface MediaParser.OutputConsumer {
- method public void onFormat(int, @NonNull android.media.MediaFormat);
method public void onSampleCompleted(int, long, int, int, int, @Nullable android.media.MediaCodec.CryptoInfo);
method public void onSampleData(int, @NonNull android.media.MediaParser.InputReader) throws java.io.IOException, java.lang.InterruptedException;
method public void onSeekMap(@NonNull android.media.MediaParser.SeekMap);
+ method public void onTrackData(int, @NonNull android.media.MediaParser.TrackData);
method public void onTracksFound(int);
}
@@ -25665,6 +25665,11 @@ package android.media {
method public void seekToPosition(long);
}
+ public static final class MediaParser.TrackData {
+ field @Nullable public final android.media.DrmInitData drmInitData;
+ field @NonNull public final android.media.MediaFormat mediaFormat;
+ }
+
public static final class MediaParser.UnrecognizedInputFormatException extends java.io.IOException {
}
diff --git a/media/apex/java/android/media/MediaParser.java b/media/apex/java/android/media/MediaParser.java
index b83f44540955..ac66d1b7f4ad 100644
--- a/media/apex/java/android/media/MediaParser.java
+++ b/media/apex/java/android/media/MediaParser.java
@@ -102,7 +102,8 @@ import java.util.Map;
* public void onSeekMap(int i, @NonNull MediaFormat mediaFormat) { \/* Do nothing. *\/ }
*
* \@Override
- * public void onFormat(int i, @NonNull MediaFormat mediaFormat) {
+ * public void onTrackData(int i, @NonNull TrackData trackData) {
+ * MediaFormat mediaFormat = trackData.mediaFormat;
* if (videoTrackIndex == -1 && mediaFormat
* .getString(MediaFormat.KEY_MIME, \/* defaultValue= *\/ "").startsWith("video/")) {
* videoTrackIndex = i;
@@ -200,6 +201,24 @@ public final class MediaParser {
}
}
+ /** Holds information associated with a track. */
+ public static final class TrackData {
+
+ /** Holds {@link MediaFormat} information for the track. */
+ @NonNull public final MediaFormat mediaFormat;
+
+ /**
+ * Holds {@link DrmInitData} necessary to acquire keys associated with the track, or null if
+ * the track has no encryption data.
+ */
+ @Nullable public final DrmInitData drmInitData;
+
+ private TrackData(MediaFormat mediaFormat, DrmInitData drmInitData) {
+ this.mediaFormat = mediaFormat;
+ this.drmInitData = drmInitData;
+ }
+ }
+
/** Defines a seek point in a media stream. */
public static final class SeekPoint {
@@ -308,12 +327,12 @@ public final class MediaParser {
void onTracksFound(int numberOfTracks);
/**
- * Called when the {@link MediaFormat} of the track is extracted from the stream.
+ * Called when new {@link TrackData} is extracted from the stream.
*
- * @param trackIndex The index of the track for which the {@link MediaFormat} was found.
- * @param format The extracted {@link MediaFormat}.
+ * @param trackIndex The index of the track for which the {@link TrackData} was extracted.
+ * @param trackData The extracted {@link TrackData}.
*/
- void onFormat(int trackIndex, @NonNull MediaFormat format);
+ void onTrackData(int trackIndex, @NonNull TrackData trackData);
/**
* Called to write sample data to the output.
@@ -674,7 +693,10 @@ public final class MediaParser {
@Override
public void format(Format format) {
- mOutputConsumer.onFormat(mTrackIndex, toMediaFormat(format));
+ mOutputConsumer.onTrackData(
+ mTrackIndex,
+ new TrackData(
+ toMediaFormat(format), toFrameworkDrmInitData(format.drmInitData)));
}
@Override
@@ -846,6 +868,12 @@ public final class MediaParser {
return 0;
}
+ private static DrmInitData toFrameworkDrmInitData(
+ com.google.android.exoplayer2.drm.DrmInitData drmInitData) {
+ // TODO: Implement.
+ return null;
+ }
+
private static MediaCodec.CryptoInfo toCryptoInfo(TrackOutput.CryptoData encryptionData) {
// TODO: Implement.
return null;