Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit acc2d2bb authored by Santiago Seifert's avatar Santiago Seifert
Browse files

Add MediaParser.TrackData object

Which allows exposing new DrmInitData.

Bug: 132153067
Bug: 134057371
Test: Pending.
Change-Id: I106126f931c27de31af59bf2c32b575f8612b3fc
parent c70aa04d
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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 {
  }
+34 −6
Original line number Diff line number Diff line
@@ -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;