diff options
author | 2019-12-12 14:53:54 +0000 | |
---|---|---|
committer | 2019-12-12 15:51:33 +0000 | |
commit | acc2d2bbf1f77e35d92492d4dfb49688b4dad409 (patch) | |
tree | c5a58301847206ca32bd3ea7f7b940c800bcf531 | |
parent | c70aa04d8371942a721f73fe0b08e379688704c8 (diff) |
Add MediaParser.TrackData object
Which allows exposing new DrmInitData.
Bug: 132153067
Bug: 134057371
Test: Pending.
Change-Id: I106126f931c27de31af59bf2c32b575f8612b3fc
-rw-r--r-- | api/current.txt | 7 | ||||
-rw-r--r-- | media/apex/java/android/media/MediaParser.java | 40 |
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; |